计算机网络之数据链路层:3、差错控制(奇偶校验、CRC冗余校验、海明校验)
差錯控制
- 思維導圖:
- 什么是差錯:
- 位錯:
- 位錯之檢錯編碼:奇偶校驗碼
- 位錯之檢錯編碼:循環冗余碼
- 位錯之糾錯編碼:海明校驗碼
思維導圖:
什么是差錯:
產生差錯的原因主要是噪聲;噪聲分為全局性噪聲和局部性噪聲
差錯分為倆類:位錯和幀錯
幀錯分為三種:丟失、重復、失序
位錯:
位錯就是傳輸數時某一位或某幾位二進制位發生錯誤;是從比特的角度來看的
位錯之檢錯編碼:奇偶校驗碼
奇偶校驗碼:就是在數據上添加一位校驗位,以此來判斷數據是否出錯
但是奇偶校驗碼只能有奇數位錯誤時才能檢驗出來,所以檢錯能力只有50%
舉個例子:
1110和1101都采用奇校驗是無法查出錯誤的(出現了偶數位錯誤)(第一位為校驗位),發送了1110,接收了1101,但是奇校驗依舊成立。所以上圖的答案是D。
位錯之檢錯編碼:循環冗余碼
就是用要發送的數據除以(模2除法)生成多項式得到一個幀檢驗序列,發送給接收方的就是數據+幀檢驗序列;接受方再用數據+幀檢驗序列 除以相同的生成多項式,若余數為0,則數據傳輸中未發生差錯,反之,出現差錯。
CRC校驗并不能達到可靠傳輸
我們現在普遍認為:凡是接收端數據鏈路層接收的幀均無差錯,但是這是一種不太準確的描述
準確的來說:我們都能以非常接近1的概率認為這些幀在傳輸過程中無差錯
位錯之糾錯編碼:海明校驗碼
第一步: 確定校驗碼的位數r
根據海明不等式求出r的值
第二步: 確定校驗碼和數據的位置關系
把求出的校驗位放到相應的位置上,這些位置一般都放在2的次冪位置上,即1,2,4,8,16…,當最后一位校驗位超出校驗位+數據位的長度時,直接補到最后一位上即可;
第三步: 求校驗碼的值
每一個校驗位用二進制表示時都有一位為1,那么這個校驗位校驗的就這位為1的所有數據位;例如:p1的二進制表示為0001,那么他就會校驗最后一位為1的數據,即:D1、D2、D4、D5 這幾位。
知道了校驗位可以校驗的位之后令這幾位與P1異或為0,就可以求出P1的值,例如:P1 異或D1異或D2異或D4異或D5 = 0,求P1 即可
然后分別求出P2P3P4
第四步: 檢錯和糾錯
校驗時,再次用校驗位和其可以校驗的位異或最終結果為0則無錯,反之有錯;例如:
上圖中D2 出錯后
P1 異或 D1 異或 D2 異或 D4 異或 D5 = 1
P2 異或 D1 異或 D3 異或 D4 異或 D6 = 0
P3 異或 D2 異或 D3 異或 D4 =1
P4 異或 D5 異或 D6 =0
所以在0101位出錯,即第5位出錯
然后糾正即可,1是錯的改成0就是糾正了
總結
以上是生活随笔為你收集整理的计算机网络之数据链路层:3、差错控制(奇偶校验、CRC冗余校验、海明校验)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统之进程管理:4、线程与多线程
- 下一篇: windows live writer