【问题标题】:Why is the Frame Check Sequence at the end of an Ethernet frame and not somewhere else为什么帧检查序列位于以太网帧的末尾而不是其他位置
【发布时间】:2012-11-03 15:04:13
【问题描述】:

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

我想了想,认为这可能与例如如何做有关。如果帧的结构是 header+payload+crc 而不是 header+crc+payload,则计算 CRC 校验和,并且更容易由硬件执行。

CRC 执行(数据+填充)/除数形式的异或除法,对于最后一帧,填充被余数替换。然后接收方计算(data+remainder)/divisor,如果结果为0则接受该帧。

【问题讨论】:

    标签: checksum ethernet crc data-link-layer


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答。避免缓冲很有意义。
    • FRC是由硬件(网卡)计算的吗?
    • @ransh,在硬件中是的(CRC 不是 FRC)
    【解决方案2】:

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

    理解这一点的关键是,CRC 总是在比特流上运行,而不是字节或有效负载块。有时您会发现错误的 CRC 实现,其中位是小端传输的,但实际上 CRC 是大端计算的(根据单个字节内的位顺序)。

    【讨论】:

    • 也感谢您的回答。可惜我不能接受多个答案。
    猜你喜欢
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    相关资源
    最近更新 更多