CRC 循环冗余差错检验 计算机网络考点(图解)

需求用处:
现实中的通信链路都不是理想的,比特在传输中可能会产生差错:1可能会变成0,0可能会变成1。我们称之为比特差错,所以我们要对传输的数据进行差错检验,减小误码率。在数据链路层,为了便于硬件检测差错,通常在帧的尾部设置一个差错检验字段存放整个帧的差错检验码,这个差错检验字段常称之为帧检验序列。
CRC理解:
需要的知识储备有:
模2除法运算:二进制下的除法,实际上就是按位异或运算,也就是同位比较后,两者对应位相同则结果为“0”,不同则结果为“1”。
多项式编码(CRC编码):用来生成除数G,CRC生成多项式也与一组二进制数相对应,例如,题中,CRC生成多项式为:x^4 +x^2 +x^1+1 (常数项1是x^0)
就是:2^4 + 2^2+ 2^1+1,对应指数位为1,否则为0,所以对应的二进制是:10111
算法要求G的最高位和最低位的比特为1。

CRC差错检验运算步骤
1、发送方和接收方协商一个 r+1位的比特生成G.
2、发送方选择一个合适的r比特冗余码R(即检错码),并将它附加到D(要发送的数据)上,使得到的d+r比特模式异或运算后恰好能被除数G整除。

说明:要计算这个冗余码R,则在数据后加上除数个数减1个0(生成多项式最高项次个0),进行异或运算,得到同位数个比特的余数R,那么,将这个余数加到要发送的数据后得到的二进制数,与除数 G进行异或运算后,必然可以整除,这时,我们看结果,余数为0,则数据串里没有比特差错,否则,发生的比特位的变化。(就这么个过程,必须理解)

发送方的处理
接收方的处理

在这里插入图片描述

接下来看例子:
在这里插入图片描述
步骤
在这里插入图片描述
所以,最终发送的形式是:
在这里插入图片描述
上题是如何计算冗余码,下面来一道判断冗余码的题:
在这里插入图片描述
在这里插入图片描述
说明:商 没有什么用,只是我们计算过程中的标记作用,指示算到了第几位,同时,为1时,说明够除,被除数下一位,为0时,说明不够除,此时标记0,再往后借位去除。
教材上(谢希仁第5版)的 商 一般都全是1,但在运算过程中会进行与0异或,使向后移动。

好啦,就这些。考试稳了。
(以上图片来源于湖南科技大学计算机网络课老师.B站有本问题视频)

发布了6 篇原创文章 · 获赞 11 · 访问量 491

猜你喜欢

转载自blog.csdn.net/qq_44114055/article/details/103826356
今日推荐