以太网帧,属于二层数据,分为2种:EthernetII帧和IEEE802.3帧。
其中EthernetII帧格式为:
而IEEE802.3帧格式为:
两种帧的区别----->在于Type / Length字段数值的大小。
Type/Length >=1536(0x0600) ----->EthernetII
Type/Length <=1500(0x05DC) ----->IEEE802.3
最常见的基本都是EthernetII类型的帧,STP协议的帧格式属于IEEE802.3。
下面抓取的帧为ARP请求帧,属于EthernetII型。由于data部分达不到最小的46字节,因此需要进行填充(这个动作是由网卡完成的),使data字段达到46字节。
wireshark(或其他抓包工具)进行抓包可以发现,原本最小数据帧的大小为64字节,但抓到的只有60字节甚至更少。
原因:数据帧是由网卡的driver抓取到并传送到TCP/IP协议栈,而很多网卡的driver都会把帧最后面的4个字节的FCS字段去掉,从而抓包软件无法抓取到这个字段。
另外数据段部分如果太小(不足46字节),网卡会进行自动填充(全0)。在抓取的时候,存在一个优先级的问题,有时可能数据还没有填充或者没完全填充就被抓取了,导致整个数据帧的长度不足60(去掉那4字节的FCS字段)。
C