IP分片 ping包

通常ping命令发送的icmp包的大小是一定的,比较小。

如果要使发送的包在发送过程中分片,要使用参数加大ip包的负载,也就是icmp包的大小。

-l 选项可以设置IP包的负载大小,后面的数值设置icmp包数据区域的大小。(不是icmp包的大小)

-f 选项设置ip包头的DF选项(不进行分片)

 

发包:

设置icmp包的大小为1473B

 

Wireshark抓包:

 

24 25 28 29 为一组icmp回显请求/应答包。

24 25号是对原始数据包(20B + 8B + 1473B)的分片

24号包:

偏移量为0,说明是第一个分片。

总长度为1514B包括(14B以太网帧头 + 20BIP包头 + 1480B的数据), 此时的IP包长为20B+1480B = 1500B,刚好为以太网MTU的大小。

25号包:

长度明明是35B,但是这里有一个icmp包的包头,还有1473B的数据,而且刚刚24号包里好像也没有看到ICMP的包头,难道是分片后把icmp的包头放到了第二个包里发送?

对25号包里的icmp包头的出现应该是wireshark自动分析的结果,这个包里其实是没有这个包头的,只有分片后剩余的1B的数据。(35 - 20B -14B),在Wireshark中显示这个结果应该是Wireshark的分析。

而且刚刚24号包中是有icmp的包头的:

上图标出的8字节数据其实就是icmp的包头。那么24号包发送的数据就是1480-8 = 1472B,8为1480中的icmp包头。

25号包发送了1B的数据,加起来刚好是ping -l选项中设置的1473。

 

MTU:是链路层的概念,指的是链路层最大传输数据包的大小,限制的是上层的包的大小,比如MTU为1500,指的是IP包超过这个值会分片。

在ipv4中,分片可发生在主机或路由器上,但重组只能发生在源主机上,

原因:1、减轻路由器的负担   2、IP是无连接的协议,各数据包相互独立,可不按同一条路径进行传输,那么一台Router自然接收不到完整的包的集合,而是所有包的一部分,无法完成重组。

在抓包过程中IP头中相应标志位的变化没有列出,篇幅有限。

 

  • 21
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值