CRC校验

一、什么是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得到被除数: 2nM ,被除数是双方商定好的(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校验的基础上,加入了帧编号,确认,重传机制。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值