数据链路层循环冗余(CRC)检验

数据链路层有许多协议,但有三个基本问题是相同的:封装成帧、透明传输和差错检验。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检验措施,目前广泛使用的是循环冗余(CRC)检验的检错技术。
CRC检验原理:
在发送端,先把数据划分为组,假定每个组k个比特。现假定待传送的数据M=101001(k=6)。CRC运算就是在数据M后面添加供差错检验用的n位冗余码,然后构成一个帧发送出去,一共发送(k+n)位。在要发送的数据后面加n位的冗余码,虽然增加了数据传送的开销,但却可以进行差错检测。当传输可能出现差错时,付出这种代价是很值得的。
这n位冗余码可以通过下面的方法得出。用二进制的模2运算进行2^n乘M的运算,这相当于在M后面添加n个0。得到k+n位的数除以收发双方事先商定的长度为(n+1)位的除数p,得出商是Q余数是R(n位,比p少一位)。
这里写图片描述
在上图所示例子中,M=101001(k=6),假定除数p=1101(n=3).经模2除法运算后的结果是:商Q=110101(这个商并没有什么用),而余数R=001,这个余数R就作为冗余码拼接在M之后发送出去,这种为了进行检错而添加的冗余码常称为帧检验序列FCS,因此加上FCS后发送的帧是101001001(一共K+n位)。
在接收端把接收到的数据以帧为单位进行CRC检验:把收到的每一帧都除以同样的除数P(模2运算),然后检查得到的余数R:
如果在传输过程中无差错,那么经过CRC检验后得出的余数R肯定是0。
总之在接收端对收到的每一帧数据进行检测后,有以下两种情况:
1、若余数R=0,则判定这个帧没有错,就接受;
2、若余数R≠0,则判定这个帧有错,就丢弃。

一种简便的方法是使用多项式来表示循环冗余检验过程,在上边的例子中,用多项式P(X) = x^3 +X^2+1表示P = 1001(最高位对应X^3,最低位对应X^0).

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值