计算机网络差错检测在哪层,2.4 差错检测

检测传输差错的一项最常用的技术叫作循环冗余校验(Cyclic Redundancy Check, CRC)。它几乎用在前几节讨论的所有链路层协议中,例如HDLC、DDCMP以及本章后面讲到的CSMA和无线协议。2?4?3节概述基本的CRC算法。在讨论该算法之前,我们考虑两种也被广泛使用的较为简单的差错检测方法:二维奇偶校验(two?dimensional parity)与校验和(checksum)。前者在BISYNC协议传输ASCII码字符时采用(当BISYNC用于传输如第1章中的讨论,帧中有时会发生比特错。例如,由于电干扰或热噪音,就会发生这样的差错。尽管差错很少,特别是在光链路上,但还是需要某种机制来检测这些差错,以便采取纠错措施。否则,终端用户会奇怪为什么刚刚成功编译的C程序现在突然会有一个语法错。发生这样的差错是因为这个程序是通过一个网络文件系统拷贝过来的。

用来处理计算机系统中比特错的技术已有很长的历史,至少可以追溯到20世纪40年代。早在使用打孔机以及当数据保存在磁盘或早期的磁心存储器时就已经开发出了汉明(Hamming)码和里德  所罗门(Reed?Solomon)码。本节介绍网络中最常用的一些差错检测技术。

检错只是问题的一部分,另一部分是一发现差错就立即纠错。当消息的接收方检测到差错时,可以采取两种基本方法。一种是通知发送方消息受到破坏,使发送方重发消息的副本。如果比特错很少,那么重传的副本很可能没有差错。另一种方法是采用几种差错检测算法,它们使接收方即使在消息出错后仍可以重新构造正确的消息。这些算法依赖于下面讨论的纠错码(error?correcting code)。

检测传输差错的一项最常用的技术叫作循环冗余校验(Cyclic Redundancy Check, CRC)。它几乎用在前几节讨论的所有链路层协议中,例如HDLC、DDCMP以及本章后面讲到的CSMA和无线协议。2?4?3节概述基本的CRC算法。在讨论该算法之前,我们考虑两种也被广泛使用的较为简单的差错检测方法:二维奇偶校验(two?dimensional parity)与校验和(checksum)。前者在BISYNC协议传输ASCII码字符时采用(当BISYNC用于传输

5b3c321b92eadb301140d393652c3be8.png用于20世纪60年代的另一种字符编码模式。 时用CRC),而后者在若干因特网协议中使用。

任何差错检测方案的基本思想都是在帧中加入冗余信息来确定是否存在差错。极端情况下,可以想象传输数据的两个完整副本。如果这两个副本在接收方是相同的,那么可能它们都是正确的;如果不同,那么其中之一或者两者都有错误,必须将它们丢弃。这是相当差的差错检测方案,原因有两点:第一,它为n比特消息发送n比特冗余信息;第二,有许多差错检测不到,如恰好在消息的第一和第二个副本的相同比特位置出错时,便检测不到。

幸运的是,我们有比这个简单方案更好的方法。一般说来,当为n比特消息仅发送k个冗余比特时,我们能够提供相当强的差错检测能力,其中

1a4c000bea6f02b3d4fe5600818d0093.png。例如,在以太网上,一个12 000比特(1 500字节)的数据帧仅需要一个32位的CRC码,通常表示为

3d1884875d76f24d61688c46bbc41508.png。下面将会看到,CRC码能发现大多数的差错。

之所以说发送的额外比特是冗余信息,是因为它们不是向消息中加入新的信息,而是用某种明确定义的算法直接从原始消息中导出信息。发送方和接收方都确切知道这个算法,发送方将该算法应用到消息上以产生冗余比特。然后,它将该消息和冗余比特都传输出去。

当接收方对收到的消息应用同一算法时,(在没有差错的情况下)应该产生与发送方相同的结果。它将结果与发送方发给它的结果进行比较,如果它们相等,就可能(以很高的或然率)做出结论,消息在传输过程中没有出错;如果不相等,就能够确定消息或冗余比特受到破坏,对此必须采取适当的措施,那就是丢弃消息,或在可能的情况下纠错。

注意这些额外比特的术语。一般说来,它们指的是差错检测码(error detecting code)。在特定的情况下,当产生编码的算法是以相加为基础时,可能称为校验和(check sum)。我们将会看到,因特网校验和的命名是很恰当的:它是使用求和算法的一种差错检测机制。不幸的是,校验和这个词常被不准确地用于表示任何形式的差错检测码,包括CRC。这可能引起混乱,因此,我们主张将校验和这个词仅用于真正使用求和运算的代码,而用差错检测码这个词表示本节描述的一般类型的代码。用于20世纪60年代的另一种字符编码模式。 时用CRC),而后者在若干因特网协议中使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值