你没有指定哪个操作系统,但我至少可以为Linux发言:
它可能在你的内核,网卡和驱动程序以及ethtool版本。
我们需要告诉驱动程序/硬件做两件事情,通常不这样做:1)将FCS字段传递给网络堆栈。 (通常在传递之前被截断)2)不丢弃具有不良FCS字段的分组,而是按原样传递它们
有两个ethtool选项来实现每个这些:
ethtool -K eth0 rx-fcs on #1 above: give us the FCS field ethtool -K eth0 rx-all on #2 above: even receive bad packets
有了这些,我可以使用wireshark或tcpdump来查看FCS字段,即使它们不正确。 (在我的情况下,我有一些网络设备,用一个准确的时间戳即时替换校验和 – 这会导致数据包出现“坏”,我使用上述恢复)
不是所有的卡都能实现这个! 他们可能有上述ethtool选项“固定”或不响应。
在1G速度下,我看到e1000卡运行良好。 在10G的时候,我还没有找到一个可以做到这一点的网卡,而且必须依靠更复杂的数据采集卡。
再次,我不知道最低内核/ ethtool版本的要求是什么,但我记得要升级一个CentOS服务器,以使其工作。
我也知道,r8169和e1000驱动程序/卡可以做到这一点,但不能说任何其他组合。
另外请注意,您将无法在发送它们的计算机上捕获传出的FCS值,因为它们在进程中添加得相当晚(可能已卸载到卡本身),因此pcap无法看到。
在Linux 3.10.11内核上,使用ethtool 3.10ÿ