一、封裝成幀
封裝成幀就是在一段數(shù)據(jù)的前后分別添加首部和尾部,這樣就構(gòu)成了一個幀。接收端在收到物理層上交的比特流后,就能根據(jù)首部和尾部的標(biāo)記,從比特流中識別幀的開始和結(jié)束。
首部和尾部的一個重要作用就是進行幀定界(即確定幀的界限)。此外,首部和尾部還包括許多必要的控制信息。 為了提高幀的傳輸效率,應(yīng)當(dāng)使幀的數(shù)據(jù)部分長度盡量大于首部和尾部的長度。最大傳輸單元MTU:幀數(shù)據(jù)部分長度上限。
當(dāng)數(shù)據(jù)是由可打印的ASCII碼組成的文本文件時,幀定界可以使用特殊的幀定界符。ASCII碼是7位編碼,一共可以組合成128個不同的ASCII碼,其中可打印的有95個,而不可打印的控制字符有33個。(可打印的字符就是可以在鍵盤上輸入的字符,我們使用的標(biāo)準(zhǔn)鍵盤有47個鍵可輸入94個字符,包括使用shift鍵,加上空格鍵,一共可以輸入95個可打印字符)
控制字符SOH放在一幀的最前面,表示幀的首部開始。另一個控制字符EOT表示幀的結(jié)束。注意:SOH和EOT都只是控制字符的名稱,他們的十六進制編碼分別是01(二進制是00000001)和04(二進制是00000100)。SOH,EOT 并不是S O H E O T這幾個字符,只是名字而已。當(dāng)傳輸中出現(xiàn)差錯,幀定界符的作用更加明顯。假設(shè)未發(fā)送完一個幀而發(fā)生故障,接收端就知道收到的數(shù)據(jù)是不完整的幀(只有首部),必須丟棄。
二、透明傳輸
當(dāng)傳送的幀是用文本文件組成的幀時(文本文件中的字都是從鍵盤上輸入的),其數(shù)據(jù)部分顯然不會出現(xiàn)像SOH或EOT這樣的幀定界控制字符。可見不管從鍵盤上輸入什么字符都可以放在這樣的幀中傳輸過去,因此這樣的傳輸就是透明傳輸。
但當(dāng)數(shù)據(jù)部分是非ASCII碼的文本文件時(如二進制代碼的計算機程序或者圖像等),情況就不同了。如果數(shù)據(jù)中的某個字節(jié)的二進制代碼恰好和SOH或EOT這種控制字符一樣,數(shù)據(jù)鏈路層就好錯誤地“找到幀的邊界”,把部分幀收下(誤以為是個完整的幀),而把剩下的那部分?jǐn)?shù)據(jù)丟棄(這部分找不到幀定界控制字符SOH)。這種情況就不是透明傳輸,因為當(dāng)遇到書中碰巧出現(xiàn)字符“EOT”時就傳不過去了,而其后面的數(shù)據(jù)因找不到“SOH”被接收端當(dāng)做無效幀而丟棄。但實際上數(shù)據(jù)中出現(xiàn)的字符“EOT”并非控制字符而僅僅是二進制數(shù)據(jù)00000100 。
為了解決透明傳輸問題,字節(jié)填充法或字符填充:在控制字符SOH、EOT的前面插入一個轉(zhuǎn)義字符ESC(其十六進制編碼是1B,二進制是00011011)。而接收端的數(shù)據(jù)鏈路層在把數(shù)據(jù)送往網(wǎng)絡(luò)層之前刪除這個插入的轉(zhuǎn)義字符。
三、差錯檢測
現(xiàn)實的通信鏈路都不會是理想的。傳輸過程中,1可能變成0, 0 可能變成1 。這就叫比特差錯——誤碼率。 誤碼率和信噪比有很大的關(guān)系。因此,在計算機網(wǎng)絡(luò)傳輸數(shù)據(jù)時,必須采用各種差錯控制技術(shù)。目前在數(shù)據(jù)鏈路層廣泛使用了循環(huán)冗余檢驗(CRC)的檢錯技術(shù)。
在數(shù)據(jù)鏈路層的CRC檢驗都是用硬件完成的,處理很迅速,因此不會延誤數(shù)據(jù)的傳輸。為什么數(shù)據(jù)鏈路層要以幀為單位來傳送數(shù)據(jù)呢?因為如果不以幀為單位,就無法加入冗余碼來進行差錯檢驗。傳輸差錯分為兩類:一類就是前面所說的最基本的比特差錯。第二類:收到的幀出現(xiàn)了幀丟失、幀重復(fù)和幀失序。(停止等待協(xié)議,ARQ)。數(shù)據(jù)鏈路層并不需要給網(wǎng)絡(luò)層提供“可靠傳輸”的服務(wù)。過去OSI的觀點是:必須讓數(shù)據(jù)鏈路層向上提供可靠傳輸。因此在CRC的基礎(chǔ)上,增加了幀編號、確認(rèn)和重傳機制。
-
數(shù)據(jù)鏈路層
+關(guān)注
關(guān)注
0文章
58瀏覽量
12016
發(fā)布評論請先 登錄
相關(guān)推薦
評論