什么是循环冗余检查以及它如何以简单的方式工作(for-dummies风格)?

Boy*_*sov 13 networking data-link-layer crc

我无法理解丑陋的声音术语" 循环冗余校验 " 的概念和工作原理.我正在参加计算机网络大学课程,我已经迷路了.

麻烦的是我对数学的理解非常有限(很久以前在学校学过数学而忘记了大部分数学)我无法得到例如生成多项式到底是什么,多项式与CRC有什么关系总结一下 - 所有这些对我来说似乎完全不可理解.

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

我知道CRC在网络上发送数据时用于错误检测但从那时起我就输了.

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

在上一次讲座中,教授开始画出所有这些和零,分开,我不知道什么,我只是盯着和感觉愚蠢.

我很感激任何人都可以帮助我理解!

Nic*_*man 29

如果你想让答案变得非常简单,你需要接受一些过度简化,如果你愿意接受它,那么它就是:

数据通过不完美的链接传输 - 错误可能在途中发生.想象一下,你想确保收到的信息与传输的信息相同而不浪费太多带宽,你会怎么做?

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

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

如何简单划分并将余数作为此值?

说我想传输一个信息/号码1000.我把它除以所选的数字 - 例如6 ...给我166和剩余的4.我把余数作为我的检查值,这比我实际传输的信息要小得多所以我不是在浪费太多带宽,我传输1,000后跟4.接收器得到它,取数字1000除以6,如果余数为4则假定没有发生错误.

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

当然它稍微复杂一点,因为它除以多项式,但使用余数作为"表示数据的短值"以相同的方式检查错误的原则.

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

  • 这个过于简单的答案可能是实际理解 CRC 概念的一个很好的起点。:) (3认同)