1.什么是CRC
今天来聊一聊CRC的话题,首先第一个问题就是什么是CRC?CRC被称为循环冗余校验码,它是一种通信中常用的校验码,能让通信设备对接收到的数据进行正确与否的校验,即它能通过添加的冗余码字来判别接收的信息是否出错,但也仅仅是检验是否出错,并不能发现出错的位置以及纠正错误,因此一般会与重传机制联合使用来提高通信的可靠性。
2.CRC如何实现校验功能
首先CRC的产生与待发送的数据是息息相关的,这种关联性也是接收端判决的依据。例如我们要传输一个长度为K比特的数据,会先通过这K比特的数据与特定多项式(也称生成多项式)来得到一组长度为R比特的校验码字,然后将这K+R比特的数据前后组合在一起发送出去。接收端接收数据后就可以利用这K+R比特的数据来判断这组数据是否出错了。接收设备将接收的K+R比特组合数据中的前K比特拿出来,并进行与发送端一模一样操作,它就会得到另一组长度R比特校验数据,这时候如果自己计算的校验数据与接收到的校验数据完全一致,则说明接收的数据是正确的,如果两者不一致,就说明传输的过程中出现了错误,至于这错误是原始的K比特出错了还是添加的R比特校验位出错了,不重要。重要的是需要重传。
3.CRC产生校验码的过程
在说明CRC码字如何产生前,先说明下二进制系数多项式与二进制数列的对应关系,例如多项式x4+x2+x+1 对应的二进制序列为10111,这个二进制序列就是多项式的系数数列,其中0代表没有这个次幂的数据。这里的多项式都是属于GF(2),也就是其系数都是二进制的数,而且其多项式的各项运算,

最低0.47元/天 解锁文章
7650

被折叠的 条评论
为什么被折叠?



