计算机网络原理 第4章 数据链路层 循环冗余码 应用

在计算机网络和数据通信中,用得最广泛的检错码, 是一种漏检率低得多也便于实现的循环冗余码 CRC, CRC码又称为多项式码

任何一个由二进制数位串组成的代码, 都可以唯一地与一个只含有0和1两个系数的多项式建立一一对应的关系。 例如, 代码1010111 对应的多项式为   ,  同样多项式 

对应的代码为101111。

CRC码在发送端编码和接收端校验时, 都可以利用事先约定的生成多项式G(X)来得到。 k位要发送的信息可对应于一个(k-1)次多项式K(X), r位冗余位则对应于一个(r-1)次多项式R(X), 由k位信息位后面加上r位冗余位组成的n=k+r位码字则对应于一个(n-1) 次多项式  , 例如

信息位: 1011001       --->   

冗余位:1010            --->      

码字:    10110011010  ---->T(X) =  X的4次方 * K(X) + R(X)

                                                         = X的10次方+ X的8次方+ X的7次方+ X的4次方+ X的3次方+ X

由信息位产生冗余位的编码过程,就是已知K(X)求R(X)  的过程。在CRC码中可以通过找到一个特定的r次多项式G(X) (其最高项 

 的系数恒为1 ), 然后用   K(X) 去除以G(X), 得到的余式就是R(X). 

 

特别要强调的是,这些多项式中的 " + " 都是 模2加(也就是异或运算); 此外这里的除法也是模2除法, 即除法过程中用到的减法是模2减法, 它和模2加法的运算规则一样, 都是异或运算, 这是一种不考虑加法进位和减法借位的运算,即

 0 + 0 =0, 0+1 =1, 1+0=1, 1+1=0

0-0=0, 0-1=1, 1-0=1, 1-1=0;

在进行基于模2运算的多项式除法时,只要部分余数首位为1, 便可上商1, 否则上商0, 然后按模2减法求得余数, 该余数不计最高位。 当被除数逐位除完时, 最后得到比除数少一位的余数。此余数即为冗余位,将其添加在信息位后便构成CRC码字。

其中Q(X)为商式。根据模2运算规则R(X)+R(X)=0的特点, 可将上式改记为

     [X的r次方 * K(X) + R(X)] / G(X) =Q(X)

   即 T(X) / G(X) = Q(X)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

理论上可以证明循环冗余校验码的检错能力有以下特点:

  1. 可检测出所有奇数位错
  2. 可检测出所有双比特的错
  3. 可检测出所有小于、等于校验位长度的突发错

    CRC码是由 X的r次方 * K(X)除以某个选定的多项式后产生的, 所以该多项式称生成多项式。一般来说,生成多项式位数越多校验能力越强。 但并不是任何一个 r + 1 位的二进制数都 可以作 生成多项式。 目前广泛使用的生成多项式主要有以下四种:

 

例1: 已知生成多项式:, 求信息位 1010010 的CRC码

解析: 因为信息位为1010010,   所以对应的公式 K(x) =   ,  

又因为生成多项式 C(X) =   , 故取r=4,  则 X的4次方 * K(X) =   ,对应的代码 10100100000, 

由模2除法 求得余式R(X) =     , 又因为T(X) = X的4次方 *  K(X)  + R(X), 所以

T(X) =  ,    所以T(X) 对应的代码为 10100101011,  

故信息位 1010010 的 CRC码为 10100101011                                                     

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

模2除法_百度百科

https://wapbaike.baidu.com/item/%E6%A8%A12%E9%99%A4%E6%B3%95/10416971?fr=aladdin&ms=1&rid=10802194830799160434&rt=true&bk_tashuoStyle=topLeft&bk_share=qqbrowser&bk_sharefr=lemma&sc_id=TVGczgD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值