一、什么是CRC校验
这里要介绍一下数据链路层的三个基本问题:
1.封装成帧
加上首部和尾部,尾部包含FCS冗余校验码(专门为了检错而添加的帧验证序列)。
说明:CRC和FCS,没有关系,添加的FCS码既可以用CRC校验,也可以用其他方法校验。
2.透明传输
这里的透明传输是指任何东西否可以封装成帧来传输,就是透明传输。
3.差错校验
数据链路层广泛采用CRC校验。
循环冗余校验(Cyclic Redundancy Check),简称CRC校验。是IOS网络结构中,数据链路层的一种差错校验的技术。
二、CRC校验出现的原因
数据在传输的过程中,比特位可能发生错乱,1可能变成0,0可以变成1。
传输中错误的比特位占总数的比例称为误码率BER(Bit Error Rate)。数据传输不管怎么样,误码率都存在,因此,为了保证数据传输的可靠性,在数据链路层广泛使用CRC校验。
三、CRC校验的原理
举例: 现在有一段待发送的数据M=101001,k个比特位(这里k=6)。CRC运算就是在数据M后面加上n位冗余码。然后构成一个帧发送出去。
n为冗余码这么获得呢?
二进制模2运算乘M得到被除数:
2n∗M
,被除数是双方商定好的(n+1位)P=1101。
用被除数除以除数可以得到 n位的余数。
101001000%1101=001
把得到的余数加到M后面就是发送的FCS:101001001。这个数除以P,余数为0。
每段帧在CRC校验后两种情况:
<1>.若得出余数为0,那么这个帧没有出错,接受。
<2>.要是得到余数≠0,那么出错,丢弃。
一种更方便的方法来标示循环冗余校验过程。
P(X)=
X3+X2+1
,根据X的次方对应得到(P=1101)。
总结:在数据链路层,发送端检验校验序列FCS的生成和接收端CRC校验都是硬件完成,不会影响到数据传输的效率,在数据链路层仅用CRC校验,只能对帧做到无差错接受,(因为只有不出错才接受),所以凡是接收端收到了链路层的帧,那么认为这些帧的传输过程中没有产生差错。
ISO的观点是让数据链路向上提供可靠传输,因此在CRC校验的基础上,加入了帧编号,确认,重传机制。
CRC校验
最新推荐文章于 2024-08-13 09:26:01 发布