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