Luk*_*ker 2 checksum ethernet data-link-layer crc
以太网帧校验序列始终附加到数据链路层中帧的末尾.为什么它被附加到帧的末尾而不是其他地方?
我考虑过它并认为它可能与如何计算CRC校验和有关,如果帧的结构是头+有效载荷+ crc而不是header + crc + payload,则更容易由硬件执行.
CRC执行形式(数据+填充)/除数的XOR除法,对于最终帧,填充由余数替换.接收器然后计算(数据+余数)/除数,并在结果为0时接受帧.
您是对的:将CRC放在帧的末尾可以减少数据包延迟并降低硬件缓冲要求.在发送端,硬件可以立即读取和发送帧的字节.当数据通过时,发送器在运行中计算CRC,然后简单地将CRC附加到帧的尾部.
考虑CRC在以太网头中某处出现的替代方案.硬件必须读取并存储整个帧以便计算CRC.这相当于一个大的前瞻操作,并显着增加了传输延迟和硬件成本.接收器的情况也变得更加复杂.
事实上,这个位置与CRC的内容有很大关系:多项式除法.如果将CRC余数移到有效载荷比特流的前端,则会使某些CRC属性无效,例如突发错误检测.
理解这一点的关键是,CRC总是在比特流上运行,而不是在字节或有效载荷块上运行.有时您可以找到故障CRC实现,其中位以little-endian传输,但实际上CRC是以big-endian计算的(在单个字节内的位排序方面).
| 归档时间: |
|
| 查看次数: |
10199 次 |
| 最近记录: |