Networking 巨型以太网帧和超级巨型帧的报头

Networking 巨型以太网帧和超级巨型帧的报头,networking,ethernet,Networking,Ethernet,一些以太网卡可以使用非常大的帧。一种情况是9k帧或巨型帧,另一种情况是超级巨型帧(据我所知,高达64k) 这么大的数据包使用的帧格式是什么 据我所知,对于普通帧,广泛使用两种格式: Preamble Start_byte dest_mac src_mac Ethertype/length Payload CRC Interframe gap 10101010x7 10101011 6 bytes 6 bytes 2 bytes

一些以太网卡可以使用非常大的帧。一种情况是9k帧或巨型帧,另一种情况是超级巨型帧(据我所知,高达64k)

这么大的数据包使用的帧格式是什么

据我所知,对于普通帧,广泛使用两种格式:

Preamble    Start_byte  dest_mac    src_mac     Ethertype/length    Payload     CRC     Interframe gap
10101010x7  10101011    6 bytes     6 bytes     2 bytes         46–1500 bytes   4 bytes 12 bytes
在一种情况下,ethertype用于长度,而在第二种情况下,ethertype用于数据包类型。如果该字段小于0x0600(十进制1536字节),则为长度;如果>=0x0600-它是一种类型


因此,似乎不可能将9000存储在该字段中作为长度。如何存储巨型帧和超级巨型帧的长度

用于jumbos的格式是相同的。尽管有此描述,Ethertype字段通常不用于存储长度。通常在Ethertype字段中,您不会看到长度;您将看到一个类型。IANA在此处指定了类型:

通常,您会从表中看到以下类型之一:

Ethertype         Exp. Ethernet   Description           References
----------------  --------------  --------------------  ----------
  2054   0806        -      -     ARP                       [IANA]
  2048   0800        513   1001   Internet IP (IPv4)        [IANA]
         86DD                     IPv6                      [IANA]
这有两个原因:

  • 发送数据包的硬件不依赖于长度字段来知道长度
  • 一些数据包(例如)具有已知的大小(至少对于硬件/协议地址长度的已知组合,例如通常使用的以太网/IP)。IPv4/IPv6数据包在其自己的报头中有一个长度字段

因此,只有当L3协议具有长度字段或具有固定大小时,才可以使用巨型帧?@osgx,没有任何东西可以阻止您在L1创建大于Ethertype/length字段中指定的以太网帧。但网络堆栈不一定会将其解释为一个大数据包。因此,基本上,是的,您需要使用支持大数据包的L3协议,例如IPv4/IPv6。(ARP会很小。)一个简单的方法是,假设您正确设置了接口MTU(并且您的网络驱动程序配置为用于大帧),将
ping
packetsize
参数一起使用。