一、奇偶校验

奇校验:增加一位校验位,使1的个数为奇数

偶校验:增加一位校验位,使1的个数为偶数

奇偶校验只有在出错二进制位个数是奇数的情况下才有效

二、海明码

用冗余数据位来检测和纠正代码差错的理论和方法,特点:

  • 校验位数量:由2>m+k+1决定,其中m为信息码,k为校验码

  • 校验位位置:在2的幂次方位置上(1、2、4、8。。。)

  • 隐藏条件:偶校验,确定校验位数值

image-20241030195006112

1、确定校验位位置

image-20241030195940490

问题1:数据位D3由哪些校验位监督?

3的二进制为0011,从右往左数,

  • 第0个二进制位为1,说明它受2**0=1监督

  • 第1个二进制位为1,说明它受2**1=2监督

  • 第2个二进制位为0,说明它不受2**2=4监督

  • 第3个二进制位为0,说明它不受2**3=8监督

所以2收到校验位C1和C2监督。

也可以换一种思路,3=2+1(类似于IP地址10进制2进制转换的方法),所以受到2和1监督。

问题2:校验位C8监督了哪些数据位?

上图中,右下角的表,从第一列(8)竖着看下来,值为1的行对应的数据位,就是C8监督的数据位。

2、接收方检错和纠错

下图中,第一行和第三行计算结果为1,说明出现了错误。找到它们两个都有的数据,但是其他行都没有的数据,为C5,说明C5出错了,将其取反(改为0),即可纠正。

快速计算方法:将计算结果从下往上排列第得0101,把它看成二进制的0101,转换为十进制为5,说明就是第5位出现了错误。

image-20241030200755768

海明码这里,时间久了再回来看,可能会有些迷糊,但是要写下来可能花的时间不少,要是看着有些迷糊,就去看看视频:软考网络工程师上午计算题四:海明码和CRC校验哔哩哔哩bilibili

三、CRC循环冗余检验

在发送端,先把数据划分为组。假定每组k个比特 CRC运算在每组M后面再添加供差错检测用的n位冗余码,然后构成一个帧发送出去。一共发送(k+ n)位。

image-20241030201659271

这种为了进行检错而添加的冗余码常称为帧检验序列FCS(Frame Check Sequence)。

CRC循环冗余码的计算

加的时候是模2加,也就是异或运算。

余数有n位,就在被除数后面加上n-1个0。最后得到的余数(冗余码)为也为n-1位。4image-20241030201821171

接收方用收到的数据去除以除数P,如果的到的余数为0,则说明数据没有出错。

广泛使用的生成多项式P(X)

以太网中常用的是CRC-32。

image-20241030202236128

例题

例题1:

image-20241030201935197

例题2:

image-20241030203015191

image-20241030202953487

四、真题

真题2018.5

image-20241030203546806

image-20241030203622410

真题2016.11

被除数为100111,余数有5位。

image-20241030203745142