计算机网络(十)-数据链路层-差错控制
一.差錯控制
1.1 差錯: 噪聲引起
- 全局性:由于線路本身電氣特性所產生的隨機噪聲(熱噪聲),是信道固有的,隨機存在。解決辦法:提高信噪比來減小或避免干擾。
- 局部性:外界特定的短暫原因所造成的的沖擊噪聲,是產生的差錯的主要原因。解決辦法:通常利用編碼技術來解決。
1.2 差錯控制(比特錯)
- 檢錯編碼:奇偶校驗碼、循環(huán)冗余碼CRC
在數據發(fā)送之前,先按照某種關系附加上一定的冗余位,構成一個符合某一規(guī)則的碼字后再發(fā)送。當要發(fā)送的有效數據發(fā)送變化時,響應的冗余位也隨之變化,使碼字遵從不變的規(guī)則。接收端根據接收到的碼字是否符合原規(guī)則,從而判斷是否出錯。 - 糾錯碼:海明碼
數據鏈路層的編碼與物理層的編碼不同。物理層編碼主要針對單個比特,解決傳輸過程中的同步問題。而數據鏈路層的編碼針對一組比特,它通過冗余碼技術來實現二進制比特串在傳輸過程是否出現了差錯。
二.檢錯編碼
2.1 奇偶檢驗:n-1位信息員,一位檢驗元。
- 奇校驗碼:1的個數為奇數。
- 偶校驗:1的個數為偶數。
- 奇偶校驗碼特點:只能檢查出奇數個比特錯誤,檢錯能力為50%。
2.2 CRC循環(huán)冗余碼
1.發(fā)送端:
- 需要傳送的原二進制數據yn-1…y1y0
- 生成多項式(二進制)xm-1…x1x0
- 最終要發(fā)送的數據:原二進制數據+幀檢驗序列FCS/冗余碼(在末尾添加)
- FCS幀檢驗序列/冗余碼的計算:
-生成多項式的階:m-1,在原二進制末尾加m-1個0;
-模2除法:用加0數據除以生成多項式,余數為冗余碼/FCS,除法采用異或(同1異0)。
2.接收端
- 將收到的數據除以同樣的除數(同1異0),得出余數R。
- R為0,幀沒出錯;R不為0,出錯,丟棄。
3.在數鏈路層僅僅使用循環(huán)冗余檢驗CRC差錯檢測技術,只能做到對幀的無差錯接收,但還達不到可靠傳輸。
2.3 海明碼(漢明碼)
-
可以發(fā)現雙比特錯,糾正單比特錯。
-
海明不等式:2r>=k+r+1,r為冗余信息位,K為信息位數。
-
根據數據的位數k,結合不等書,計算出滿足不等式最小的r。
-
海明碼位數=k+r
如上圖k=6,r=4,需要四位二進制來編碼。
-
求校驗碼的值
-p1對應的二進制0001,則p1可以校驗后面二進制與P1對應二進制相同位置為1的數據。即D1,D2、D4、D5。其他p檢驗的數據同方法可以確認。 -
確定實際值
-令所有要校驗的位異或為0,即P1、D1,D2、D4、D5異或為0,則可以計算出P1。同理,計算出P2、P3、P4。
-
檢錯
-令所有要校驗的位異或(同1異0)。
P1、D1,D2、D4、D5異或,為B1
P2、D1,D3、D4、D6異或,為B2
P3、D2,D3、D4異或,為B3
P4、D5,D6異或,為B4
將結果倒序排列為一個二進制,則發(fā)生錯誤的位置為二進制B4B3B2B1對應值。
總結
以上是生活随笔為你收集整理的计算机网络(十)-数据链路层-差错控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客16500 珠心算测试
- 下一篇: 流数据模型