我无法理解丑陋的声音术语“循环冗余校验”的概念和工作原理。我正在参加计算机网络大学课程,我已经迷路了。
麻烦的是我对数学的理解非常有限(很久以前在学校学过数学而忘记了大部分数学)我无法得到例如生成多项式到底是什么,多项式需要做什么与CRC并总结 - 所有这些对我来说似乎完全不可理解。
我阅读了关于CRC的wiki条目,但它对我没有帮助,因为我不擅长数学,所有这些符号和数学术语对我来说都像中文。
据我所知,CRC在网络上发送数据时用于错误检测,但从那时起我就丢失了。
任何人都可以帮我解释一下这个概念的简单用语并举例说明吗?
在上一次演讲中,教授开始画出所有这些和零,分开,我不知道什么,我只是盯着和感觉愚蠢。
我会非常感激任何人都可以帮助我理解!
答案 0 :(得分:27)
如果你想让答案变得非常简单,你需要接受一些过度简化,如果你愿意接受它,那么它就是:
数据通过不完美的链接传输 - 在途中可能会发生错误。想象一下,你想确保收到的信息与传输的信息相同而不浪费太多带宽,你会怎么做?
您可以将每条信息传输两次,如果在接收端您看到第一条信息与第二条信息不同,您就知道发生了错误并且您需要再次请求数据 - 但这会非常浪费,它可以有效地减少一半的带宽。
现在,如果您可以计算一些比数据本身小得多但依赖于它的值呢?因此,如果数据沿途发生变化(由于错误),计算出的值将不再“匹配”数据,您就会知道发生了错误。有这样的计算吗?
如何简单划分并将余数作为此值?
说我想传输信息/号码1000。我把它除以所选的数字 - 例如6 ...给我166和剩余的4.我把余数作为我的检查值,这比我实际传输的信息要小得多所以我不是在浪费太多带宽,我传输1,000后跟4.接收器得到它,取数字1,000除以6,如果余数为4则假定没有发生错误。
如果发生了错误并且由于链接上的错误而会收到998而不是1,000 - 它会将其除以6,得到2的余数不匹配4而中提琴它知道发生了错误。这是CRC的基本原则。
当然它有点复杂,因为它除以多项式,但使用余数作为“表示数据的短值”的原则以相同的方式检查错误。
我希望这可以帮助您了解正在发生的事情;)