1. 程式人生 > 實用技巧 >資料鏈路層的三個基本問題

資料鏈路層的三個基本問題

1、封裝成幀

  • 概念

    在資料的頭部和尾部加上標記,確定幀的範圍

  • 圖示

​ MTU:1500個位元組

  • 問題

    1、如果使用者只接收到半截幀,會拋棄嗎?    
    	會, 因為是根據幀首部和尾部判斷幀的起始和結束,如果只有一個標記,那麼就會拋棄
    

2、透明傳輸

  • 概念

    在傳輸過程中,如果資料內部包含幀頭或幀尾資料,會將這些轉義。而這個過程對於外部是透明的,也就是說外部不知道內部做了這些操作

  • 字元填充法

    當傳輸的資料內部包含SOH或EOT時,在前面新增ESC轉義。 當傳輸到接收端時,再將這些字元去掉

3、 差錯控制

  • 概念

    傳輸過程中可能會產生 位元差錯。 1可能變為0,0可能變為1。 為了保證資料傳輸的可靠性,需要採用各種差錯檢測措施

誤位元速率: 在一段時間內,傳輸錯誤的位元佔所傳輸位元總數的比率。與信噪比有關
  • CRC 迴圈冗餘檢測

    CRC迴圈冗餘檢測是否產生差錯

 大致步驟: 將所要傳輸的資料分組,每組在資料後面攜帶冗餘碼(計算方法見下面)。當接收端收到資料後,除以商量好的編碼,如果結果為0,說明沒有差錯(可能存在問題)
  • CRC計算冗餘碼的過程

    1、資料A 後面跟任意長度的位元B,如下為000。組成資料+000 (即A+B)
    2、除數比B多一位,如下為1101(這裡稱為C)
    3、除以除數得到冗餘碼 D
    4、傳輸時,傳輸FCS(幀檢驗序列)(就是 資料+冗餘碼)(A+D)==》 FCS可以通過CRC計算得出
    5、接收端收到後, 用 A+D 除以 除數C。如果結果為0,那麼說明中間沒有差錯。否則有錯誤就扔掉

  • CRC小結

    CRC是無位元差錯,而不是無傳輸差錯的檢測機制

    無位元差錯:凡是接收端資料鏈路層接受的幀都是沒有差錯的,有差錯就被丟棄了

    無傳輸差錯: 指在傳輸過程中沒有差錯,需要加入確認和重傳機制


如果本篇部落格有任何錯誤和建議,歡迎大佬們批評指正

我是知逆,我們下期見

Peace