消失的它:网络层分片包中的第一个分片包去哪了?

在网络层IP包分片的过程中,遇到了大麻烦!

  • 主机A:

IP地址:192.168.0.10/24
MAC地址:02:00:00:00:00:10

  • 主机B:

IP地址:192.168.0.20/24
MAC地址:02:00:00:00:00:20
MTU:1500

第一种情况:

主机A给主机B发送ICMPv4 Echo Request报文,ICMPv4 payload长度为1472,主机B回复了ICMPv Echo Response。通信过程见下图:

  • ICMPv4 Echo Request

消失的它:网络层分片包中的第一个分片包去哪了?_第1张图片
由于ICMPv4 Echo Request报文的payload(1472) + icmp header(8) + ip header(20),正好等于主机B的MTU(1500),所以主机B接收时不需要分片重组,回复ICMPv4 Echo Response时也不需要分片发送。

  • ICMPv4 Echo Response

消失的它:网络层分片包中的第一个分片包去哪了?_第2张图片

第二种情况:

如果现在主机A给主机B发送的ICMPv4 Echo Request报文的payload为1473呢?

由于报文的二层数据为1501,大于主机B的MTU,所以主机B接收时要分片后重组,然后回复Response时,也要分成两个IP包发送,前一个分片包的IP payload为1480,后一个分片包的IP payload为1。但事实是这样吗?

  • ICMPv4 Echo Request

消失的它:网络层分片包中的第一个分片包去哪了?_第3张图片

那主机B给主机A回复的报文呢?只有一条!

消失的它:网络层分片包中的第一个分片包去哪了?_第4张图片

很明显,主机B只发送了第二个分片包给主机A!那第一个IP分片包去哪了呢?里面的1480个数据呢?

第三种情况:

如果我在第二种情况中,让主机A再发一次ICMPv4 Echo Request报文给主机B,消失的它回来了!

消失的它:网络层分片包中的第一个分片包去哪了?_第5张图片

所以,它为什么会消失???


你可能感兴趣的:(网络协议,网络,tcp/ip)