18

我很难理解听起来难听的术语“循环冗余检查”的概念和工作原理。我正在参加关于计算机网络的大学课程,但我已经迷路了。

问题是我对数学的理解非常有限(很久以前在学校学习数学并忘记了大部分)而且我无法理解生成多项式到底是什么,多项式与CRC有什么关系和总结一下——所有这些对我来说似乎完全无法理解。

我阅读了关于 CRC 的 wiki 条目,但它对我没有帮助,因为我不擅长数学,所有这些符号和数学术语对我来说都像是中文。

我知道在网络上发送数据时使用 CRC 进行错误检测,但从那时起我就迷路了。

任何人都可以帮助我用简单的术语解释这个概念并可能举个例子吗?

在上一次讲座中,教授开始画所有这些 1 和 0,除以我不知道是什么,我只是盯着看,感觉很愚蠢。

我将非常感谢任何人可以帮助我理解!

4

1 回答 1

35

如果您希望答案非常简单,则需要接受一些过度简化,如果您愿意接受它,那就是:

数据通过不完善的链接传输 - 途中可能会出现错误。想象一下,您想确保接收到的信息与传输的信息相同,而又不浪费太多带宽,您将如何做到这一点?

您可以将每条信息传输两次,如果在接收端您看到第一个与第二个不同,您就知道发生了错误,您需要再次请求数据 - 但这会非常浪费,它会有效地将您的带宽减半。

现在,如果您可以计算出一些比数据本身小得多但依赖于它的值呢?因此,如果数据沿途发生变化(由于错误),计算值将不再“匹配”数据,您就会知道发生了错误。有这样的计算吗?

简单的除法并取余数作为这个值呢?

假设我要传输信息/数字 1,000。我将它除以选择的数字 - 例如 6 ......这给了我 166 和余数 4。我将余数作为我的校验值,它比我实际传输的信息要小得多,所以我不会浪费带宽太大,我先传输 1,000,然后传输 4。接收器得到它,将数字 1,000 除以 6,如果余数为 4,则假定没有发生错误。

如果发生错误并且由于链接上的错误它将收到 998 而不是 1,000 - 它会将其除以 6,得到与 4 不匹配的 2 的余数,并且 viola 它知道发生了错误。这就是CRC的基本原理。

当然,它有点复杂,因为它除以多项式,但使用余数作为“表示数据的短值”以相同方式检查错误的原理仍然存在。

我希望这可以帮助您了解正在发生的事情;)

于 2012-03-12T23:37:04.083 回答