所謂通訊協議是指通訊雙方的一種約定。約定包括對數據格式、同步方式、傳送速度、傳送步驟、檢糾錯方式以及控制字符定義等問題作出統一規定,通訊雙方必須共同遵照。所以,也叫作通訊控制規程,或稱傳輸控制規程,它屬於ISO'S OSI七層參考模型中的數據鏈路層。編程
目前,採用的通訊協議有兩類:異步協議和同步協議。同步協議又有面向字符和麪向比特以及面向字節計數三種。其中,面向字節計數的同步協議主要用於DEC公司的網絡體系結構中。網絡
1、物理接口標準異步
1.串行通訊接口的基本任務測試
(1)實現數據格式化:由於來自CPU的是普通的並行數據,因此,接口電路應具備實現不一樣串行通訊方式下的數據格式化的任務。在異步通訊方式下,接口自動生成起止式的幀數據格式。在面向字符的同步方式下,接口要在待傳送的數據塊前加上同步字符。編碼
(2)進行串-並轉換:串行傳送,數據是一位一位串行傳送的,而計算機處理數據是並行數據。因此當數據由計算機送至數據發送器時,首先把串行數據轉換爲並行數才能送入計算機處理。所以串並轉換是串行接口電路的重要任務。spa
(3)控制數據傳輸速率:串行通訊接口電路應具備對數據傳輸速率——波特率進行選擇和控制的能力。orm
(4)進行錯誤檢測:在發送時接口電路對傳送的字符數據自動生成奇偶校驗位或其餘校驗碼。在接收時,接口電路檢查字符的奇偶校驗或其餘校驗碼,肯定是否發生傳送錯誤。繼承
(5)進行TTL與EIA電平轉換:CPU和終端均採用TTL電平及正邏輯,它們與EIA採用的電平及負邏輯不兼容,需在接口電路中進行轉換。接口
(6)提供EIA-RS-232C接口標準所要求的信號線:遠距離通訊採用MODEM時,須要9根信號線;近距離零MODEM方式,只須要3根信號線。這些信號線由接口電路提供,以便與MODEM或終端進行聯絡與控制。ci
二、串行通訊接口電路的組成
爲了完成上述串行接口的任務,串行通訊接口電路通常由可編程的串行接口芯片、波特率發生器、EIA與TTL電平轉換器以及地址譯碼電路組成。其中,串行接口芯片,隨着大規模繼承電路技術的發展,通用的同步(USRT)和異步(UART)接口芯片種類愈來愈多,以下表所示。它們的基本功能是相似的,都能實現上面提出的串行通訊接口基本任務的大部分工做,且都是可編程的。才用這些芯片做爲串行通訊接口電路的核心芯片,會使電路結構比較簡單。
芯片 |
同步(USRT) |
異步(UART)(起止式) |
傳輸速率b/s |
||
面向字符 |
HDLC |
同步 |
異步 |
||
INS8250 |
|
|
|
56K |
|
MC6850 |
|
|
|
1M |
|
MC6852 |
|
|
1.5M |
|
|
MC6854 |
|
|
|
1.5M |
|
Int8251A |
|
|
64K |
19.2K |
|
Int8273 |
|
|
64K |
|
|
Z-80 SIO |
|
800K |
|
3.有關串行通訊的物理標準
爲使計算機、電話以及其餘通訊設備互相溝通,如今,已經對串行通訊創建了幾個一致的概念和標準,這些概念和標準屬於三個方面:傳輸率,電特性,信號名稱和接口標準。
一、傳輸率:所謂傳輸率就是指每秒傳輸多少位,傳輸率也常叫波特率。國際上規定了一個標準波特率系列,標準波特率也是最經常使用的波特率,標準波特率系列爲1十、300、600、1200、4800、9600和19200。大多數CRT終端都可以按110到9600範圍中的任何一種波特率工做。打印機因爲機械速度比較慢而使傳輸波特率受到限制,因此,通常的串行打印機工做在110波特率,點針式打印機因爲其內部有較大的行緩衝區,因此能夠按高達2400波特的速度接收打印信息。大多數接口的接收波特率和發送波特率能夠分別設置,並且,能夠經過編程來指定。
二、RS-232-C標準:RS-232-C標準對兩個方面做了規定,即信號電平標準和控制信號線的定義。RS-232-C採用負邏輯規定邏輯電平,信號電平與一般的TTL電平也不兼容,RS-232-C將-5V~-15V規定爲「1」,+5V~+15V規定爲「0」。圖1是TTL標準和RS-232-C標準之間的電平轉換。
圖1
2、軟件協議
1.OSI協議和TCP/IP協議
圖2
(1)OSI協議
OSI七層參考模型不是通信標準,它只給出一個不會因爲技術發展而必須修改的穩定模型,使有關標準和協議能在模型定義的範圍內開發和相互配合。
通常的通信協議只符合OSI七層模型的某幾層,如: EIA-RS-232-C:實現了物理層。 IBM的SDLC(同步數據鏈路控制規程):數據鏈路層。ANSI的ADCCP(先進數據通信規程):數據鏈路層IBM的BSC(二進制同步通信協議):數據鏈路層。應用層的電子郵件協議SMTP只負責寄信、POP3只負責收信。
(2)TCP/IP協議
實現了五層協議。
(1)物理層:對應OSI的物理層。
(2)網絡接口層:相似於OSI的數據鏈路層。
(3)Internet層:OSI模型在Internet網使用前提出,未考慮網間鏈接。
(4)傳輸層:對應OSI的傳輸層。
(5)應用層:對應OSI的表示層和應用層。
2.串行通訊協議
串行通訊協議分同步協議和異步協議。
(1)異步通訊協議的實例——起止式異步協議
圖3
特色與格式:
起止式異步協議的特色是一個字符一個字符傳輸,而且傳送一個字符老是以起始位開始,以中止位結束,字符之間沒有固定的時間間隔要求。其格式如圖3所示。每個字符的前面都有一位起始位(低電平,邏輯值0),字符自己有5~7位數據位組成,接着字符後面是一位校驗位(也能夠沒有校驗位),最後是一位,或意味半,或二位中止位,中止位後面是不定長度的空閒位。中止位和空閒位都規定爲高電平(邏輯值),這樣就保證起始位開始處必定有一個下跳沿。
從圖中能夠看出,這種格式是靠起始位和中止位來實現字符的界定或同步的,故稱爲起始式協議。傳送時,數據的低位在前,高位在後,圖4表示了傳送一個字符E的ASCAII碼的波形1010001。當把它的最低有效位寫到右邊時,就是E的ASCII碼1000101=45H。
圖4
起/止位的做用:起始位其實是做爲聯絡信號附加進來的,當它變爲低電平時,告訴收方傳送開始。它的到來,表示下面接着是數據位來了,要準備接收。而中止位標誌一個字符的結束,它的出現,表示一個字符傳送完畢。這樣就爲通訊雙方提供了什麼時候開始收發,什麼時候結束的標誌。傳送開始前,發收雙方把所採用的起止式格式(包括字符的數據位長度,中止位位數,有無校驗位以及是奇校驗仍是偶校驗等)和數據傳輸速率做統一規定。傳送開始後,接收設備不斷地檢測傳輸線,看是否有起始位到來。當收到一系列的「1」(中止位或空閒位)以後,檢測到一個下跳沿,說明起始位出現,起始位經確認後,就開始接收所規定的數據位和奇偶校驗位以及中止位。通過處理將中止位去掉,把數據位拼裝成一個並行字節,而且經校驗後,無奇偶錯纔算正確的接收一個字符。一個字符接收完畢,接收設備有繼續測試傳輸線,監視「0」電平的到來和下一個字符的開始,直到所有數據傳送完畢。
由上述工做過程可看到,異步通訊是按字符傳輸的,每傳輸一個字符,就用起始位來通知收方,以此來從新覈對收發雙方同步。若接收設備和發送設備二者的時鐘頻率略有誤差,這也不會因誤差的累積而致使錯位,加之字符之間的空閒位也爲這種誤差提供一種緩衝,因此異步串行通訊的可靠性高。但因爲要在每一個字符的先後加上起始位和中止位這樣一些附加位,使得傳輸效率變低了,只有約80%。所以,起止協議通常用在數據速率較慢的場合(小於19.2kbit/s)。在高速傳送時,通常要採用同步協議。
(2)面向字符的同步協議
特色與格式:這種協議的典型表明是IBM公司的二進制同步通訊協議(BSC)。它的特色是一次傳送由若干個字符組成的數據塊,而不是隻傳送一個字符,並規定了10個字符做爲這個數據塊的開頭與結束標誌以及整個傳輸過程的控制信息,它們也叫作通訊控制字。因爲被傳送的數據塊是由字符組成,故被稱做面向字符的協議。
特定字符(控制字符)的定義:由上面的格式能夠看出,數據塊的先後都加了幾個特定字符。SYN是同步字符(synchronous Character),每一幀開始處都有SYN,加一個SYN的稱單同步,加兩個SYN的稱雙同步設置同步字符是起聯絡做用,傳送數據時,接收端不斷檢測,一旦出現同步字符,就知道是一幀開始了。接着的SOH是序始字符(Start Of Header),它表示標題的開始。標題中包括院地址、目的地址和路由指示等信息。STX是文始字符(Start Of Text),它標誌着傳送的正文(數據塊)開始。數據塊就是被傳送的正文內容,由多個字符組成。數據塊後面是組終字符ETB(End Of Transmission Block)或文終字符ETX(End Of Text),其中ETB用在正文很長、須要分紅若干個分數據塊、分別在不一樣幀中發送的場合,這時在每一個分數據塊後面用文終字符ETX。一幀的最後是校驗碼,它對從SOH開始到ETX(或ETB)字段進行校驗,校驗方式能夠是縱橫奇偶校驗或CRC。另外,在面向字符協議中還採用了一些其餘通訊控制字,它們的名稱以下表所示:
名 稱 |
ASCII |
EBCDIC |
序始(SOH) |
0000001 |
00000001 |
文始(STX) |
0000010 |
00000010 |
組終(ETB) |
0010111 |
00100110 |
文終(ETX) |
0000011 |
00000011 |
同步(SYN) |
0010110 |
00110010 |
送畢(EOT) |
0000100 |
00110111 |
詢問(ENQ) |
0000101 |
00101101 |
確認(ACK) |
0000110 |
00101110 |
否定(NAK) |
0010101 |
00111101 |
轉義(DLE) |
0010000 |
00010000 |
數據透明的實現:面向字符的同步協議,不象異步起止協議那樣,須要在每一個字符先後附加起始和中止位,所以,傳輸效率提升了。同時,因爲採用了一些傳輸控制字,故加強了通訊控制能力和校驗功能。但也存在一些問題,例如,如何區別數據字符代碼和特定字符代碼的問題,由於在數據塊中徹底有可能出現與特定字符代碼相同的數據字符,這就會發生誤解。好比正文有個與文終字符ETX的代碼相同的數據字符,接收端就不會把它看成爲普通數據處理,而誤認爲是正文結束,於是產生差錯。所以,協議應具備將特定字符做爲普通數據處理的能力,這種能力叫作「數據透明」。爲此,協議中設置了轉移字符DLE(Data Link Escape)。當把一個特定字符當作數據時,在它前面要加一個DLE,這樣接收器收到一個DLE就可預知下一個字符是數據字符,而不會把它看成控制字符來處理了。DLE自己也是特定字符,當它出如今數據塊中時,也要在它前面加上另外一個DLE。這種方法叫字符填充。字符填充實現起來至關麻煩,且依賴於字符的編碼。正是因爲以上的缺點,故又產生了新的面向比特的同步協議。
(3)面向比特的同步協議
特色與格式:面向比特的協議中最具備表明性的是IBM的同步數據鏈路控制規程SDLC(Synchronous Data Link Control),國際標準化組織ISO(International Standard Organization)的高級數據鏈路控制規程HDLC(High Level Data link Control),美國國家標準協會(Americal National Standard Institute)的先進數據通訊規程ADCCP(Advanced Data Communication Control Procedure)。這些協議的特色是所傳輸的一幀數據能夠是任意位,並且它是靠約定的位組合模式,而不是靠特定字符來標誌幀的開始和結束,故稱「面向比特」的協議。這中協議的通常幀格式如圖5所示:
圖5
幀信息的分段:由圖5可見,SDLC/HDLC的一幀信息包括如下幾個場(Filed),全部場都是從有效位開始傳送。
(1)SDLC/HDLC標誌字符:SDLC/HDLC協議規定,全部信息傳輸必須以一個標誌字符開始,且以同一個字符結束。這個標誌字符是 01111110,稱標誌場(F)。從開始標誌到結束標誌之間構成一個完整的信息單位,稱爲一幀(Frame)。全部的信息是以幀的形傳輸的,而標誌字符提供了每一幀的邊界。接收端能夠經過搜索「01111110」來探知幀的開頭和結束,以此創建幀同步。
(2)地址場和控制場:在標誌場以後,能夠有一個地址場A(Address)和一個控制場C(Control)。地址場用來規定與之通訊的次站的地址。控制場可規定若干個命令。SDLC規定A場和C場的寬度爲8位或16位。接收方必須檢查每一個地址字節的第一位,若是爲「0」,則後面跟着另外一個地址字節;若爲「1」,則該字節就是最後一個地址字節。同理,若是控制場第一個字節的第一位爲爲「0」,則還有第二個控制場字節,不然就只有一個字節。
(3)信息場:跟在控制場以後的是信息場I(Information)。I場包含有要傳送的數據,並非每一幀都必須有信息場。即數據場能夠爲0,當它爲0時,則這一幀主要是控制命令。
(4)幀校驗信息:緊跟在信息場以後的是兩字節的爭校驗,幀校驗場稱爲FC(Frame Check)場或稱爲幀校驗序列FCS(Frame check Squence)。SDLC/HDLC均採用16位循環冗餘校驗碼CRC(Cyclic Redundancy Code)。除了標誌場和自動插入的「0」之外,全部的信息都參加CRC計算。
實際應用時的兩個技術問題:
(1)「0」位插入/刪除:如上所述,SDLC/HDLC協議規定以01111110爲標誌字節,但在信息場中也徹底有可能有同一種模式的字符,爲了把它與標誌區分開來,因此採起了「0」位插入和刪除技術。具體做法是發送端在發送全部信息(除標誌字節外)時,只要遇到連續5個「1」,就自動插入一個「0」,當接收端在接收數據時(除標誌字節)若是連續收到5個「1」,就自動將其後的一個「0」刪除是,以恢復信息的原有形式。這種「0」位的插入和刪除過程是由硬件自動完成的。
(2)SDLC/HDLC異常結束:若在發送過程當中出現錯誤,則SDLC/HDLC協議經常使用異常結束(Abort)字符,或稱爲失效序列使本幀做廢。在HDLC規程中,7個連續的「1」被做爲失效字符,而在SDLC中失效字符是8個連續的「1」。固然在試銷序列中不使用「0」位插入/刪除技術。SDLC/HDLC協議規定,在一幀以內不容許出現數據間隔。在兩幀之間,發送器能夠連續輸出標誌字符序列,也能夠輸出連續的高電平,它被稱爲空閒(Idle)信號。