这里是Andrew S. Tanenbaum,计算机网络,第5版,第3章(数据链路层)的摘录,第213页:

当采用多项式代码方法时,发件人和接收器必须在生成多项式 $ g(x)$ 时达成一致。提前。发电机的高位和低位位也必须是1.使用与多项式 $ m $ 比特来计算一些帧的CRC。 “数学集装箱”> $ m(x)$ ,帧必须长于发电机多项式。该想法是以这样的方式将CRC附加到框架的末尾,使得由Checksummed帧表示的多项式由 $ g(x)$ 可分离。当接收方获取CheckSummed帧时,它会尝试将其除以 $ g(x)$ 。如果存在剩下的,则存在传输错误。

我的问题是你如何确定高阶位?以及为什么高阶位和下订单位,两者都必须是一个?从我的理解中,它用于检测爆发错误,但我的理解是真的吗?

有帮助吗?

解决方案

低阶位,也称为最低有效位(LSB),是数字的“one”位。例如,在001101中,LSB是最右边的位00110 1

高阶位,也称为最高有效位(MSB),是数字的“最顶层”位。在我们的示例001101中,它是最左边的位 0 01101。

这两个术语也是比喻(在一般话语中):高阶位是重要的,并且低阶位是不重要的。

现在到你的问题。我们代表了一个消息 $ m_0,\ ldots,m_n $ 由多项式 $ m(x)=sum_i m_i x ^我$ 。给定一个发电机多项式 $ g(x)$ ,这个想法是将消息扩展到新的消息 $ m'( x)$ 满足 $ g(x)\ mid m'(x)$

如果 $ g(x)$ 为零,则始终可能是可能的。实际上, $ g(x)$ 为零iff $ x \ min g(x)$ < / span>。如果是这种情况,那么<跨度类=“math-container”> $ g(x)\ mid m'(x)$ 暗示 $ x \ mid m '(x)$ ,即 $ m_0= 0 $ 。因此,如果 $ g(x)$ 为零,我们只能扩展 $ m $ $ m'$ 如果 $ m_0= 0 $ (甚至这不一定足够的条件)。

如果 $ g(x)$ 为零,则问题是不同的。 $ g(x)\ mid m'(x)$ 的概率 $ m'$ $ 2 ^ { - \ deg g(x)} $ (假设 $ g $ 是不可缩短的,也就是说,不能非凡的因素)。因此,CRC为我们提供 $ \ deg g(x)$ pervice。因此,我们想要 $ g(x)$ 以具有最大程度。这对应于具有一个高阶位。

在实践中, $ g(x)$ 在没有其高阶位的情况下存储:8位CRC多项式真实对应于9位1xxxxxxxx,但存在不需要存储1。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top