网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

校验和与CRC之间的区别

更新时间:2026年03月27日   作者:spoto   标签(Tag):

在计算机网络领域,校验和以及循环冗余校验都是用于检测错误的技术。 这个校验和是通过诸如加法之类的算法计算出来的数据块的值。它被用作一种简单的完整性检查方式。 发送方会计算出校验和,然后将其添加到数据中。 当接收方接收到数据后,它会再次计算校验和,并将其与接收到的数据值进行比较,以确保数据的完整性。 CRC算法利用多项式除法来生成更强的校验值,这种校验值对于各种错误具有更高的检测能力。 CRC算法会将除法运算的余数添加到数据中;作为回报,这个余数有助于检测传输过程中的任何变化或错误。 这两种技术在确保数据可靠性方面都发挥着重要作用,无论是在通信协议、文件传输还是数据存储过程中。在本文中,我们将探讨“校验和”与“CRC”之间的区别。

什么是Checksum?

A 校验和这是一种简单的错误检测方法,用于验证数据的完整性。其工作原理是将数据拆分成较小的块,然后将这些块的二进制或数值相加,得到“校验和”。这个校验和会与数据一起被存储起来。当数据被发送或接收时,接收系统会进行相同的计算。如果传输过程中接收到的校验和与新的校验和一致,那么就可以认为数据是正确的;否则,就存在错误。

例如,如果要传输的数据单元为10101001 00111001,那么在发送方和接收方都需遵循以下流程来进行数据传输。

发送方网站:

10101001       子单元1  00111001       子单元2  11100010       总和(使用1的补码表示)  00011101       校验和(总和的补码)

传输给接收方的数据为:

接收站点:

10101001       子单元1  00111001       子单元2  00011101       校验和  11111111          总和  00000000         总和的补码  如果结果为零,则表示没有发生错误。

校验和的优势

  • 很简单:计算校验和的过程非常容易实现,而且所需的计算资源也非常少。
  • 快速执行:该算法包含简单的加法运算,因此校验和运算的执行过程非常迅速。
  • 在简单系统中使用:由于其结构简单,因此被应用于IPv4等基础协议中的错误检测功能。

校验和存在的缺点

  • 低精度:在某些错误类型的情况下,校验和会失败。因为在这些情况下,各种错误会相互抵消。例如,翻转两位二进制位后,最终的校验和仍然可能是相同的。
  • 有限的错误检测能力:这种检测方法无法处理复杂或多位数的错误,因此对于需要处理大量数据的场景,或者那些需要高度可靠性的应用场景来说,其可靠性较低。

CRC到底是什么?

CRC或循环冗余校验它比校验和更为复杂。其工作原理是将数据视为一个多项式,然后用某个特定的多项式来除以该多项式,最终得到的余数被称为CRC码。这个CRC码被附加在数据中。在接收端,同样进行多项式除法运算;如果得到的余数与CRC码相符,那么这些数据就是有效的。多项式生成器在发送方和接收方双方都是如此。该多项式生成器的类型属于x型。3+x2+x+1。

示例:(传输过程中没有出现错误)

要发送的数据字——100100  密钥——1101 [或者生成多项式 x3 + x2 + 1]
因此,剩下的数字是001,所以发送过来的编码数据就是100100001。接收端:在接收端接收到的编码数据为100100001。
因此,剩下的数字都是0。所以,接收到的数据没有错误。

CRC的优点

  • 更高的灵敏度:CRC具有更高的灵敏度,能够识别更复杂的错误模式,包括突发错误。对于大量数据来说,它的可靠性要更高。
  • 在Crucial系统中被广泛应用:由于CRC具有出色的性能,因此它在数据通信协议(如以太网、USB)以及存储设备中被频繁使用。
  • 存在多种错误情况:它能够识别出多种类型的错误模式,比如多个比特错误,以及那些校验和无法检测到的错误模式。

CRC的缺点

  • 复杂性:与简单的校验和相比,CRC算法在实现和执行过程中需要更多的计算资源。
  • 对性能的影响:CRC算法中使用的划分方式,可能会在一些实时系统中导致数据处理过程中的额外开销。

校验和与CRC之间的区别

功能/特点

校验和

循环冗余校验(CRC)

定义

错误检测方法

准确性

复杂性

错误检测能力

计算时间

间接费用/管理费用

应用场景/使用案例

可靠性

性能影响

这是一种简单的错误检测方法,它通过将各个数据块相加,然后根据这个总和来验证数据的完整性。

一种更先进的错误检测方法,该方法利用多项式除法来计算余数,从而进行错误检测。

简单的数据值相加

将数据视为二进制数或多项式来进行多项式除法运算

准确率较低;可能会漏掉一些错误,尤其是当这些错误相互抵消时。

精度非常高;能够检测大多数错误模式,包括突发错误和多位错误。

计算简单,所需资源极少。

更为复杂;涉及数学运算(多项式除法)

能够检测简单的、仅一个比特的错误。

能够检测复杂的错误,包括突发错误和多位错误。

由于结构简单,因此计算速度更快。

由于除法操作较为复杂,因此计算速度较慢。

最小化的数据处理负担/低开销

由于需要额外的CRC编码,因此运营成本会略微增加。

用于简单的协议中(例如,IPv4、UDP)

用于关键系统中(例如:以太网、USB、硬盘驱动器、无线通信等)

可靠性较低,尤其是对于较大的数据集或存在复杂错误的情况时。

在检测各种错误方面具有极高的可靠性。

低资源消耗型,非常适合资源有限的简单系统使用。

更高水平,尤其是在那些需要处理大量数据的实时系统中。

结论

用于数据传输或存储过程中错误检测的校验和以及CRC算法的复杂性和准确性各不相同。校验和相对简单且执行速度较快,适用于那些对错误检测要求不高的系统。而CRC算法则具有更高的准确性,因此非常适合那些需要严格保证数据完整性的复杂数据通信系统。

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料