计网——17差错检测和纠正技术
处理帧差错两种方法
- 检错重发(detect and retransmission)
①检测到发送方报文受损,则通知发送方重传副本
②差错率低效果好
适用场合
检错重发适合链路差错率很低的场合,如有线通信 - 前向纠错(Forward Error Correction, FEC)
①纠错通过额外信息“预先”进行
②时效性好
适用场合
前向纠错适合对时间要求很高的场合,如航天和实时控制
一.差错检测
EDC= 差错检测和纠错比特 (冗余)
D = 数据由差错校验保护,可能包括首部字段
差错检测不是100%可靠!
协议可能漏掉某些差错,但是非常少
较大的EDC字段产生更好的检测和纠正
二.奇偶校验
单比特奇偶校验
检测单个比特差错
二维比特奇偶校验
检测和纠正单个比特差错
三.互联网检验和
目标
检测传输段中的“差错”(如比特翻转) (注意: 仅用于运输层)
发送方
将段内容作为16比特整数序列来处理
检验和: 段内容相加(补码和)
发送方将检验和的值放入 UDP 检验和字段
接收方
计算接收到段的检验和
检查是否计算的检验和等于 检验和字段的值:
NO – 检测到差错
YES – 没有检测到差错,仍可能有错
当作加法时,最高位进比特位的进位需要加到结果中
对不同的报文,容易找到具有相同检验和的另一段报文:
效果不好!
四.检验和:循环冗余码校验(Cyclic Redundancy Check)
将数据比特D看作一个二进制数,选择r+1比特模式(生成式)G
目标:选择r个CRC 比特R, 使得
<D,R> 被G整除 (以2为模)
接收方知道G, 用G除以<D,R>。如果有非零余数:检测到差错!
能够检测所有小于r+1比特的突发差错
广泛用于以太网, HDCL中
CRC例子
希望:
D.2r XOR R = nG
等价为:
D.2r = nG XOR R
等价为:
如果用G除以D.2r, 余数为 R