3.2 封裝成幀
封裝成幀是指資料鏈路成把上層丟下來的加幀頭和幀尾。
幀頭和幀尾含有重要的資訊。作用之一就是幀定界
實際上,幀頭和幀尾帶有醒目的標誌,各佔一個位元組。我們看下面點對點的傳輸
需要說明的是,並不是每一種幀都包含標誌。
比如乙太網V2的MAC幀格式
那麼接收方在這種網路下又是如何提取出幀的呢?
實際上我們在概述的時候講過,物理層看網路是什麼,如果是乙太網,就加上8位元組的前導碼。前導碼中的前7個位元組為前同步碼,作用是使接收方的時鐘同步。之後的一位元組為幀開始定界符。表明其後面緊跟著的就是MAC幀。
另外啊:乙太網還規定了幀間間隔時間為96位元的傳送時間。因此MAC幀並不需要幀結束定界符。
透明傳輸是指資料鏈路層對上層交付的資料沒有任何限制,就好像資料鏈路層不存在一樣。
我們的幀標誌是一個數值,如果我們網路層傳到資料鏈路層剛好含有相同的數值,那接收方還能收到正確的幀嗎?
-
不能
那麼資料鏈路層是如何解決這個問題的呢?網路層傳來的時候,他加了幀頭幀尾掃描一遍標誌,如何出現相同的那就加上一個ESC標誌轉義字元(1個位元組,10進位制值為27),告訴我們的接收方跳過掃描這玩意。這是資料不是定界符。
那再來思考這樣一種情況,上層傳下來的即包含轉移字元,又包含和定界符相同的數字。這個又該怎麼處理呢?
-
也是相同的處理方法,還是加轉義字元。
上面我們將的都是面向位元組的物理鏈路使用位元組填充(或稱字元填充)的方法實現透明傳輸。
面向位元的物理鏈路使用位元填充的方法實現透明傳輸。
為了簡單起見,在幀首部和尾部中,僅給出了幀定界標誌。而未給出其他控制欄位。
現在幀的資料部分出現兩個和標誌一樣的,那我們該怎麼處理呢?
在傳送前可以採用0位元填充法對資料部分進行掃描,每5個連續的位元1後面就插入一個位元0。這樣就確保了幀定界的唯一性。
最後還要提醒大家。為了提高幀的傳輸效率,應當使幀的資料部分的長度儘可能大些。
但是考慮到差錯控制等因素,資料鏈路層的協議也規定了幀的資料部分的長度上限。最大傳送單元MTU