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

Luk*_*ker 2 checksum ethernet data-link-layer crc

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

我考虑过它并认为它可能与如何计算CRC校验和有关,如果帧的结构是头+有效载荷+ crc而不是header + crc + payload,则更容易由硬件执行.

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

srk*_*ing 6

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

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


Sch*_*ler 5

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

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