【計算機網絡】第四章:數據鏈路層(Part1.數據鏈路層的三個基本問題&點到點信道的數據鏈路)

CN.StudyLog.Ch4.Datalink Layer.數據鏈路層(Part1.數據鏈路層的三個基本問題&點到點信道的數據鏈路)

數據鏈路層的主要內容:數據在通過不同的數據鏈路時,使用的協議和通訊機制。
數據鏈路:接集線器的網,路由器與路由器相連的鏈路,等。
不同的數據鏈路通訊的機制也不一樣。數據包在經過不同的數據鏈路時,會用不同的數據幀格式封裝在信道中傳遞。
這一章的主要內容是PPP協議和CSMA/CD協議的幀封裝和數據鏈路。分三大部分(數據鏈路層的基本問題,點到點信道的數據鏈路,廣播信道的數據鏈路)

數據鏈路層的基本問題

首先明確數據鏈路和鏈路的定義。
在這裏插入圖片描述
鏈路:物理線路。中間沒有其他的交換節點。注意集線器和交換機不同,集線器的功能就是網線,所以在鏈路這一定義上,集線器是可以忽略的。
數據鏈路:某一鏈路+協議。(CSMA/CD PPP 幀中繼)等協議

封裝成幀

在這裏插入圖片描述
幀:幀是數據包封裝後在數據鏈路中傳輸的數據包的載體。數據包是有效數據,但是必須加工成數據幀後才能在特定的數據鏈路裏傳輸。不同的數據鏈路要求的幀格式不同。
在這裏插入圖片描述
上圖表示的過程是一次數據鏈路和的幀封裝和解封過程。看下圖
在這裏插入圖片描述
假設數據包從VMnet1發送到VMnet8。其中VMnet1到R1,R1到R2,R2到VMnet8,這三條鏈路每條鏈路都有一個這樣的過程(合計封裝-解封三次),而不是從始至終只有一個這樣的封裝解封過程。
在這裏插入圖片描述
IP數據報是網絡層發下來的,這一部分作爲幀的數據部分,然後加幀首尾。首部會增加數據鏈路層的字段,如果是以太網的話需要加目標MAC地址和源MAC地址。尾部會增加校驗序列FCS。開始和結束符可以讓接收端確認接收時明確這是一個數據幀,才能判斷是否有錯和源源不斷傳過來的數據中哪些是一個整體。

接收端收到幀後,會判斷是否有錯誤。比如是否因電磁干擾導致通訊過程中某些數字信號沒有正確讀取,比如0變1或1變0等。接收端的數據鏈路層要求能夠判斷出數據鏈路中傳輸時發生的錯誤,這時就利用FCS的值來判斷傳輸過程中是否有錯。

MTU:最大傳輸單元:不同的數據鏈路裏MTU不同,以太網是最大1500字節(byte)。

Ps)MTU可以人工改小,改小後可能出現的問題:以太網傳輸過來一個1500字節的數據包,然後MTU設定爲1000,則此時會把這個數據包分成兩片。

透明傳輸

在這裏插入圖片描述
首尾兩標識符應該是數據部分出現頻率儘可能低的字符,因爲字符本質就是一byte,八位二進制數。如果數據部分出現了這種標識符,會導致接收端截斷數據部分或丟掉部分數據而發生錯誤。
在這裏插入圖片描述
ASCII表,右邊是鍵盤可以直接輸入的字符,而左邊部分是不能直接輸入的字符,其中就定義了SOH和EOT兩個標識符。這種標識符在輸入數據的傳輸過程中一定不會出現異常,因爲這些標識符無法從外設輸入。但是如果傳輸的是圖片或者其他程序,則有可能會出現這些標識符。
在這裏插入圖片描述
解決方法:利用轉義字符ESC
在這裏插入圖片描述
在鏈路上傳播時,首尾標識符和與ESC相同的構成的數據段之前加上ESC標識符。然後接收端在接收數據時會早一步接收ESC字符,明確接下來要接受的是首尾標識符或者是與ESC相同構成的有效數據,則不會截斷數據。在接收到一個沒有ESC的結束符後會確定這是一個完整的幀。接收後會重讀有效數據,會以一種見到ESC去掉並保留下一字符數據的規則去掉ESC。這樣就能保證標識符和與ESC相同的數據不會被刪除。
(如果是兩端ESC連續的有效數據,則接收後應該會有4個連續ESC存在,去1留1最後仍然是2個連續的ESC作爲有效數據)

插入轉義字符是數據鏈路層完成的。轉義字符的插入會導致數據部分數據量變大,但是這個數據量並不受限於MTU的最大容量。加上轉義字符後的數據部分其容量可以大於MTU。

差錯檢驗

在這裏插入圖片描述
FCS負責校驗錯誤,如果檢查出錯誤則會丟掉,不負責重傳。檢驗的是有效數據部分+數據鏈路層首部的部分,不檢驗標識符。
在這裏插入圖片描述
CRC計算的注意事項:
1.對與發送端,想要得到的FCS是幾位,那麼就在剛纔說的需要檢驗的數據後面加幾個0,三位就是加三個,四位加四個。對於接收端,數據後加得到的FCS並處以除數即可。
2.除數任選,只要保證位數是FCS位數+1即可
3.除數對於發送端和接收端要一致。
計算方法:只要位數足夠就商1,商1後結果做異或運算
4.對於接收端,如果運算結果餘數爲0,則說明傳輸無誤,如果有餘數,則說明有錯誤直接丟掉,該數據包丟包。

Ps)還有其他的算法, 但是不管怎麼算的,這裏重點是明確FCS的作用。

點到點信道的數據鏈路

在這裏插入圖片描述
常見點到點信道:
1.路由器廣域網接口只有一個發送端和接收端
2.ADSL撥號上網,調制解調器到ISP的信道
在點到點的鏈路上使用PPP協議。點到點鏈路上不需要知道源地址和目標地址,因爲只有兩個地址。

PPP協議

1.PPP協議的特點

1)簡單:出現差錯後直接扔掉,不提供可靠傳輸(CRC檢查出錯丟掉,無錯誤交給網絡層)
2)封裝成幀:首尾標識符
3)透明傳輸:轉義字符ESC
4)差錯檢測:CRC計算FCS
5)支持多種網絡層協議:IPv4&6協議都可以封裝到PPP幀中
6)支持多種類型的鏈路:光纖、銅線 、同步傳輸,異步傳輸,串行或並行鏈路
7)檢測連接狀態:平時不小心碰到電話線導致ADSL撥號上網失效,然後不小心又接上了,這時候不需要專門的去做什麼,網絡會自動連接好
8)最大傳輸單元MTU:不特殊指定的情況下PPP和CSMA/CD都是最大1500字節
9)網絡層地址協商:ISP會給電腦分配一個IP、DNS。子網掩碼、網關
10)數據壓縮協商: 傳數據之前判斷是否需要壓縮後再傳

2.組成部分
在這裏插入圖片描述
有三格組成部分。
1.最底層||高級數據鏈路控制協議HDLC:網絡層傳下來的數據把它封裝成能夠在串行鏈路上發送的格式。

廣域網一般是串行通信,並行通信多用於近距離通信。
並行:一臺設備上連接很多根線纜,每根線纜單位時間內傳輸1bit的話,那麼八根線纜單位時間內就可以傳輸一byte。可以將數據分散並傳播,提高效率。成本大。
串行:一根線纜上傳遞數據,效率低於並行。

2.中層|鏈路控制協議LCP:點到點通信建立連接,確認之間的一些參數。比如驗證賬號密碼是否正確,
3.頂層|網絡控制協議NCP:用來標識上層多種協議,可以把他們封裝到PPP協議裏。

透明傳輸

爲了實現透明傳輸,我們需要開始和結束標識符,而如果數據段出現了與首尾標識符相同構造的數據,則需要使用一定的填充方法來規避數據截斷的問題。
填充方法在PPP協議中有兩種,分別是0比特填充和字符填充,應用場景不同選擇也不同。

同步和異步傳輸

在這裏插入圖片描述
時鐘同步的必要性:發送數據幀的過程中必須要求數據鏈路的兩端時鐘同步,時鐘同步代表着能夠明確碼元邊界,才能完整的收發數據幀。否則,如果兩端時鐘不一致,識別時可能會把不完整的數據納入或者丟失導致錯誤。適合長距離通信,但是少拉一根線就節省不少成本。
短距離高速傳輸中,可以用一條專門的線路來傳輸時鐘信號,一條用來收發數據。

在這裏插入圖片描述
異步傳輸:以字符爲單位傳輸數據,發完一個字符就有一段空閒位。全部收完後,接收端再組裝成一個完整的幀。

PPP幀填充方式

對於異步傳輸,使用字節填充。因爲異步填充以字節爲單位傳輸;而不同傳輸是把一個幀作爲單位傳出去,PPP協議就使用零比特填充
在這裏插入圖片描述
使用轉義字符來完成透明傳輸,轉義字符被定義爲7D。

RFC1662規定了如下填充方法:
(1)把信息字段中出現的每一個0x7E字節轉變爲2字節序列(0x7D,0x5E)。
(2)若信息字段中出現一個0x7D的字節(即出現了和轉義字符一樣的比特組合),則把轉義字符0x7D轉變爲2字節序列(0x7D,0x5D)。
(3)若信息字段中出現ASCII碼的控制字符(即數值小於0x20的字符),則在該字符前面要加入一個0x7D字節,同時將該字符的編碼加以改變。例如,出現0x03(在控制字符中是“傳輸結束”ETX)就要把它轉變爲2字節序列的(0x7D,0x31)。

在這裏插入圖片描述
零比特填充的方法:

通俗點來講,就是標識符是0x7E,還原成二進制就是0111 1110,我們可以看到這一序列中間有6個連續的1,零比特填充就是基於這種方式。發送端在發送數據時,掃描除去標識符以外的數據段,然後每五個1就插入一個0,保證信息段不會穿結束/開始標識符。這樣做如果數據段有6個1會變成1111 101 而如果原本數據段就是1111 101則會變成 1111 1001,接收端接收時會在五位1之後剔除一個0,而標識符的六個連續1之間沒有0自然也不會被剔除0,這樣就保證了 透明傳輸。


實驗

【計算機網絡原理·實驗·第四章】PPP協議配置路由廣域網接口&抓包理解PPP協議的幀格式)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章