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