实验环境:GNS3 0.7.4+WireShark 1.4.6

实验拓扑及抓包下载: http://down.51cto.com/data/208832

 

R1配置:

R1#conf t

Enter configuration commands, one per line.  End with CNTL/Z.

R1(config)#int s0/0

R1(config-if)#ip add 12.1.1.1 255.255.255.0

R1(config-if)#no shut

R1(config-if)#exit

R1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

R1(config)#end

R2配置:

R2>en

R2#conf t

Enter configuration commands, one per line.  End with CNTL/Z.

R2(config)#int s0/0

R2(config-if)#ip add 12.1.1.2 255.255.255.0

R2(config-if)#no shut

R2(config-if)#int s0/1

R2(config-if)#ip add 23.1.1.2 255.255.255.0

R2(config-if)#no shut

R2(config)#end

R2上修改默认MTU大小,注意是R1-->R3的出接口,s0/1

R2(config)#int s0/1

R2(config-if)#ip mtu 200

R2(config-if)#end

R2#

R3配置:

R3>en

R3#conf t

Enter configuration commands, one per line.  End with CNTL/Z.

R3(config)#int s0/1

R3(config-if)#ip add 23.1.1.3 255.255.255.0

R3(config-if)#no shut

R3(config-if)#exit

R3(config)#ip route 0.0.0.0 0.0.0.0 23.1.1.2

R3(config)#end

R2---->R3的线路上启动抓包

 

 

R1Ping  路由器R3s0/1接口  23.1.1.3

命令如下:

R1#ping ip

Target IP address: 23.1.1.3

Repeat count [5]: 1

Datagram size [100]: 800

Timeout in seconds [2]: 

Extended commands [n]: 

Sweep range of sizes [n]: 

Type escape sequence to abort.

Sending 1, 800-byte ICMP Echos to 23.1.1.3, timeout is 2 seconds:

!

Success rate is 100 percent (1/1), round-trip min/avg/max = 124/124/124 ms

R1#

使用wireshark软件捕获的分片包。。。

 

 

由捕获的包分析可知,数据包被分成了5片,而且可看到片偏移字段分别为:0,176,352,528704这里要注意了,在路由器里设置的命令,ip mtu 200设定的分片大小应该是200byte,为何到了这里改变了呢!?原因在于,IP协议里规定,在分片时,除最后一片外,其他每一片的数据部分(除了IP首部的其它部分)必须是8字节的整数倍。如果是这样,最大的数据包长度就是(200-20)/8取整=22;这样,22*8=176这个就是片偏移。因此可得到每个数据包的偏移字段分别为:0   176   176+176  176+176+176  176+176+176+176.

可看到发送的总数据包是780byte(不包含IP首部).

由些能够得到一个结论,PING命令中的数据包大小,是包括IP首部在内的总长度。

(也可查看数据包中DF位的置位情况,请自行查看。)