欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

计算机网络之数据链路层:3、差错控制(奇偶校验、CRC冗余校验、海明校验)

发布时间:2025/3/15 编程问答 67 豆豆
生活随笔 收集整理的这篇文章主要介绍了 计算机网络之数据链路层: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冗余校验、海明校验)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。