IP协议及IP分片

Posted Y0n1an

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IP协议及IP分片相关的知识,希望对你有一定的参考价值。

步骤

执行前几篇文章的脚本3.1,3.2,3.3,创建拓扑,创建虚拟路由,关闭网卡offload
在路由器RA上修改tapRA_RB的MTU为1000byte(Maximum Transmission Unit网络上传送的最大数据包)

ip netns exec RA ifconfig tapRA_RB mtu 1000

在路由器RB上修改tapRB_RA的MTU为1000byte

ip netns exec RB ifconfig tapRB_RA mtu 1000

打开两个终端,分别模拟ns56A和ns57C

ip netns exec ns56A bash
ip netns exec ns57C bash

新起两个个shell,在RB上面启动wireshark,分别在tapRB_56A和tapRB_RA间抓包

ip netns exec RB wireshark &

然后在ns57c中4499端口打开UDP服务程序

nc -lvu 4499

在ns56A中封装1400字节UDPbyte的UDP数据,客户的端口号为40321,然后发送给ns57c

nping --udp -p4499 -g40321 -c1 --data-length 1400 192.168.57.254

停止抓包

IP协议

在tapRB_56A上截获了UDP,ARP,ARP。在UDP中有IP封装,所以只抓获一个数据报

在tapRB_RA上截获了两个IP,有一个是UDP封装


分析tapRB_56A中的UDP

路由器对IP分片

总长度:1400(data)+ 8UDP首部+20ipheaders = 1428 byte

在RB发给另一个路由器RA时却分成了两个,两个标识号一样,也和RB_56A上的一样


可以看到,第一个数据段中没有UDP,也就是data976+20ipherder = 996
允许分片,同时表示有更多分片,片偏移为0
第二个数据段


数据帧只有432个字节

没有更多分片,片偏移原本是007a经过转计算成976,就是之前第一个数据报的data大小
但是之前设置的最大传送数据报大小是1000,这里是996,因为是8字节对齐的
总结得

以上是关于IP协议及IP分片的主要内容,如果未能解决你的问题,请参考以下文章

IP数据报格式

IP分组

IP协议及IP数据包详解

UDP与IP分片

IPv4如何实现IP报文的分片和重组

IP 分片/MTU 与TCP分段/MSS