当通过无线连接接收原始以太网数据包时,在哪里计算以太网校验和,在哪里处理错误?
是由无线堆栈处理,还是由上层处理?
发布于 2009-12-09 00:30:23
校验和可以在various places中执行。最新的以太网卡从网络堆栈卸载校验和。我不得不禁用硬件校验和,以使网络取证更容易。这显然是有意义的,因为如果没有此功能,硬件将始终静默地丢弃数据包。
发布于 2009-12-09 00:19:42
通常,以太网级FCS (帧校验序列)在硬件MAC (介质访问控制器)中处理。请注意,我们在这里讨论的是,而不仅仅是校验和(在以太网帧级别上没有“校验和”)。
如果检测到FCS不匹配,则很可能会在HW MAC级别将其丢弃:然后将更新统计计数器。
换句话说,用一个不可用的框架“打扰”软件堆栈是没有用的。
发布于 2009-12-09 16:51:04
正如其他发帖者所说,FCS通常由网卡本身或驱动程序检查。但是,在读取原始以太网帧的情况下,我认为这完全取决于驱动程序。例如,在可以设置为“监控”或“混杂”模式的WiFi NIC中,您通常不希望它们丢弃具有坏FCS的帧,因为这可能表示您正在查找的错误。
一个数据点:在监控模式下,Intel 4965AGN Linux驱动程序将所有捕获的数据包中的FCS字段设置为0。如果您运行Wireshark,您可以看到它计算了预期的FCS,并报告0字段无效。这是否意味着它会丢弃MAC中具有不良FCS的帧,或者不幸的是,这些帧是否也被丢弃尚不清楚。
因此,如果原始问题是“捕获原始数据包时,我是否必须自己检查FCS”,4965AGN案例中的答案是“您不能”,如果您从NIC获得真正的FCS,则答案可能是“是”。
https://stackoverflow.com/questions/1867992
复制相似问题