源内容(英文)
在计算机网络中,校验和和循环冗余校验是两种常见的错误检测方法。校验和是通过加法等算法计算出的数据块值,用作简单的完整性检查。发送方生成校验和并将其附加到数据中。当接收方收到数据时,会再次计算校验和并与接收到的值进行比较以验证数据完整性。CRC利用多项式除法生成更强的校验值,对各种突发错误更为敏感。CRC将除法的余数附加到数据中;反过来,余数有助于检测传输过程中的更改。这两种技术在确保通信协议、文件传输和存储中的数据可靠性方面都至关重要。在本文中,我们将探讨校验和与CRC的区别。
什么是校验和?
校验和是一种简单的错误检测方法,用于验证数据的完整性。它的工作原理是将数据分成较小的块,将其二进制或数值相加,并将该总和——“校验和”——与数据一起存储。当数据发送或检索时,接收系统执行相同的求和计算。如果在传输期间接收到的校验和与新的校验和匹配,则假定数据是正确的;否则,就是错误。
示例 – 如果要传输的数据单元是 10101001 00111001,则在发送方站点和接收方站点使用以下过程。
发送方站点:
10101001 subunit 1
00111001 subunit 2
11100010 sum (using 1s complement)
00011101 checksum (complement of sum)
传输给接收方的数据是:
接收方站点 :
10101001 subunit 1
00111001 subunit 2
00011101 checksum
11111111 sum
00000000 sum‘s complement
Result is zero, it means no error.
校验和的优点
- 简单: 校验和非常容易实现,并且消耗非常少的计算能力。
- 执行快速: 它包含简单的加法,因此校验和操作的执行速度很快。
- 在简单系统中的使用: 由于其简单性,它被应用于基本协议(如 IPv4)中的错误检测。
校验和的缺点
- 精度低: 在某些错误类型(例如错误相互抵消)的情况下,校验和会失效。例如,翻转两个位可能导致相同的总和。
- 有限的错误检测: 它无法检测复杂的多位错误,这使得它对于大数据块或需要高完整性的应用程序来说可靠性较低。
什么是 CRC?
CRC 或 循环冗余校验 是比校验和更复杂的技术。它的工作原理是将被视为多项式的数据除以指定的多项式,留下一个称为 CRC 代码的余数。CRC 代码被附加到数据中。在接收端,执行相同的多项式除法;如果余数与 CRC 代码匹配,则数据有效。它在发送方和接收方都包含 多项式生成器。多项式生成器的类型为 x3+x2+x+1。
示例: (传输中没有错误)
Data word to be sent - 100100
Key - 1101 [ Or generator polynomial x3 + x2 + 1]
Sender Side:
Therefore, the remainder is 001 and hence the encoded
data sent is 100100001.
Receiver Side:
Code word received at the receiver side 100100001
Therefore, the remainder is all zeros. Hence, the
data received has no error.
CRC 的优点
- 更高的灵敏度: CRC 更加灵敏,可以识别更复杂的错误模式,包括突发错误。对于大量数据,它更可靠。
- 用于关键系统: 由于其能力,CRC 更频繁地用于数据通信协议(如 Ethernet、USB)和存储设备中。
- 多种错误情况: 它可以识别多种错误类型模式,例如多位错误以及校验和无法检测的模式。
CRC 的缺点
- 复杂性: 与简单的校验和相比,CRC 需要更多的计算资源来实现和执行。
- 对性能的影响: CRC 算法中使用的除法可能会在某些实时系统中导致数据处理开销。
校验和与CRC的区别
校验和
—
一种简单的基于加法运算的错误检测代码,用于验证数据完整性。
低。仅涉及基本的算术加法或逻辑异或操作。
较弱。容易漏检某些错误,特别是导致数值相互抵消的多位错误。
极低。执行速度快,占用资源少。
适用于简单的协议(如 IPv4 头部校验)和资源受限的简单系统。
基于求和与补码运算。