校验和与循环冗余校验 (CRC) 的区别

源内容(英文)

在计算机网络中,校验和和循环冗余校验是两种常见的错误检测方法。校验和是通过加法等算法计算出的数据块值,用作简单的完整性检查。发送方生成校验和并将其附加到数据中。当接收方收到数据时,会再次计算校验和并与接收到的值进行比较以验证数据完整性。CRC利用多项式除法生成更强的校验值,对各种突发错误更为敏感。CRC将除法的余数附加到数据中;反过来,余数有助于检测传输过程中的更改。这两种技术在确保通信协议、文件传输和存储中的数据可靠性方面都至关重要。在本文中,我们将探讨校验和与CRC的区别。

什么是校验和?

校验和是一种简单的错误检测方法,用于验证数据的完整性。它的工作原理是将数据分成较小的块,将其二进制或数值相加,并将该总和——“校验和”——与数据一起存储。当数据发送或检索时,接收系统执行相同的求和计算。如果在传输期间接收到的校验和与新的校验和匹配,则假定数据是正确的;否则,就是错误。

示例 – 如果要传输的数据单元是 10101001 00111001,则在发送方站点和接收方站点使用以下过程。

发送方站点:

10101001        subunit 1  
00111001        subunit 2        
11100010        sum (using 1s complement)       
00011101        checksum (complement of sum)

传输给接收方的数据是:

!Screenshot-2024-09-20-020658

接收方站点 :

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:

!Screenshot-2024-09-20-021144

Therefore, the remainder is 001 and hence the encoded 
data sent is 100100001.

Receiver Side:
Code word received at the receiver side  100100001

!Screenshot-2024-09-20-021246

Therefore, the remainder is all zeros. Hence, the
data received has no error.

CRC 的优点

  • 更高的灵敏度: CRC 更加灵敏,可以识别更复杂的错误模式,包括突发错误。对于大量数据,它更可靠。
  • 用于关键系统: 由于其能力,CRC 更频繁地用于数据通信协议(如 Ethernet、USB)和存储设备中。
  • 多种错误情况: 它可以识别多种错误类型模式,例如多位错误以及校验和无法检测的模式。

CRC 的缺点

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

校验和与CRC的区别

特性

校验和

循环冗余校验 (CRC) —

定义

一种简单的基于加法运算的错误检测代码,用于验证数据完整性。

一种基于多项式除法的错误检测代码,通过余数来检测数据损坏或更改。 复杂度

低。仅涉及基本的算术加法或逻辑异或操作。

高。涉及多项式除法和模运算。 错误检测能力

较弱。容易漏检某些错误,特别是导致数值相互抵消的多位错误。

较强。能有效检测突发错误和复杂的多位错误模式。 计算开销

极低。执行速度快,占用资源少。

较高。需要更多的CPU周期和计算资源。 应用场景

适用于简单的协议(如 IPv4 头部校验)和资源受限的简单系统。

广泛应用于要求高可靠性的系统,如以太网、USB、存储设备(CD, SATA)等。 数学基础

基于求和与补码运算。

基于生成多项式的模2除法。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/28087.html
点赞
0.00 平均评分 (0% 分数) - 0