📜  计算机网络|错误检测

📅  最后修改于: 2020-11-09 09:56:52             🧑  作者: Mango

错误检测

当数据从一个设备发送到另一设备时,系统不保证该设备接收到的数据是否与另一设备发送的数据相同。错误是在接收方接收到的消息与发送的消息不同时的情况。

错误类型

错误可以分为两类:

  • 单位错误
  • 突发错误

一位错误:

给定数据单元的唯一一位从1更改为0或从0更改为1。

在上图中,发送的消息被破坏为一位,即0位变为1。

串行数据传输中不太可能出现单位错误。例如,发送方以10 Mbps的速度发送数据,这意味着该位仅持续1?s,并且要发生一位错误,噪声必须大于1?s。

单位错误主要发生在并行数据传输中。例如,如果使用八根线发送一个字节的八位,则其中一根线有噪声,则每个字节损坏一位。

突发错误:

两个或多个位从0更改为1或从1更改为0被称为突发错误。

从第一个损坏的位到最后一个损坏的位确定突发错误。

突发错误中的噪声持续时间大于单位错误中的噪声持续时间。

突发错误最有可能在串行数据传输中发生。

受影响的位数取决于噪声的持续时间和数据速率。

错误检测技术:

最受欢迎的错误检测技术是:

  • 单一奇偶校验
  • 二维奇偶校验
  • 校验和
  • 循环冗余校验

单一奇偶校验

  • 单一奇偶校验检查是检测错误的简单机制,而且价格便宜。
  • 在这种技术中,冗余位也称为奇偶校验位,它附加在数据单元的末尾,以使1的数量变为偶数。因此,发送的比特总数将是9个比特。
  • 如果1s位数为奇数,则奇偶校验位1被附加;如果1s位数为偶数,则奇偶校验位0被附加在数据单元的末尾。
  • 在接收端,根据接收到的数据位计算奇偶校验位,并将其与接收到的奇偶校验位进行比较。
  • 该技术产生的总偶数为1,因此称为偶数奇偶校验。

单一奇偶校验的缺点

  • 它只能检测非常罕见的单位错误。
  • 如果两个位互换,则它无法检测到错误。

二维奇偶校验

  • 通过使用二维奇偶校验,可以以表的形式组织数据,从而可以提高性能。
  • 为每一行计算奇偶校验位,这等效于单奇偶校验。
  • 在二维奇偶校验中,将一个位块划分为若干行,并将多余的位行添加到整个块中。
  • 在接收端,将奇偶校验位与根据接收到的数据计算出的奇偶校验位进行比较。

二维奇偶校验的缺点

  • 如果一个数据单元中的两位损坏,而另一数据单元中的相同位置也两位损坏,则2D奇偶校验器将无法检测到错误。
  • 在某些情况下,该技术不能用于检测4位或更多的错误。

校验和

校验和是基于冗余概念的错误检测技术。

它分为两个部分:

校验和生成器

发送方会生成一个校验和。校验和生成器将数据细分为每个n位的相等段,然后使用一个补码算术将所有这些段加在一起。总和被补充并附加到原始数据,称为校验和字段。扩展数据通过网络传输。

假设L为数据段的总和,则校验和为?L

The Sender follows the given steps:
  The block unit is divided into k sections, and each of n bits.
  All the k sections are added together by using one's complement to get the sum.
  The sum is complemented and it becomes the checksum field.
  The original data and checksum field are sent across the network.

校验和检查器

校验和在接收方进行验证。接收器将进入的数据细分为每个n位的相等段,并将所有这些段加在一起,然后对该和求和。如果总和的补码为零,则数据被接受,否则数据被拒绝。

The Receiver follows the given steps:
  The block unit is divided into k sections and each of n bits.
  All the k sections are added together by using one's complement algorithm to get the sum.
  The sum is complemented.
  If the result of the sum is zero, then the data is accepted otherwise the data is discarded.

循环冗余校验(CRC)

CRC是用于确定错误的冗余错误技术。

以下是CRC中用于错误检测的步骤:

  • 在CRC技术中,将n 0的字符串附加到数据单元,并且该n个数小于预定数目的位数,即n + 1位的除法。
  • 其次,新扩展的数据通过除数使用一种称为二进制除法的过程进行除法。从该除法生成的余数称为CRC余数。
  • 第三,CRC余数替换原始数据末尾的附加0。这个新生成的单元被发送到接收器。
  • 接收器接收数据,然后接收CRC余数。接收器会将整个单元视为一个单元,然后将其除以用于查找CRC余数的相同除数。

如果该除法的结果为零,则意味着没有错误,并且数据被接受。

如果该除法的结果不为零,则意味着数据包含错误。因此,数据被丢弃。

让我们通过一个例子来理解这个概念:

假设原始数据为11100,除数为1001。

CRC产生器

  • CRC生成器使用模2除法。首先,由于除数的长度为4,所以在数据末尾附加了三个零,我们知道要附加的字符串0s的长度总是比除数的长度小1。
  • 现在,字符串变为11100000,结果字符串除以除数1001。
  • 从二进制除法生成的余数称为CRC余数。 CRC余数的生成值为111。
  • CRC余数将替换数据单元末尾的附加字符串0,最终字符串将是11100111,它将通过网络发送。

CRC检查器

  • CRC检查器的功能类似于CRC生成器。
  • 当在接收端接收到字符串11100111时,CRC检查器将执行模2除法。
  • 字符串除以相同的除数,即1001。
  • 在这种情况下,CRC检查器将生成零的余数。因此,数据被接受。