通过 ping 测试 MTU 时超时

通过 ping 测试 MTU 时超时

我在 Windows 7 和 Ubuntu 11.10 上以 MTU 大小 1500B 对其进行了测试。

  • IP 数据包 - 20B
  • ICMP 数据包 - 8B

1500-28=1472

因此,我可以 ping 的最大数据包(无碎片)是 1472B,这是正确的,因为当我尝试设置更高的值时,它表明需要碎片。但是 ping 成功时的最大值在两个系统上都是 1448。当我尝试 1449 - 1472 字节之间的值时,我会超时。为什么会这样?

答案1

有几种可能性:

  • ping 目标会忽略超过一定大小的 ping。
  • ping 数据包在传输过程中的某处被分割成碎片,并且目标系统(或防火墙之间的某些系统)不会响应分割的 ping 请求。

您可以通过设置“不分段”选项来 ping 来测试后者(在 ubuntu 上:添加一个-M do选项),但这并不是万无一失的,因为有些路由器在丢弃过大的数据包时不会正确返回错误。

答案2

您使用的是 ADSL 连接吗?在这种情况下,MTU 不应是 1500,而应是 1492。

相关内容