循环冗余检验-CRC的计算方法

循环冗余校验(CRC)用于检测数据传输或保存后的错误。通过在数据后面添加冗余码,利用预先约定的除数进行运算,得到的余数作为帧检测序列(FCS)添加到数据中。CRC虽增加传输开销,但能有效进行差错检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

循环冗余

今天学习计算机网络的时候对于循环冗余校验不是很理解,所以在此总结并加深一下理解

  1. 使用循环冗余的目的

主要是用来检测或校验数据传输或者保存后可能出现的错误

  1. 原理

在发送端将数据划分为组,假定每组k个比特,待传送数据为M则CRC运算就是在数据M的后面添加供差错检测用的k位冗余码,则一共发送(k+M)位。

  1. 优缺点

在所要发送的数据后面增加k位的冗余码,虽然会增大传输的开销,但却可以进行差错检测。在传输可能会出现差错时,这种代价往往是很值得的。

  1. 实现方法
    (首先需要了解一下异或运算)
    即参与运算的两个值,如果相对应的bit位相同,则结果为0,否则为1
    0^0 = 0,
    1^0 = 1,
    0^1 = 1,
    1^1 = 0

在数据M后添加n个0,得到的(k+M)位的数除以双方事先商定的长度为(k+1)即为除数P,从而得出商是Q 余数是R(k位,比除数少一位) 将余数R作为冗余码拼接在数据M后发送出去。
这种为了进行检错而添加的冗余码常称为帧检测序列FCS

例:M=101001,假定除数P为1101,在M后加三个0,经过运算则得到余数R=001。将这个余数R拼接在数据M后发送出去,因此加上FCS后发送的帧是101001001 (k+M)位

  1. 关于数据后面添加几个n的计算方法

利用除数P生成多项式P(X)

例:P=1101,则可生成
P(X)=1x3+1x2+0x1+1x0=1x3+1x2+1*x0
最高项次数为3则n为3个0

6.冗余计算示例
每次计算后将除数与余数第一个1匹对冗余计算
7. 注

循环冗余检验CRC和帧检验序列FCS并不是同一个概念。CRC是一种检错方法,而FCS是添加在数据后面的冗余码
在检错方法上可以采用CRC,也可以不用CRC

参考文献
谢希仁《计算机网络》
盐城工学院-计算机网络原理<周刚 、巩永旺>
CRC校验码演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小学五年级在读的蒟蒻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值