首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux和碎片化

linux和碎片化
EN

Network Engineering用户
提问于 2014-05-11 15:54:45
回答 1查看 32K关注 0票数 4

我一直在Linux上试验ping实用程序。我在路由器上设置了500个字节的mtu。现在,当我切换到外部主机时,我得到了以下输出:

代码语言:javascript
复制
ping -c 3 -s 1300 10.0.2.1        
PING 10.0.2.1 (10.0.2.1) 1300(1328) bytes of data. 
From 10.0.1.254 icmp_seq=1 Frag needed and DF set (mtu = 500)
1308 bytes from 10.0.2.1: icmp_seq=2 ttl=62 time=1.12 ms 
1308 bytes from 10.0.2.1: icmp_seq=3 ttl=62 time=1.14 ms

--- 10.0.2.1 ping statistics --- 3 packets transmitted, 2 received, +1 errors, 33% packet loss, time 2000ms rtt min/avg/max/mdev = 1.123/1.134/1.146/0.035 ms

因此,第一条消息被路由器丢弃,因为超过了接口的mtu。这是预期的,因为DF标志是默认设置的。因此,他不能碎片和错误发生,到目前为止还不错。但另外两个包裹呢?他们为什么要通过?我可以想象,ping工具在得到ICMP错误后,不会在进一步的数据包中设置DF标志,这样它们就可以被分割。是那么回事吗?我在哪里可以找到这方面的“官方”解释?

非常感谢!

解决方案:它是PMTUD协议的一部分。http://www.cisco.com/c/en/us/support/docs/ip/generic-routing-encapsulation-gre/25885-pmtud-ipfrag.html#t4

EN

回答 1

Network Engineering用户

回答已采纳

发布于 2014-05-11 16:20:13

当路由器收到带有DF标志集的IP数据报时,它会将ICMP (类型应该分段但DF设置)发送给源。然后源调整MTU并再次发送数据报。这就是PMTUD的工作原理。

这里发生的事情是,在收到来自路由器的ICMP之后,将路径的MTU调整为500,以便您发送的下面的Ping请求具有DF标志集,但它们在源上是分段的(这意味着您的机器正在几个数据报中发送Ping请求)。

票数 6
EN
页面原文内容由Network Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://networkengineering.stackexchange.com/questions/7853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档