【计算机网络】数据链路层(二)—— 差错控制
一、前言
数据链路层的主要作用是差错控制,早期有体现可靠传输
本章主要介绍差错控制相关内容,包含检错编码和纠错编码的介绍,
差错从何而来?
概括来说,传输中的差错都是由于噪声
引起的。
全局性
1.由于线路本身电气特性所产生的随机噪声(热噪声),是信道固有的,随机存在的。
解决办法:提高信噪比来减少或避免干扰。(对传感器下手)
局部性
2.外界特定的短暂原因所造成的冲击噪声,是产生差错的主要原因。
解决办法:通常利用编码技术来解决。
链路层为网络层提供服务:
数据链路层与物理层编码的不同
数据链路层编码和物理层的数据编码与调制不同。物理层编码针对的是单个比特
,解决传输过程中比特的同步等问题,如曼彻斯特编码。而数据链路层的编码针对的是一组比特
,它通过冗余码的技术实现一组二进制比特串在传输过程是否出现了差错。
二、检错编码
主要的检错编码分为奇偶校验码与循环冗余码
1. 奇偶校验码
奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码。它由n-1位信息元和1位校验元组成,如果是奇校验码,那么在附加一个校验元后,码长为n 的码字中“1”的个数为奇数;如果是偶校验码,那么在附加一个校验元以后,码长为n的码字中“1”的个数为偶数。
奇偶校验码特点:
只能检查出奇数个比特错误,检错能力为50%。同时并不能知道哪些位错了,也不能发现偶数位的出错情况。
2. 循环冗余码(CRC)
给定一个m bit 的帧或报文,发送器生成一个 r bit 的序列,称为帧检验序列(FCS)。这样所形成的帧将由 m+r 比特组成。发送方和接收方事先商定一个多项式G(x)(最高位和最低位必须为1),使得带检验码的帧刚好能被预先确定的多项式G(x)整除。
假设一个帧有m位,其对应的多项式为Mx),则计算冗余码的步骤如下:
- 加0。假设G(x)的阶为 r,在帧的低位端加上 r 个0。
- 模2除。利用模2除法,用G(x)对应的数据串去除1)中计算出的数据串,得到的余数即为冗余码(共 r 位,前面的 0 不可省略)。
注意:循环冗余码(CRC)是具有纠错功能的,只是数据链路层仅使用了它的检错功能,检测到帧出错则直接丢弃,因此本节将 CRC 放在检错编码中介绍。
FCS的生成以及接收端CRC检验都是由硬件实现,处理很迅速,因此不会延误数据的传输。
例:要发送的数据是1101 0110 11,采用CRC校验,生成多项式是10011,那么最终发送的数据应该是?
10011表示成多项式为 X 4 + X 1 + X 0 X^{4}+X^1+X^0 X4+X1+X0,阶数为4
三、纠错编码
海明码
海明码的实现原理是在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错位,而且能指出错位的位置,为自动纠错提供依据。
现以数据码 1100 为例讲述海明码的编码原理和过程
- 确定校验码位数 r
假设数据/信息有m位,冗余码/校验码有r位,则校验码一共有 2 r 2^r 2r 种取值,r 的取值需满足下述不等式
n + r + 1 ⩽ 2 r n+r+1\leqslant2^r n+r+1⩽2r
对于数据码1100, 数据的位数m=4,满足不等式的最小 r 为3,也就是 D=1100 的海明码应该有4+3=7位,其中原数据4位,校验码3位。
- 确定校验码和数据的位置
校验码放在序号为 2 n 2^n 2n 的位置,数据按序填上
序号 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
---|---|---|---|---|---|---|---|
值 | D 4 D_4 D4 | D 3 D_3 D3 | D 2 D_2 D2 | P 3 P_3 P3 | D 1 D_1 D1 | P 2 P_2 P2 | P 1 P_1 P1 |
值 | 1 | 1 | 0 | x 4 x_4 x4 | 0 | x 2 x_2 x2 | x 1 x_1 x1 |
- 求出校验码的值
校验位 P i P_i Pi的值为第 i i i 组(由该校验位校验的数据位)所有位求异或。
注:采用奇校验还是偶校验根据题目要求决定
- 检错并纠错
方法一:
海明码的校验原理:每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查,构成k个校验方程:
若
S
1
S
2
S
3
S_1S_2S_3
S1S2S3 的值为“000",则说明无错;否则说明出错,且这个数就是错误位的位号,如
S
1
S
2
S
3
S_1S_2S_3
S1S2S3=001,说明第 1 位出错,直接将该位取反
就达到了纠错的目的。
方法二:分组取差集的方法
注:海明码可以纠正一位差错
例题
1.通过提高信噪比可以减弱其影响的差错是().
A.随机差错 B.突发差错 C.数据丢失差错 D.干扰差错
解析:一般来说,数据的传输差错是由噪声引起的。通信信道的噪声可以分为两类:热噪声和冲击噪声。热噪声一般是信道固有的,引起的差错是随机差错,可以通过提高信噪比来降低它对数据传输的影响。冲击噪声-一般是由外界电磁干扰引起的,引起的差错是突发差错,它是引起传输差错的主要原因,无法通过提高信噪比来避免。4.字符S的ASCII编码从低到高依次为1100101,采用奇校验,在下述收到的传输后字符中,错误()不能检测。 A.11000011
B.11001010 C.11001100 D.11010011
解析:既然采用奇校验,那么传输的数据中1的个数若是偶数个则可检测出错误,若1的个数是奇数个,则检测不出错误,因此选D。
5.为了纠正2比特的错误,编码的海明距应该为().
A.2
B.3
C.4
D.5
解析: ⋆ \star ⋆海明码“纠错”d位,需要码距为2d+1的编码方案;“检错”d位,则只需码距为2d+1.