目录
一、差错检测和纠错技术
1、发送节点
2、接收节点
3、说明
二、差错检测技术
1、一比特奇偶校验
2、二维奇偶校验
3、Internet 校验和方法(复习)
4、循环冗余检测 CRC
5、差错检测方法比较
一、差错检测和纠错技术
链路层提供比特级差错检测和纠正这两种服务。EDC 是差错检测和纠正比特。
① 比特级差错检测和纠正
是指对从一个节点发送到另一个物理上连接的邻近节点的链路层帧中的比特损伤进行检测和纠正。
主要的差错检测技术有:奇偶校验、Internet 校验和、循环冗余检测。
② 差错检测并非 100% 可靠
差错校验位越多,差错检测和纠正效果越好。
1、发送节点
- 将数据 D 以及附加的差错检测和纠错位 EDC 一起发送到链路。
差错检测和纠正的保护范围覆盖了数据 D 的所有字段。数据 D 不仅包括从网络层传递下来需要通过链路传输的数据报,还包括链路帧首部中的链路级寻址信息、序列号和其它字段。
2、接收节点
接收比特序列 D' 和 EDC' 。
接收方根据 D' 和 EDC',判断 D' 是否和初始的 D 相同,即 D 的传输是否正确。
- 正确:解封取出数据报,交付给网络层。
- 出错:进行差错处理。
如果发生传输比特错误(0→1,1→0),D' 和 EDC' 可能与发送的 D 和 EDC 不同。
3、说明
① 差错检测和纠正技术不能保证接收方能检测到所有的比特差错。
即接收方并未发现有比特差错,更不用提知道是哪一位发生差错了。
② 选择一个合适的差错检测方案使未检测到的情况发生的概率很小即可。
③ 差错检测和纠错技术越好,越复杂,开销更大。
二、差错检测技术
三种主要差错检测技术
- 奇偶校验:最基本的方法。
- Internet 校验和:常用于运输层。
- 循环冗余检测:常用于链路层。
1、一比特奇偶校验
发送方:
- 在要发送的信息 D(d 位)后面附加一个奇偶校验位
- 使 “1” 的个数是奇数(奇校验)或者是偶数(偶校验)
- 一起传输发送(d+1 位)
接收方:
- 检测收到的信息(d+1 位)中 “1” 的个数。
- 偶校验:发现奇数个 “1”,至少有一个比特发生差错(奇数个比特差错)。
- 奇校验:发现偶数个 “1”,至少有一个比特发生差错。
一比特奇偶校验只能检测出奇数个比特差错,不能检测出偶数个比特差错,因为偶数个 0→1,1→0 将会彼此抵消。
特点:
- 可以检查出任意奇数个错误,但不能发现任意偶数个错误。
- 若比特差错概率很小,差错独立发生,一比特奇偶校验可满足要求。
- 若比特差错集中在一起 “突发”,则一帧中未检测到差错的概率达到 50% 。
一比特奇偶校验只能检测到差错,不能指出是哪一位发生了差错。
2、二维奇偶校验
基本思想:
- 将要传信息 D(d 比特)划分为 i 行 j 列
- 分别对每行和每列信息进行相应的奇偶检验
- 帧的差错检测比特最终由 i+j+1 个奇偶比特构成
特点:
- 可以检测并纠正单个比特差错。
- 能够检测但不能纠正分组中任意两个比特的差错。
3、Internet 校验和方法(复习)
发送方:
- + 伪首部;
- 以 16 位为单位切割数据;
- 将所有16 位整数求和并回卷;
- 对得到的和进行逐位取反 -- 校验和;
- 将校验和放入报文段首部,一起发送。
接收方:
对接收到的信息按与发送方相同的方法进行求和。
- 全 “1”:收到的数据无差错;
- 若有 “0”:收到的数据出现差错。
特点:
- 分组开销小:因为校验和的位数比较少。
- 差错检测能力弱:适用于运输层,差错检测用软件实现,检查和方法简单、快速。
链路层的差错检测由适配器中专用的硬件来实现,采用更强的 CRC 方法。
4、循环冗余检测 CRC
cyclic redundancy check
CRC 编码:即多项式编码,把要发送的比特串看作为系数是 0 或 1 的一个多项式,对比特串的操作看作为多项式运算。
校验码的具体生成过程为:假设发送信息用信息多项式 C(X) 表示,将 C(x) 左移 R 位,则可表示成 C(x)*2R,这样 C(x) 的右边就会空出 R 位,这就是校验码的位置。通过 C(x)*2R 除以生成多项式 G(x) 得到的余数就是校验码。
基本思想:发送方和接收方先共同选定一个生成多项式 G(r+1 比特),最高有效位是 1 。
① 发送方
- 将位数为 G 位数减一的全 0 附加比特 R(r)添加到数据 D 的后面生成 DR(d+r)
- 用 DR 去除以 G,将得到的余数替换全 0 的 R,成为新的 R,并一起发送
由于最终 DR 是初始 DR 加上初始 DR/G 的余数,因此最终 DR 能被生成多项式 G 整除。
② 接收方
用接收到的 DR(d+r)去除以 G:
- 余数非 0:传输发生差错
- 余数为 0:传输正确,去掉尾部 r 位以得到所需数据 D(r)
CRC 举例:
注意:在除的过程中,不是用上面一项减去下面一项,而是将两者进行异或;位数不够则商 0,位数足够则商 1 。CRC 只能检测出小于等于 r 位的比特差错,但是能 100% 检测出。
5、差错检测方法比较
- 奇偶校验能力最弱,CRC 校验能力最强。
- 奇偶校验通常用于简单的串口通信。
- Internet 校验和通常用于网络层及其之上的层次,要求简单快速的软件实现方式。
- CRC 通常应用于链路层,一般是由适配器的硬件来实现。