CRC校验

时间:2024-03-30 11:48:44

数据在链路层进行传递时,是以MAC帧的形式进行传递的,MAC帧是将上层的IP数据报作为有效载荷加上自己的报头就成了新的MAC帧了。
在MAC帧的报头中有一项叫RCR校验,那么什么是CRC校验?

CRC校验

CRC又称为循环冗余校验,其特征是信息字段与校验字段的长度可以自己选定。

CRC校验原理

CRC校验是在要发送的帧后附加上一个数字(CRC校验码)发给接收方,而接收方通过CRC校验码可以判断发送的帧是否正确或完整。

【注】:CRC校验码的位数比生成多项式的位数少一位。

CRC校验码的计算方法是:
将要发送的0,1二进制序列作为一个数字,模2除用多项式生成的数字,就能得到CRC校验码。
多项式生成数字的方法:
多项式中x的最高次幂对应二进制的最高位,以下二进制的各位对应多项式的各次幂,存在为1,不存在为0。
例:生成多项式为G(X)=X^4+X^3+X+1, 可转换为二进制数码11011。
生成多项式应满足以下条件:
A、生成多项式的最高位和最低位必须为1。
B、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0。
C、不同位发生错误时,应该使余数不同。
D、对余数继续做除,应使余数循环。
所以基本的生成多项式都有:
(1)x^3+x+1
(2)x^3+x^2+1
(3)x^4+x^3+x^2+1
(4)x^4+x^2+x+1
(5)x^4+x+1
(6)x^6+x+1
(7)x^5+x^2+1
(8)x^8+x^7+x^6+x^4+1
(9)……
模2除的计算方法:
“模2除”与“算数除”类似,但是“模2除”在计算减法时不会向前一位借位,1-1=0,0-1=1,1-0=1,0-0=0。加法也类似1+1=0,0+0=0,1+0=1,即无借位,也无进位。最后将余数作为附加的数值。

计算步骤

假设二进制序列为1011 0011,生成多项式为G(X) = X^4 + X^3 + 1。
1.将生成多项式转换为二进制序列。
G(X) = X^4 + X^3 + 1——->11001
所以,生成的CRC校验码一定是4位的。
2.在二进制序列后加上0000—–>1011 0011 0000,用1011 0011 0000模2除11001,得到的余数就是CRC校验码。
CRC校验
3.用上一步得到的CRC校验码替换二进制序列后面添加的4个0,得到1011 0011 0100,并发送数据。
4.当接收方接受到该数据时,接收方会用接受到的二进制序列模2除相同的多项式生成的数值,若余数为0则说明在传输过程中数据没有丢失,否则出现了差错。
CRC校验