步骤
执行前几篇文章的脚本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字节对齐的 总结得
|