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

循环冗余

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

  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匹对循环冗余检验-CRC的计算方法_第1张图片
7. 注

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

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

你可能感兴趣的:(计算机网络,计算机网络)