1 CRC校验的目的

在信息的传输过程中,有时会发生误码。

例如,传送1001,接收到1000,这就产生了误码,但接收方并不知道产生了误码。

而当发送方与接收方使用同一标准的CRC校验,就能够判断在信息传输的过程中是否发生了误码。

2 CRC基础知识

2.1 除数与被除数

除号前面的数为被除数;

除号后面的数为除数。

10 ÷ 2 = 5            10为被除数;2为除数。

2 ÷ 10 = 0.2         2为被除数;10为除数。

2.2 除与除以

10 ÷ 2 = 5            10除以2

2 ÷ 10 = 0.2         10除2

2.3 异或

异或主要用于二进制计算,相同为0,相异为1。

0异或0 -> 0

0异或1 -> 1

1异或0 -> 1

1异或1 -> 0

3 CRC校验的三要素

3.1 要传输的数据

例如要传输的数据为:10101101(二进制)

3.2 多项式

各种标准下的多项式如下图所示。

根据多项式可以得到除数,除数为完整多项式的系数,如下列出了两个例子:

多项式 完整多项式 除数
X^4 + X +1 1*X^4 + 0*X^3 + 0*X^2 + 1*X + 1*X^0 10011
X^5 + X^3 + 1 1*X^5 + 0*X^4 + 1*X^3 + 0*X^2 + 0*X^1 + 1*X^0 101001

3.3 校验和

根据要传输的数据和除数,可以得到校验和。

首先要在传输数据后补N个0(N = 多项式最高次次数);

最后除数的位数 = N,除数位数小于N,要在前面补0。

例1:

传输的数据:10101101(二进制)

除数:10011

校验和的计算如下图所示:

 

例2:

传输的数据:11010010(二进制)

除数:10011

校验和的计算如下图所示

接收方对接收数据使用相同CRC多项式进行异或运算,若余数为0,则表明传输没有出现错误。

如下图所示,传输的数据为11010010,CRC校验和为1010,除数为10011,最终余数为0,表明传输正确。

 

4 在线CRC计算器要注意的一些问题

要注意的问题有如下三点:

 5 参考

CRC(循环冗余校验)在线计算

http://www.ip33.com/crc.html

[CRC校验]手算与直观演示

https://www.bilibili.com/video/BV1V4411Z7VA?from=search&seid=6029216890881933361

【计算机网络期末复习】5分钟左右让你明白CRC循环冗余校验

https://www.bilibili.com/video/BV1rJ411V7L5?from=search&seid=6029216890881933361

循环冗余校验(CRC)算法入门

https://blog.nanpuyue.com/2019/050.html

 

版权声明:本文为QQ2962269558原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/QQ2962269558/p/12868209.html