对我的网络接口进行快速WireShark扫描可以发现一串小于64字节的以太网数据包。我知道WireShark去掉了后面的4字节CRC,但我仍然看到一些带有42个字节的IGMPv3数据包,一些带有54个字节的IGMPv3,还有一些TCP54个字节。
是否尊重64字节最小以太网数据包规则?不尊重规则的后果是什么?
发布于 2013-05-24 19:05:44
如果您仔细观察,您将注意到,所有短于最小帧大小(60字节没有FCS)的帧都是由您的机器传输的帧。接收到的帧应该在没有FCS的情况下填充到60个字节;它们包含Wireshark“Packet”窗口中“以太网II”下的“填充”字段,该字段对应于这些额外的字节。
至少在Linux中,所有小于60字节的传输帧都应该在传输之前由网络驱动程序(甚至NIC硬件)自动填充,但是Wireshark没有显示这一点,因为帧在添加填充之前被复制到Wireshark使用的数据包套接字上。
最初,指定最小帧大小是为了使用于共享以太网介质的CSMA/CD协议能够正常工作--可靠的冲突检测要求,发送帧(与帧的大小以及所有报头和前导成比例)所需的时间必须大于任意两个站之间的信号传播时间。在大多数情况下,当前以太网实际上不是共享介质(具有全双工链路的交换机不执行冲突检测)。技术上,在全双工链路上执行最小帧大小并不是必需的,但出于兼容性的原因,仍然需要这样做。
由于Gigabit以太网64字节最小帧大小在使用实际电缆长度时已不足以检测冲突,而简单地增加最小帧大小将导致严重的带宽浪费,因此对半双工千兆位链路引入了载波延伸机制(更多信息请参见这里 )。载波扩展是在网络硬件中实现的,在软件中是不可见的。理论上,使用载波扩展使得对半双工链路强制执行最小帧大小是可选的,而对于全双工链路,既不需要载波扩展也不需要最小帧大小。然而,64字节的最小帧大小仍然保持不变,可能是为了与预期的旧软件兼容。
发布于 2013-05-24 16:49:23
恐怕这是“看情况而定”的问题之一
是否尊重64字节最小以太网数据包规则?
关于什么的?在NIC等之间切换?
不尊重规则的后果是什么?
再说一遍什么和怎么做?
通常情况下,最坏的情况是数据包被丢弃,仅此而已,它不会让您的数据中心着火(尽管不要引用我的话,无论如何也不会在任何法律文档中引用:)。如果它击中一个路由器,它可能会被重新设计,无论如何,在出口和交换机,它会通过或不漂亮的二进制真的。
发布于 2018-04-04 22:39:18
我还注意到,当wireshark在发送数据包的系统上运行时,它可以显示为少于60个字节。但是,如果您捕获接收系统上的特定数据包,则它将被填充为60个字节,带有零。
https://serverfault.com/questions/510657
复制相似问题