帧结构与MTU
一、帧结构
1、以太网帧结构。
标准以太网帧格式:
EEE802.3帧长度字段值小于等于1500(0x05DC)。
EEE802.3帧格式类似于Ethernet_II帧,只是Ethernet_II帧的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段。
Length字段定义了Data字段包含的字节数。
逻辑链路控制LLC(LogicalLinkControl)由目的服务访问点DSAP(DestinationServiceAccessPoint)、源服务访问点SSAP(SourceServiceAccessPoint)和Control字段组成。
SNAP(Sub-networkAccessProtocol)由机构代码(OrgCode)和类型(Type)字段组成。Orgcode三个字节都为0。Type字段的含义与Ethernet_II帧中的Type字段相同。
IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:
1>.当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据。SAP帧。
2.>当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。ETHERNET_SNAP帧可以用于传输多种协议。SNAP帧。
3>.DSAP和SSAP其他的取值均为纯IEEE802.3帧。()
2.以太网Ⅱ帧格式:
帧间隙:12bytes
帧前同步码:10101010 7个bytes
帧开始界定符:10101011 1个bytes,表示数据帧的开始。
DMAC:目的MAC 6个Bytes
SMAC:源MAC 6个Bytes
Type:类型,确定封装的上层协议 2个Bytes
Data:变长
CRC:4Bytes
3.几种帧模式小结:
Ethernet II以太网帧格式:
目标MAC|源MAC|类型|数据|FCS
6字节|6字节|2字节|46-1500字节|4字节
最小帧长6+6+2+46+4 = 64字节,
最大帧长6+6+2+1500+4 = 1518字节。
(注:ISL封装后可达1548字节,802.1Q封装后可达1522字节)
##################################################################
Ethernet 802.3 raw帧格式 (NOVELL Ethernet 802.3):
目标MAC 源MAC 总长度 0xFFFF 数据 FCS
6字节 6字节 2字节 2字节 44-1498字节 4字节
最小帧长6+6+2+2+44+4 = 64,
最大帧长6+6+2+2+1498+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。
#################################################################
Ethernet 802.3 SNAP帧格式:
目标MAC|源MAC|总长|0xAA|0xAA|0x03|OUI|ID|类型数据|FCS
6字节|6字节|2字节|1字节|1字节|1字节|3字节|2字节|38-1492字节|4字节
最小:6+6+2+1+1+1+3+2+38+4 = 64
最大:6+6+2+1+1+1+3+2+1492+4 = 1518
###################################################################
二.MTU与报文分片
1.相关MTU
链路层MTU,不包含链路层头部长度。
网络层MTU,包含IP头部长度。
传输层MTU,MSS不包含TCP头部长度。
MRU最大接收单元。
2.报文分片
1>.在TCP/IP分层中,数据链路层用MTU来限制所能传输的数据包大小。MTU是指一次传送的数据最大长度,不包括数据链路层数据帧的帧头。当发送的IP数据报的大小超过了MTU时,IP层就需要对数据进行分片,否则数据将无法发送成功。链路层MTU,不包含链路层头部长度。
2>.IP分片发生在IP层,不仅源端主机会进行分片,中间的路由器也有可能分片,因为不同网络的MTU是不一样的。如果传输路径上的某个网络的MTU比源端网络的MTU要小,路由器就可能对IP数据报再次进行分片。而分片数据的重组只会发生在目的端的IP层。这可能会导致数据传输失败。
3>.IP层是没有超时重传机制的。如果IP层对一个数据包进行了分片,只要有一个分片丢失了,只能依赖于传输层进行重传,结果是所有的分片都要重传一遍,这个代价有点大。由此可见,IP分片会大大降低传输层传送数据的成功率,所以要避免IP分片。