计算机网络-差错控制(王道+CRC扩展)

差错控制

在这里插入图片描述

奇偶校验码

奇校验码:整个校验码(有效信息位和校验位)中‘1’的个数为奇数。

偶校验码:整个校验码(有效信息位和校验位)中‘1’的个数为偶数。

在这里插入图片描述

偶校验的硬件实现:各信息进行异或(模2加)运算,得到的结果即为偶校验位

能发现奇数位错误,但无法确定是哪一位出现错误

无法检测出偶数位错误
在这里插入图片描述

循环冗余校验码(CRC码)Cyclic Redundancy Check

循环冗余校验码的基本思想:数据发送、接收方约定一个“除数”

在这里插入图片描述

K个信息位+R个校验位作为“被除数”,添加校验位后需保证除法的余数为0

收到数据后,进行除法检查余数是否为0,若余数非0说明出错,则进行重传或纠错

1.确定K、R以及生成多项式对应的二进制码

K=信息码的长度

R=生成多项式最高次幂

校验码位数N=K+R

由生成多项式确定“除数”。若生成多项式中x的最高次为R,则“除数”有R+1位

2.移位

信息码左移R位,低位补0

3.相除

对移位后的信息码,用生成多项式进行模2除法,产生余数

4.检错和纠错

理论上可以证明寻欢冗余校验码的检错能力有以下特点:

  • 可检测出所有奇数个错误
  • 可检测出所有双比特的错误
  • 可检测出所有小于等于校验位长度的连续错误

K个信息位,R个校验位,若生成多项式选择得当,且
2 R ≥ K + R + 1 2^R≥K+R+1 2RK+R+1
在这里插入图片描述
在这里插入图片描述

纠错编码(海明校验码)

海明码设计思路:将信息位分组进行偶校验->多个校验位
信息位: n 校验位: k 信息位 + 校验位: n + k 位 2 k 种状态 2 k ≥ n + k + 1 信息位:n \\ 校验位:k \\ 信息位+校验位:n+k位 \\ 2^k种状态 \\ 2^k≥n+k+1 信息位:n校验位:k信息位+校验位:n+k2k种状态2kn+k+1
解释:n+K位中任何一位都可能出错,1种正确状态

信息位:1010

过程:

  • 确定校验位数量

确定海明码的位数
2 k ≥ n + k + 1 设信息位 D 4 D 3 D 2 D 1 ( 1010 ) , 共 4 位,校验位 P 3 P 2 P 1 , 共 3 位,对应的海明码为 H 7 H 6 H 5 H 4 H 3 H 2 H 1 2^k≥n+k+1 \\ 设信息位D_4D_3D_2D_1(1010),共4位,校验位P_3P_2P_1,共3位,对应的海明码为H_7H_6H_5H_4H_3H_2H_1 2kn+k+1设信息位D4D3D2D1(1010),4位,校验位P3P2P1,3位,对应的海明码为H7H6H5H4H3H2H1

  • 确定校验位的分布

校验位 P i 放在海明位号为 2 i − 1 位置上 信息位按顺序放到其余位置 校验位P_i放在海明位号为2^{i-1}位置上 \\ 信息位按顺序放到其余位置 校验位Pi放在海明位号为2i1位置上信息位按顺序放到其余位置
在这里插入图片描述

  • 求校验位的值

H 3 : 3 − > 011 H 5 : 5 − > 101 H 6 : 6 − > 110 H 7 : 7 − > 111 三个分组,分别进行偶校验 P 1 = H 3 ⨁ H 5 ⨁ H 7 = D 1 ⨁ D 2 ⨁ D 4 = 0 ⨁ 1 ⨁ 1 = 0 P 2 = H 3 ⨁ H 6 ⨁ H 7 = D 1 ⨁ D 3 ⨁ D 4 = 0 ⨁ 0 ⨁ 1 = 1 P 3 = H 5 ⨁ H 6 ⨁ H 7 = D 2 ⨁ D 3 ⨁ D 4 = 1 ⨁ 0 ⨁ 1 = 0 H_3:3->011 \\ H_5:5->101 \\ H_6:6->110 \\ H_7:7->111 \\ 三个分组,分别进行偶校验 \\ P_1=H_3\bigoplus H_5\bigoplus H_7=D_1\bigoplus D_2\bigoplus D_4=0\bigoplus 1\bigoplus1=0 \\ P_2=H_3\bigoplus H_6\bigoplus H_7=D_1\bigoplus D_3\bigoplus D_4=0\bigoplus 0\bigoplus1=1 \\ P_3=H_5\bigoplus H_6\bigoplus H_7=D_2\bigoplus D_3\bigoplus D_4=1\bigoplus 0\bigoplus1=0 H3:3>011H5:5>101H6:6>110H7:7>111三个分组,分别进行偶校验P1=H3H5H7=D1D2D4=011=0P2=H3H6H7=D1D3D4=001=1P3=H5H6H7=D2D3D4=101=0

  • 检错纠错

S 1 = P 1 ⨁ D 1 ⨁ D 2 ⨁ D 4 S 2 = P 2 ⨁ D 1 ⨁ D 3 ⨁ D 4 S 3 = P 3 ⨁ D 2 ⨁ D 3 ⨁ D 4 S_1=P_1\bigoplus D_1\bigoplus D_2\bigoplus D_4 \\ S_2=P_2\bigoplus D_1\bigoplus D_3\bigoplus D_4 \\ S_3=P_3\bigoplus D_2\bigoplus D_3\bigoplus D_4 S1=P1D1D2D4S2=P2D1D3D4S3=P3D2D3D4

补充:

如果 P 1 和 P 2 同时发生错误,那么究竟是 D 1 发生的还是 P 1 和 P 2 如果P_1和P_2同时发生错误,那么究竟是D_1发生的还是P_1和P_2 如果P1P2同时发生错误,那么究竟是D1发生的还是P1P2
无法区分到底是1位错还是2位错

需加上“全校验位”,对整体进行偶校验

补充

在这里插入图片描述
在这里插入图片描述

  • 29
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值