下图是《TCP/IP详解,卷1:协议》里的一幅图,其要说明的是IEEE802帧和EthernetII帧的封装格式对比。 历史上曾经出现过五种类型的以太网帧封装格式,可以参考本博转载并整理过的一篇博文《以太网的帧》。 该图至少说明了以下问题: 1. 如何区分802帧和EthernetII帧。 《详解》里有一句话:幸运的是, 802定义的有效长度值与以太网的有效类型值无一相同,这样,就可以对两种帧格式进行区分。 从图中可以看出802帧和EthernetII帧在13-14字节处是不同的,802帧此2字节内容是长度,EthernetII帧此处表示封装的数据类型。 EthernetII帧的类型字段取值如下: IPv4: 0x0800 ARP: 0x0806 RARP: 0x0835 PPPoE: 0x8864 802.1Q tag: 0x8100 IPV6: 0x86DD MPLS Label: 0x8847 可以看到,EthernetII帧这个字段的值最小也是0x0800即2048,而802帧此字段表示长度,取值为46-1500,因此从这个字段可以区分出是802帧还是EthernetII帧。 2. 802帧、EthernetII帧数据部分的最小长度和最大长度。 《详解》里有一句话:802.3标准定义的帧和以太网的帧都有最小长度要求。802.3规定数据部分必须至少为38字节,而对于以太网,则要求最少要有46字节。为了保证这一点,必须在不足的空间插入填充(pad)字节。 从图中可以看出802帧长度字段后面是可变长度部分:从46字节到1500字节。如果按最小长度46字节,则出去802.2LLC的3字节和802.2SNAP的5字节,留给数据部分的长度正好是38字节。同理可得出数据部分的最大长度为1500-8=1492字节。 EthernetII帧由于类型后面没有LLC和SNAP,因此其数据长度为最小46字节最大1500字节。 对于ARP及RARP数据包,由于其长度固定为28字节,因此需要在后面加上PAD部分18个字节,才能补满EthernetII包规定的46字节。这在抓包后可以很清楚地看到。 简单总结: 帧类型 最小有效负载 最大有效负载 802帧 38 1492 EthernetII帧 46 1500 3. 以太网帧的最小长度和最大长度。 802帧和EthernetII帧,以及另外的两种以太网帧,其最小长度和最大长度都相同:最小64字节,最大1518字节。 ################################################################## Ethernet II以太网帧格式: 目标MAC 源MAC 类型 数据 FCS 6字节 6字节 2字节 46-1500字节 4字节 最小6+6+2+46+4 = 64,最大6+6+2+1500+4 = 1518。 ################################################################## Ethernet 802.3 SAP帧格式: 目标MAC 源MAC 总长 DSAP SSAP 控制 数据 FCS 6字节 6字节 2字节 1字节 1字节 1字节 43-1497字节 4字节 最小:6+6+2+1+1+1+43+4 = 64,最大:6+6+2+1+1+1+1497+4 = 1518。 ##################################################################
IEEE802帧和EthernetII帧的封装格式对比
最新推荐文章于 2023-04-10 14:06:33 发布