数据链路层 - CRC除以1 + x是什么意思?

问题描述 投票:0回答:1

有人可以解释一下Tanenbaum计算机网络的这部分CRC代码意味着什么!

如果存在单比特错误,则E(x)= x ^ i,其中i确定哪个比特出错。如果G(x)包含两个或更多项,它将永远不会分成E(x),因此将检测所有单比特错误。

如果存在两个孤立的单比特错误,则E(x)= x ^ i + x ^ j,其中i> j。或者,这可以写成E(x)= x ^ j(x ^(i-j)+ 1)。如果我们假设G(x)不能被x整除,那么检测所有双重误差的充分条件是G(x)不会将x ^ k + 1除以任何k直到i-j的最大值(即,最大帧长度)。已知用于保护长帧的简单低次多项式。例如,对于低于32,768的任何k值,x ^ 15 + x ^ 14 + 1将不分x ^ k + 1。

请用简单的术语发帖,这样我就能理解它了!示例表示赞赏。提前致谢!

networking crc
1个回答
2
投票

消息是一系列位。您可以将任何位序列转换为多项式,只需将每个位的系数设为1,x,x2等,从第一位开始。所以100101变成1 + x3 + x5。

您可以通过将它们的系数视为最简单的有限域GF(2)的成员来使这些多项式变得有用,Ross William's CRC tutorial仅由元素0和1组成。另外还有异或操作和乘法是和操作。

现在,您可以完成高中时使用多项式所做的所有事情,但系数高于GF(2)。因此,添加到x + x2的1 + x变为1 + x2。 1 + x次1 + x变为1 + x2。 (解决它。)

循环冗余校验(CRC)是从这种二进制消息算法的方法导出的,其中转换为多项式的消息被特殊的常数多项式除,其程度是CRC中的位数。然后,该多项式除法的余数的系数是该消息的CRC。

阅读qazxswpoi了解更多信息。 (真正的CRC不只是剩下的,但你会看到。)

© www.soinside.com 2019 - 2024. All rights reserved.