计算机网络——循环冗余校验码

简要介绍

循环冗余校验码(Cyclic Redundancy Code)是采用多项式的编码方式,将发送的数据看成是一个多项式的系数,数据为 b n − 1 b n − 2 … b 1 b 0 b_{n-1}b_{n-2}…b_{1}b_{0} bn1bn2b1b0 (其中 b i b_{i} bi 为 0 或 1),则其对应的多项式为:
            b n − 1 X n − 1 + b n − 2 X n − 2 + … + b 1 X + b 0 b_{n-1}X^{n-1}+b_{n-2}X^{n-2}+…+b_{1}X+b_{0} bn1Xn1+bn2Xn2++b1X+b0

例如:数据“10010101”可以写为多项式: X 7 + X 4 + X 2 + 1 X^{7} + X^{4} + X^{2}+1 X7+X4+X2+1

校验方法的工作过程

(1) 设要发送的 k 位数据对应一个 k - 1 次多项式 K(x);r 位冗余位对应一个 r - 1 次多项式 R(x)
(2) 发送方和接收方约定一个生成多项式 G(x) ,设该生成多项式的最高次幂为 r 。
(3) 在发送数据的末尾添加 r 个 0,则其相对应的多项式为 M(x) = X r X^{r} Xr K(x)。(左移 r 位)。
(4) 用 M(x) 除以 G(x) ,采用模 2 除法,获得商 Q(x) 和余式 R(x),则M(x) = Q(x) × G(x) + R(x)。
注:模 2 除法,从字面上可理解为二进制下的除法。
模 2 除法与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。在循环冗余校验码(CRC)的计算中有应用到模 2 除法。

(5) 令 T(x) = M(x) + R(x),T(x) 所对应的数据是在原数据块的末尾加上余式对应的数据得到的。
(6) 发送 T(x) 所对应的数据。
(7) 设接收端接收到的数据对应的多项式为 T’(x),将 T’(x) 除以 G(x),若余式为 0,则认为没有错误,否则认为有错。即若 T’(x) = T(x),则
余式为 0。若 T’(x) ≠ T(x),余式不为 0。
在这里插入图片描述
常见的生成多项式:
在这里插入图片描述

CRC的检错能力

结论:若 G(X) 选取适当,则可以检测出:

  • 全部单个错。
  • 全部离散的二位错 。
  • 全部奇数个错。
  • 全部长度小于或等于 K 的突发错( K 为生成多项式的最高幂次)。
  • 以1 - ( 1 / 2 ) K − 1 (1/2)^{K-1} 1/2K1的概率检出长度为 K + 1 位的突发错 。

CRC硬件实现

CRC 校验可以由软件或硬件来实现,现多采用超大规模集成电路芯片以硬件方式实现。
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值