差错检测和纠错是链路层提供的两种服务。
差错检测和纠正的一般过程:
在发送节点,为了避免比特差错,使用差错检测和纠错位 EDC 来增强网络层传递下来需要通过链路传输的数据报 D。链路层帧中的 D 和 EDC 都被发送到接收节点。在接收节点, 接收到比特序列 D’和 EDC’。注意到因传输中 0/1 翻转所致,D’和 EDC’可能与初始的 D 和 EDC不同。
接收方面临的问题是,在它只收到 D’和 EDC’的情况下来判决 D’是否和初始的 D 相同。
在数据传输中检测差错的 3 种技术:
1 奇偶校验
要发送的信息 D 有 d 个比特。在偶校验方案中,发送方只需包含一个附加的比特,选择附加比特的值,使得这 d+1 个比特(初始信息加上一个校验比特)中 1 的总数是偶数。
接收方的操作也很简单。接收方只需要数一数接收的 d+1 比特中 1 的个数。
如果发现了奇数个值为 1 的比特,接收方知道了至少出现了一个比特差错。更确切的说法是,出现了奇数个差错比特。但是如果出现了偶数个比特差错,显然这种方法无法检测这种错误。
二维单比特奇偶校验方案中,D 中的 d 个比特被划分为 i 行 j 列。对每行和每列计算奇 偶值。产生的 i+j+1 奇偶比特构成了链路层帧的差错检测比特。这种方法可以检测和纠正 1 比特的错误。
2 校验和
在 TCP 和 UDP 协议中,对所有字段(包括首部和数据字段)都计算校验和。
IP 协议只对头部计算校验和。
3 循环冗余检测
计算机网络中广泛应用的差错检测技术是循环冗余校验编码 CRC。
CRC 编码也称为多项式编码,因为该编码将要发送的比特