欢迎来到天天文库
浏览记录
ID:11868443
大小:799.50 KB
页数:9页
时间:2018-07-14
《mtu、ip mtu 与frame size的关系以及ip packet分片》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MTU、IPMTU与framesize的关系以及IPPacket分片Author:彭进From:www.2008pj.cnPublishedTime:2009-12-0800:00:00.0Reads:604网络的通信过程为上层数据被一层一层封装后到达数据链路层,被封装成帧,然后在物理链路上被传输。通常我们说以太网的MTU为1500bytes,MTU和Framesize的关系,应该分两种情况来理解。一是:当数据没有被分片时;二是:当数据被分片时;下文将会以实验来验证这个结论。为了研究framesiz
2、e,我们先回忆一下帧的格式。按不同链路的封装类型有多种帧格式。如以太网帧格式,串行链路帧格式……不同帧格式的帧头内容和大小不一。下面以Cisco的串行链路环境来说明。Cisco串行链路默认封装方式为Cisco专有的HDLC(High-LevelDataLinkControlprotocol)。格式如下:AddressControlProtocolCodeInformationFrameCheckSequence(FCS)Flag1byte1byte 2byte MTUsize2
3、byte1byte1、Address(1字节)字段用来表示该帧中包含的packet类型,0x0F表示unicastpacket,0x8F表示broadcast packet。2、Control(1字节)字段一般设置为0x00。3、ProtocolCode(2字节)字段用来表示上层协议类型,0X0800表示IPv4。4、Information(MTUsize)即有效数据。5、FCS(2字节)字段表示校验和。一般不需要。6、Flag(1字节)字段用来标记帧。一般不需要。所以,1字节Address+1字节
4、Control+2字节ProtocolCode=4字节HDLC帧。下图是默认情况下,即没有在serial接口上修改MTU的情况下,在CISCO路由器上使用命令Router#ping10.1.1.2size100后,在串行链路上抓到的数据: (图1)我们来分析一下:1处显示该帧的大小为104bytes,2处虽没显示HDLC头的大小信息,但我们之前已将C
5、iscoHDLC分析过,大小为4bytes,3处指IP头部20bytes4处显示IP包共100bytes(含报头和数据)5处显示ICMP用户数据大小72字节6处为ICMP报头信息,大小为8bytes(ICMP报文格式这里不详细介绍) 分析结果:data(72byte)+ICMPheader(8bytes)+IPheader(20bytes)+HDCLheader(4bytes)=Framesize(104bytes)data(72byte)+ICMPheader(8bytes)+IPheader(2
6、0bytes)=IP Packet(100bytes) 也就是说Framesize(104bytes)减去HDLCheader(4bytes)刚好等于IP Packet(100bytes) 。也刚好等于命令ping10.1.1.2size100中“100”。所以,我们可以得到如下结论:ping命令中指定size大小即为总共要发送的IP包大小。 现在我们在serial接口上修改MTU大小为1000byte,用ping命令发送2000byte大小的IP包来试验。命令:Router(conf
7、ig-if)#MTU1000Router#ping10.1.1.2size2000同样在串行链路上用wireshark抓包得到如图数据: (图2)发现2000bytes的IPPacket被分片成3个小的帧来传输。 我们再来看看第83帧的内容:
8、 (图3) 从图3可以看出该帧大小为1000bytes,减去4bytesHDCLheader和20bytesIPHeader剩下976bytes为用户数据。Flags:0x02显示该帧只有还有后续分片帧,偏移量Fragmentoffset:0,RessembledIPinframe:85显示该帧在第85帧中被重新组装。 我们再来看看第84帧的内容:
此文档下载收益归作者所有