循环冗余检验CRC(Cyclic Redundancy Check)

循环冗余检验CRC(Cyclic Redundancy Check)

1. 循环冗余检验CRC的原理

  • 在发送端,先把数据划分为组,假定每组k个比特。现假定待传送的数据M=101001(k=6)。CRC运算就是在数据M的后面添加供差错检测用的n位冗余码,然后构成一个帧发送出去,一共发送(k+n)位。
  • 在所要发送的数据后面增加n位冗余码,虽然增大了数据传输的开销,但却可以进行差错检测,当传输可能出现差错时,付出这种代价往往是值得的。

2. 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后发送的帧时101001001(即(2^n)*M+FCS),共有(k+n)位。
    循环冗余检验CRC(Cyclic Redundancy Check)_第1张图片
  • 这种为了进行检错而添加的冗余码常称为帧检验序列FCS(Frame Check Sequence)。

注:CRC是一种检错方法,FCS是添加在数据后面的冗余码,在检错方法上可以选用CRC,也可以不选用CRC。

参考文献:
[1]《计算机网络(第5版)》谢希仁——第三章 3.1

你可能感兴趣的:(计算机网络基础,差错检测,循环冗余检验CRC,帧检验序列FCS,冗余码)