DIX Ethernet II帧格式(不包含前导码)
通过仔细学习以太网帧的结构,可以学到很多关于以太网的知识
1)前导码(8B):在帧的前面插入8B,使接收端和发送端进行时钟同步,其中7B是前同步码,1B是帧开始定界符。前同步码都是10101010,帧开始定界符为10101011。最后一字节是告诉接收端'重要的帧开始了'
。
2)目的MAC地址(6B):这个字段包含目的主机的网卡MAC地址或者是广播地址,如果接收端发送接收的帧的目的MAC地址跟自己的MAC一样,或者是FF-FF-FF-FF-FF-FF,就处理该帧,将其向上传到网络层,否则就丢弃。
3)源MAC地址(6B):这个字段就是发送端的网卡MAC地址。
4)类型(2B):指出接收端接收到该帧时,该将帧的载荷数据交给谁处理。该字段允许以太网复用多种网络层协议。如图所示,当类型字段为0x0800时,表示接收端的主机应该将帧的载荷数据交给IPV4协议处理;当类型字段为0x0806时,该交给ARP协议处理。注意:该类型字段和网络层IP数据报中的上层协议字段、运输层报文段中端口号字段相类似,体现了TCP/IP协议栈的分解,因为当发生数据时,多种高层协议可以复用同一个低层协议,所以当接收到数据时,沿着协议栈往上传时,需要分解,需要知道该交给谁处理。
5)数据字段(46~1500B):这个字段是帧的载荷数据。以太网的MTU是1500B,所以这意味了如果载荷数据报超过了1500字节,需要分片才能在链路上传输。数据字段最小为46B,它是64-6-6-2-4=46算出来的,64B是以太网帧的最小长度,减去的18B是帧头和帧尾,当载荷数据小于46B,需要填充到46B。比如ARP报文固定大小为28B,所以需要填充18B,以满足最小数据字段长度的要求。如果是IP数据报小于46B,也需要填充,这种情况下,传到网络层的数据包括IP数据报和填充部分,网络层利用IP数据报中的数据长度字段来去除填充部分。
6)CRC(4B):循环冗余校验序列,目的是为了让接收端对接收到的帧进行差错检验。也叫做帧校验序列(FCS
)