为什么帧校验序列位于以太网帧的末尾而不是其他位置

时间:2012-11-03 15:04:13

标签: checksum ethernet crc data-link-layer

以太网帧校验序列始终附加到数据链路层中帧的末尾。为什么它被附加到帧的末尾而不是其他地方?

我想到了它并认为它可能与例如计算CRC校验和,如果帧的结构是头+有效载荷+ crc而不是头+ crc +有效载荷,则硬件更容易执行。

CRC执行形式(数据+填充)/除数的XOR除法,对于最终帧,填充由余数替换。接收器然后计算(数据+余数)/除数,并在结果为0时接受该帧。

2 个答案:

答案 0 :(得分:6)

您是对的:将CRC放在帧的末尾可以减少数据包延迟并降低硬件缓冲要求。在发送端,硬件可以立即读取和发送帧的字节。发送器在数据通过时动态计算CRC,然后简单地将CRC附加到帧的尾部。

考虑CRC在以太网报头中某处的替代方案。硬件必须读取并存储整个帧以便计算CRC。这相当于一个大的前瞻操作,并显着增加了传输延迟和硬件成本。接收器的情况也变得更加复杂。

答案 1 :(得分:5)

事实上,这个位置与CRC的内容有很大关系:多项式除法。如果将CRC余数移到有效载荷比特流的前面,则会使某些CRC属性无效,例如突发错误检测。

理解这一点的关键是CRC始终在比特流上运行,而不是字节或有效载荷块。有时您可以找到故障CRC实现,其中位是以little-endian传输的,但实际上CRC是以big-endian计算的(在单个字节内的位排序方面)。