代码之家  ›  专栏  ›  技术社区  ›  Kai

无线堆栈中的以太网校验和检查

  •  1
  • Kai  · 技术社区  · 15 年前

    当通过无线连接接收原始以太网数据包时,在哪里计算以太网校验和,在哪里处理错误?

    无线堆栈是处理这个问题,还是在上层处理?

    4 回复  |  直到 11 年前
        1
  •  1
  •   Hassan Syed    15 年前

    校验和可在 various places . 最近的 以太网卡从网络堆栈中卸载校验和。我不得不禁用硬件校验和,以使网络取证更容易。这应该有明显的意义,因为如果没有这个功能,硬件将总是悄悄地丢弃数据包。

        2
  •  1
  •   jldupont    15 年前

    通常,以太网级的FCS(帧检查序列)在硬件MAC(媒体访问控制器)中处理。 注意,这里我们讨论的是CRC,而不仅仅是校验和。 (以太网帧级别没有“校验和”)。

    如果检测到一个“未来作战系统”不匹配,它很可能会在硬件MAC级别被丢弃:然后会更新一个统计计数器。

    换句话说,用一个不可用的框架“干扰”软件栈是没有用的。

        3
  •  0
  •   Per Knytt    15 年前

    正如其他海报上所说,“未来作战系统”通常由国家情报中心检查。 自己或司机。但是,如果你读到原始的 以太网帧我认为它完全取决于驱动程序。为了 例如,在wifi网卡中,可以设置为“监视器”或“混杂”。 你通常不希望他们丢弃带有坏的未来作战系统的帧,因为 这可能意味着你正在寻找的错误。

    一个数据点:Intel 4965AGN Linux驱动程序将“未来作战系统”字段设置为 在监视模式下捕获到0的数据包。如果你运行wireshark,你可以 确保它计算出预期的未来作战系统,并抱怨0-场 无效。这意味着它会丢弃带有坏未来作战系统的帧 不幸的是,在苹果电脑里,或者那些也被忽略了,还不清楚。

    因此,如果最初的问题是“我必须亲自检查未来作战系统吗?” 当捕获原始数据包时,“4965agn案例中的答案是 “你不能”,如果你从 NIC。

        4
  •  0
  •   WhirlWind    15 年前

    大多数网络硬件允许您在硬件中设置一个选项“存储坏数据包”。这允许您查看以太网CRC失败的数据包。如果您将一个坏的以太网帧传递给堆栈,那么很可能会因为一个坏的上层校验和而被拒绝。堆栈不检查以太网CRC;这留给NIC,软件中的CRC计算非常耗时。

    请记住,堆叠的网络协议通常计算堆叠中不同点的校验和。TCP通常会计算网络层的CRC、IP层的IP头校验和以及TCP层的TCP校验和。应用程序还可以验证数据的完整性。