计算机网络原理 第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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机网络中,物理层、数据链路层和网络层是构成OSI参考模型的三个重要层级。物理层负责传输原始的比特流,数据链路层在物理层的基础上为网络层提供服务,主要是将网络层交付的数据报可靠地传输到对方主机的网络层。而网络层则负责管理网络中的数据通信,将数据从源端经过若干个中间节点传送到目的地。 物理层主要负责传输数据的基本单位比特,通过物理连接来提供可靠的传输。数据链路层位于网络层和物理层之间,负责数据链路的建立、维护和拆除,并实现帧的包装、传输、同步、差错恢复和流量控制。以太网是最常用的数据链路层协议。网络层则进一步管理网络中的数据通信,负责将数据从源端通过中间节点传送到目的地。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [408计算机网络学习笔记——数据链路层](https://blog.csdn.net/JiangNan_1002/article/details/124369273)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [计算机网络通信基础 物理层与数据链路层](https://blog.csdn.net/qq_45927266/article/details/120955930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [一文看懂数据链路层和网络层的区别](https://download.csdn.net/download/weixin_38731385/14831340)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值