資料鏈路層(一、二)——差錯控制
一、前言
資料鏈路層負責通過一條鏈路從一個結點向另一個物理鏈路直接相連的相鄰結點傳送資料報。
資料鏈路層在物理層提供服務的基礎上向網路層提供服務,其最基本的服務是將源自網路層來的資料可靠地傳輸到相鄰節點的目標機網路層。其主要作用是加強物理層傳輸原始位元流的功能,將物理層提供的可能出錯的物理連線改造成為邏輯上無差錯的資料鏈路,使之對網路層表現為一條無差錯的鏈路。
結點:主機、路由器
鏈路:網路中兩個結點之間的物理通道,鏈路的傳輸介質主要有雙絞線、光纖和微波。分為有線鏈路、無線鏈路。
資料鏈路:網路中兩個結點之間的邏輯通道,把實現控制資料傳輸協議的硬體和軟體加到鏈路上就構成資料鏈路。
幀:鏈路層的協議資料單元,封裝網路層資料報。
功能一:為網路層提供服務。無確認無連線服務,有確認無連線服務,有確認面向連線服務。
功能二:鏈路管理,即連線的建立、維持、釋放(用於面向連線的服務)。
功能三:組幀。
功能四:流量控制。限制傳送方哦~
功能五:差錯控制(幀錯/位錯)。
二、組幀
封裝成幀就是在一段資料的前後部分新增首部和尾部,這樣就構成了一個幀。接收端在收到物理層上交的位元流後,就能根據首部和尾部的標記,從收到的位元流中識別幀的開始和結束。
組幀的四種方法:1.字元計數法,2.字元(節)填充法,3.零位元填充法,4.違規編碼法。
1.字元計數法
痛點:雞蛋放在一個籃子裡
2.字元填充法
3.零位元填充法
4.違規編碼法
可以用“高-高”,“低-低”來定界幀的起始和終止。
由於位元組計數法中Count欄位的脆弱性(其值若有差錯將導致災難性後果)及字元填充實現上的複雜性和不相容性,目前較普遍使用的幀同步法是位元填充和違規編碼法。
二、差錯控制
——檢錯編碼
Q:差錯從何而來?
概括來說,傳輸中的差錯都是由於噪聲引起的。
全域性性
1.由於線路本身電氣特性所產生的隨機噪聲(熱噪聲),是通道固有的,隨機存在的。
解決辦法:提高信噪比來減少或避免干擾。(對感測器下手)
區域性性:
2.外界特定的短暫原因所造成的衝擊噪聲,是產生差錯的主要原因。
解決辦法:通常利用編碼技術來解決。
資料鏈路層的差錯控制
編碼VS編碼
資料鏈路層編碼和物理層的資料編碼與調製不同。物理層編碼針對的是單個位元,解決傳輸過程中位元的同步等問題,如曼徹斯特編碼。而資料鏈路層的編碼針對的是一組位元,它通過冗餘碼的技術實現一組二進位制位元串在傳輸過程是否出現了差錯。
檢錯編碼——奇偶校驗碼
奇偶校驗碼特點:
只能檢查出奇數個位元錯誤,檢錯能力為50%。
檢錯編碼——CRC迴圈冗餘碼
接收端檢錯過程
把收到的每一個幀都除以同樣的除數,然後檢查得到的餘數R。
1.餘數為0,判定這個幀沒有差錯,接受。
2.餘數為不為0,判定這個幀有差錯(無法確定到位),丟棄。
FCS的生成以及接收端CRC檢驗都是由硬體實現,處理很迅速,因此不會延誤資料的傳輸。
在資料鏈路層僅僅使用迴圈冗餘檢驗CRC差錯檢測技術,只能做到對幀的無差錯接收
“可靠傳輸”:資料鏈路層傳送端傳送什麼,接收端就收到什麼。
鏈路層使用CRC檢驗,能夠實現無位元差錯的傳輸,但這還不是可靠傳輸。
海明碼
海明碼:發現雙位元錯,糾正單位元錯。