1. 程式人生 > >資料鏈路層——點對點通道

資料鏈路層——點對點通道

文章目錄


鏈路:從一個結點到相鄰結點的一段物理線路(有線或無線),而中間沒有任何其它的交換結點。
資料鏈路:把實現通訊協議的軟體和硬體加到鏈路上,就構成了資料鏈路。線上路上傳輸資料時,除了必須有一條物理線路時,還必須有一些必要的通訊協議來控制這些控制的傳輸。

幀是點對點通道的資料鏈路層的協議資料單元。
資料鏈路層把網路層交下來的資料構成幀傳送到鏈路上,以及把接收到的幀中的資料取出並交給網路層。

點對點通道的資料鏈路層進行通訊的主要步驟

  • 結點A 的資料鏈路層把網路層交下來的 IP 資料報新增首部和尾部封裝成幀
  • 結點 A 把封裝好的幀傳送給結點 B 的資料鏈路層
  • 若結點B 的資料鏈路層收到的幀無差錯,則從收到的幀中提取出IP資料報交給上面的網路層,否則丟棄這個幀
    在這裡插入圖片描述

封裝成幀

在一段資料(這個資料是從網路層下來的資料報)的前後分別新增首部和尾部,這樣就構成了一個幀。接收端在收到物理層上交的位元流後,就能根據首部和尾部的標記,從收到的位元流中識別幀的開始和結束。
幀的首部和尾部的一個重要的作用就是進行幀定界。
幀的首部和尾部還包含了許多必要的控制資訊。
最大傳送單元MTU
每一種鏈路層協議都規定了所能傳送的幀的資料部分長度上限。

在這裡插入圖片描述

當資料是由可列印的ASCII 碼組成的文字檔案時,幀定界可以使用特殊的幀定界符。
ASCII 碼是7位編碼,一共可組成128個不同的ASCII 碼,其中可列印的有95個。
控制字元
SOH:放在一幀的最前面表示幀的首部開始,十六進位制為01(00000001)
EOT:表示幀的結束,十六進位制為04(00000100)
SOH(EOT)並不是S、O、H(E、O、T)三個字元
傳送方
假設傳送端在傳送一個幀時突然出了故障,中斷了傳送,但隨後又恢復了正常,於是又重新從頭開始傳送剛才未傳送完的幀。
接收方
由於使用了幀界定符,接收端就知到前面收到的資料是個不完整的幀,必須丟棄,而後面收到的資料有明確的幀界定符,因此是一個完整的幀,應當收下。

透明傳輸

由於幀的開始和結束的標記使用專指明的控制字元,因此,所傳輸的資料中的任何的8位元的組合一定不允許和用作幀定界的控制字元的位元網編碼一樣,否則,就會出現幀定界錯誤。
在這裡插入圖片描述
透明傳輸
當傳送的幀使用文字檔案組成的幀時(文字檔案中的字元都是從鍵盤上輸入的),其資料部分顯然不會出現像SOH或EOT這樣的幀定界控制符,可見不管從鍵盤輸入什麼字元都可以放在這樣的幀中傳輸過去,這樣的傳輸就是透明傳輸。
在資料鏈路層的透明傳輸表示“無論什麼樣的位元組合的資料”,都能夠按照原樣沒有差錯地通過這個資料鏈路層

當資料時非ASCII 碼的文字檔案時(如二進位制程式碼的計算機程式或影象),就不是透明傳輸了,就有可能出現幀定界錯誤。

字元填充
傳送端的資料鏈路層在資料中出現控制字元“SOH“或“EOT”的前面插入一個專一字元“ESC”(十六進位制編碼是1B,二進位制00011011),在接收端的資料鏈路層在把資料送往網路層之前刪除這個插入的轉義字元。
如果轉義字元也出現在資料當中,仍然在轉義字元前面插入一個轉義字元。因此,當接收端收到連續的兩個轉義字元時,就刪除其中前面的一個。
在這裡插入圖片描述

差錯檢測

誤位元速率BER
傳輸錯誤的位元佔所傳輸位元總數的比率稱為誤位元速率BER
設法提高信噪比,就可以使誤位元速率減小。
迴圈冗餘校驗CRC
在傳送端,先把資料劃分為組,假設每組K個位元,先假設待傳送的資料M=101001(K=6)。
CRC運算就是在資料M後面新增供差錯檢測用的n位冗餘碼,然後構成一個幀傳送出去,一共傳送K+n位。

n為冗餘碼的計算方法

  • 用二進位制的魔模2運算進行2^n乘M的運算。(相當於在M後面加了n個0)
  • 得到的K+n位的數除以收發雙方事先商定的長度為(n+1)位的除數P,得到的商是Q而餘數是R(n位,比P少一位)
  • 這個R就作為n位冗餘碼,這種為了進行檢錯而新增的冗餘碼常稱為幀檢驗序列FCS

接收端收到的資料以幀為單位進行CRC檢驗
把收到的每一個幀都除以相同的除數P(模2運算),然後檢查得到的餘數R。
無差錯:餘數R 為0,接收
誤碼:餘數R為0 的概率非常小,就丟棄

傳送端幀檢驗序列FCS的生成和接收端的CRC檢驗都是用硬體完成的,處理很迅速,因此並不會延誤資料的傳輸

傳輸差錯

傳輸差錯分為兩大類:一類是前面說的那種稱為位元差錯,另一位差錯比較複雜,收到的幀沒有出現位元差錯,而是出現了幀丟失、幀重複、幀失序

CRC 檢錯僅僅能夠解決位元差錯,因此在CRC檢錯的基礎上增加了幀編號、確認、重傳機制

收到正確的幀就要向傳送端傳送確認,傳送端在一定的期限若沒有收到對方的確認,就認為出現了差錯,就要進行重傳,直到收到對方的確認位置

對於通訊質量良好的有線傳輸鏈路,資料鏈路層協議不使用重傳機制,即不要求資料鏈路層向上提供可靠傳輸的服務。如果在資料鏈路層傳輸資料時出現了差錯並且需要進行改正,那麼改正就由上層協議來完成。
對於通訊質量差的無線傳輸鏈路,資料鏈路層協議使用確認和重傳機制,資料鏈路層向上提供可靠傳輸的服務

可靠傳輸:資料鏈路層的傳送端傳送什麼,在接收端就收到什麼。