今天我们的主题是——CRC校验
一、什么是CRC校验?
在MAC帧格式中最后有4个字节是CRC校验,究竟什么是CRC校验?
CRC即循环冗余校验码:是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。
二、如何校验?
CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;任何一个二进制数列都可以和一个系数仅仅为‘0’和‘1’的多项式一一对应。比如:
x^6+x^4+x^2+x^1+1 该多项式对应的二进制序列为:1010111。
具体校验步骤:
【例】假设使用的生成多项式是G(X)=X3+X+1。4位的原始报文为1010,求编码后的报文。
解:
1、将生成多项式G(X)=X3+X+1转换成对应的二进制除数1011;
2、此题生成多项式有4位(R+1)(注意:4位的生成多项式计算所得的校验码为3位,R为校验码位数),要把原始报文 1010左移3位变成1010000;
3、用生成多项式对应的二进制数对左移3位后的原始报文进行模2除(高位对齐),相当于按位异或,即相同为0,相 异为1,不考虑进位与借位:
1010000
^1011
------------------
0001000
1000(左移三位)
^1011
------------------
0011
得到的余位0011,校验码需要三位就是011,所以最终编码为:1010011
三、几点说明
1、CRC是一种常用的检错码,并不能用于自动纠错。
2、只要经过严格的挑选,并使用位数足够多的除数 P,那么出现检测不到的差错的概率就很小很小。
3、仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(只是非常近似的认为是无差错的),并不能保证可 靠传输。