错误检测码-校验和


在网络系统中,当传输数据时,干扰、噪声和其他干扰因素很可能会叠加到传输信号上,从而导致数据损坏,并可能导致诸如误解、错误解释等严重问题。因此,确保传输数据的可靠性和无噪声性非常重要。

为了避免上述关键问题,存在一些称为错误检测码的技术,例如 CRC(循环冗余校验)和校验和,我们将在本文中讨论这些技术。这些错误检测码被添加到数据包的头部,发送方和接收方进行一些计算以检查数据包是否没有错误。校验和是最流行的代码之一,我们将在本文中进行讨论。

校验和

校验和是为传输数据计算的一个值,用于检测数据包中的错误。校验和的值是通过将数据包中的所有字节相加计算得到的,然后对结果进行求补。求补后的值就是校验和,在传输之前将其添加到数据中。

当数据在接收端接收时,再次重新计算校验和并求补,然后与校验和头部中的校验和值进行匹配。如果匹配,则数据被认为是准确的、无噪声的、无错误的。如果不匹配,则数据已损坏,添加了一些噪声或发生了干扰。

让我们通过一个例子来理解

假设,发送方想要发送以下数据包:10101011 00110011 11001100,这里我用空格分隔了每个字节,以便于理解。

为以上数据包计算校验和

步骤 1 - 将数据包的所有字节相加

10101011 + 00110011 + 11001100 = 0110101001

如果我们需要对 0110101001 进行求补,我们将得到 1001010110

并将此求补后的值放入校验和头部字段。

步骤 2 - 接收方也对数据包执行相同的步骤并获得求补后的校验和,然后将其与头部中存在的校验和值进行匹配,如果匹配,则数据包中没有错误。

如果不匹配,则在数据包传输过程中发生了一些错误。并且此类数据包需要重新传输。

使用校验和的优缺点

校验和代码有很多优点和缺点。下面列出了一些校验和的优点。

优点

  • 易于实现 - 它非常易于实现,并且使用非常少的硬件和软件资源。

  • 高效 - 校验和代码可以检测数字通信中最常见的错误。

  • 快速 - 校验和代码可以非常快速地计算,因为这里没有太多操作,这就是为什么它适合实时数据包传输的原因。

  • 低延迟 - 正如我们所讨论的,它不会使用很多资源并且计算量很少,因此延迟在这里非常低。

缺点

  • 有限的错误检测能力 - 它用途广泛且易于实现,复杂性较低,但主要问题是它仅限于非常常见的错误,换句话说,它可以检测非常常见的错误。

  • 有限的错误校正能力 - 校验和代码可以检测数据包中的错误,但不能纠正它们。因此,它只是一种错误检测技术。

  • 容易受到错误的影响 - 校验和代码容易受到错误的影响,尤其是在同一数据包中发生多个错误的情况下。

  • 对数据包大小敏感 - 校验和代码对数据包的长度敏感,如果数据包的大小太小,则很有可能错过错误或无法检测到错误。而当数据包大小较大时,校验和的开销会增加。因此,必须仔细选择数据包大小以获得高效的性能。

总的来说,校验和代码对于传输中的错误检测方法来说是不错的选择,但我们需要注意适当的数据包长度,以获得最佳结果。

结论

使用诸如 CRC(循环冗余校验)和校验和之类的错误检测码对于确保传输数据的可靠性和无错误、无噪声性非常重要。校验和的简单性和效率使其成为数字通信系统中的热门选择。但是,它也有一些局限性,例如有限的错误检测和纠正能力、容易受到错误的影响以及对数据包大小的敏感性,正如我们所讨论的那样。

尽管存在许多缺点,但校验和仍然是数字通信中一种有效的错误检测技术。例如实时场景以及广泛用于文件传输和数据库管理等应用。为了最大限度地提高其有效性,务必仔细选择数据包大小,以确保正确实现校验和。总的来说,校验和是确保传输数据完整性和准确性的重要技术。

更新于: 2023年4月26日

2K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.