以太网/IGMP 帧的最小可能大小

网络工程 以太网 IPv4 第 2 层 包分析 igmp
2022-02-22 15:29:09

我正在编写一个需要忽略大小小于以太网/IGMP 帧的最小可能大小的帧的应用程序。我进行了广泛的研究,发现了以下信息:

  • 以太网帧的最小大小为 64 字节:

    标头 + 有效负载 + FCS(帧校验序列)= 14 + 46 + 4 = 64 字节

  • 如果以太网帧的有效负载小于 46 字节,则将其填充到 46 字节(以便可以可靠地检测到冲突)。

现在,使用 Wireshark 查看我网络中的帧,我注意到它们中的大多数大小为 60 字节,而一些 IGMPv2 数据包的大小为 46 字节。这两个发现让我感到惊讶,因为:

  1. 我预计大多数帧的大小为 64 字节。(在调查了一些之后,我发现 Wireshark 在显示的大小中不包含 4 字节 FCS,这解释了为什么大多数帧的大小为 60 字节)。

  2. 我没想到会看到大小小于 64 字节的帧(如果我们根据 Wireshark 显示的内容来讨论,则为 60 字节)。

所以我的问题与第二点有关,它仍未解决:IGMP 数据包的格式与以太网帧的格式是否不同?如果是这样,IGMP 数据包的最小可能大小是多少?

3个回答

以太网帧是第 2 层 PDU - 如您所述,最小 64 个字节,最大 1518 个字节(+4 个字节,带有 802.1Q 标签)。该帧有 18 字节的开销,因此它传输 46 到 1500 字节的第 3 层有效负载。

IGMP 是 IP 多播,位于第 3 层。本质上,它使用具有多播目标地址的标准 IP 数据包。对于传输,IP 数据包被封装在第 2 层帧中,例如在以太网中。

如果以太网有效负载很短,则会对其进行填充。

IGMP 没有什么特别之处,这是一个带有 1 字节有效负载“x”的 UDP 数据包。您会看到 IP 数据包的长度为 43:这将在最小大小的以太帧中传输。

注意 29 字节的有线 IP 数据包上的 60 字节 + 14 = 43 UDP 有效负载在 0x002a 处为 0x78,接下来是填充。

的修剪输出tshark -VxTshark 将填充显示为“预告片”,即在此以太网帧中发送的 IP 数据包之后的垃圾。

Frame 1: 60 bytes on wire (480 bits), 60 bytes captured (480 bits)
Ethernet II, Src: 34:02:86:9f:e2:dc (34:02:86:9f:e2:dc), Dst: 90:fb:a6:30:98:3e (90:fb:a6:30:98:3e)
    Type: IP (0x0800)
    Trailer: e068ea1810429e75000000000000000000
Internet Protocol Version 4, Src: 192.168.0.28 (192.168.0.28), Dst: 192.168.0.32 (192.168.0.32)
    Total Length: 29
    Protocol: UDP (17)
User Datagram Protocol, Src Port: 35219 (35219), Dst Port: 32767 (32767)
    Length: 9
Data (1 byte)
    Data: 78
    [Length: 1]

0000  90 fb a6 30 98 3e 34 02 86 9f e2 dc 08 00 45 00   ...0.>4.......E.
0010  00 1d ca 5c 40 00 40 11 ee e6 c0 a8 00 1c c0 a8   ...\@.@.........
0020  00 20 89 93 7f ff 00 09 fc bb 78 e0 68 ea 18 10   . ........x.h...
0030  42 9e 75 00 00 00 00 00 00 00 00 00               B.u.........

由于您所说的确切原因,我们看到 60 个字节:删除了 4 字节 FCS 的最小以太网帧为 64 个字节。

乔纳森。

不要混淆网络层。以太网帧是第 2 层帧,而 IGMP 是一种协议,其消息是第 3 层 IPv4 数据包的有效负载,而后者又是以太网帧的有效负载。