【計算機網絡】數據鏈路層-組幀


組幀的作用

數據鏈路層將比特組合成幀作為傳輸單位,是為了在出錯時只重發出錯的幀,而不必重發所有數據,為了能使接收方能正確的接收並檢查所接收的幀,發送方必須依據一定的規則把網絡層遞交的分組封裝成幀(即組幀)。組幀主要解決幀定界,幀同步,透明傳輸等問題,通常使用 字符計數法 , 字符填充的首尾定界符法 , 比特填充的首尾標志法 , 違規編碼法 4種方法。

字符計數法

在幀頭部使用一個計數字段來標明幀內字符數,當目的節點接收到字節計數值時就知道后面跟隨的字節數,從而可以確定幀結束的位置(計數字段提供的字節數包含自身所占用的一個字節),這種方法最大的問題,如果計數字段出現了錯誤,即失去了幀邊界划分的依據,接收方就無法判斷所傳輸幀的結束位和下一幀的開始位,收發雙方將失去同步。

字符首尾填充的首尾定界法

字符填充法使用一些特定的字符來定位一幀的開始(DLE STX)與結束(DLE ETX)。為了使信息位中出現的特殊字符被誤判為幀的首尾定界符,可以在特殊定位符前面填充一個轉義字符(DLE)來區分(p.s. 轉義字符是ASCII碼中的控制字符,是一個字符,而非"D","L","E"三個字符的組合),以實現數據的透明傳輸。接收方接收到轉義字符就知道后面跟着的是數據信息而不是控制信息。如圖,幀的數據段中出現DLE字符,發送方在每個DLE字符前再插入一個DLE字符,接收方收到數據后會自己刪除這個插入的DLE字符,結果得到的依舊是原來的數據。

比特填充的首尾標志法

比特填充法允許數據幀包含任意個數的比特,也允許每個字符的編碼包含任意個數的比特。它使用一個特定的比特模式,即01111110來標志一個幀的開始和結束。為了不使信息位中出現比特流01111110被誤判為幀的首尾標志,發送方的數據鏈路層在信息位遇到5個1則會自動在后面插入一個0;而接收方做該過程的逆操作,即每收到5個連續的1時,則自動刪除后面緊跟着的0,以恢復原信息。比特填充容易用硬件實現,性能優於字符填充方法。

違規編碼法

在物理層比特編碼時通常采用違規編碼法,例如曼徹斯特編碼方式,將'1'編碼成“高-低”電平對,將數據比特'0'編碼成“低-高”電平對。而“高-高”電平對和“低-低”電平對在數據比特是違規的(即沒有采用)。可以利用這些違規編碼來定界幀的起始和終止。局域網中IEEE 802就采用了這種方法。
違規編碼法不需要采用任何填充計數,便能實現數據傳輸的透明性,但他只適用於采用冗余編碼的特殊編碼環境。
由於字節計數法中計數字段的脆弱性和字符填充法實現的復雜性與不兼容性,目前較常用的組幀方法是比特填充法和違規編碼法。

參考博客https://juejin.im/post/5ae7f9ce51882567395484f9


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM