为什么将 MTU 从 1500 降低到 1499 可以让我访问大多数网站?

Xai*_*oft 16 mtu

我遇到了这个问题,当 mtu 设置为 1500 时,我只能连接到像 google.com 和 ibm.com 这样的网站,但是如果我尝试连接到其他任何东西,它只会显示一个空白页面。当 mtu 降低到 1499 时,它开始工作。我很好奇为什么会这样,如果将 mtu 设置为 1499 是否会在将来引起问题?我实际上对此知之甚少,我只是听说过,正在寻找一个很好的解释。

当我得到关于为什么 MTU 仅下降 1 个字节的解释时,我将用解释更新我的问题。

Zor*_*che 19

这可能意味着您上游的某些其他设备具有较小的 mtu,并且有人错误地配置了防火墙以阻止所有 ICMP,从而阻止了路径的MTU 发现

许多幼稚的网络管理员似乎认为 ICMP 没有任何意义,您可以完全阻止它而不会产生任何影响。

  • 不过,1499 似乎很奇怪。较小的 MTU 通常是附加在另一个报头(例如 PPPoE、VPN、VLAN 等)上的结果,这些报头将 MTU 缩小了一些偶数。例如,802.1q 为 4 个字节,PPPoE 为 8 个字节。什么会只用掉 1 个字节? (4认同)
  • 可能是某个路由器/防火墙/等配置错误的地方,无法捕获具有 1500+ MTU 而不是 > 1500 MTU 的数据包。 (2认同)

Dic*_*Bob 8

更具体地说,发生的情况是 IP 数据报在其标头中设置了 DF(不分段)标志。然后,他们在您和目的地之间的路径上某处到达网关,该网关的 MTU 比发件人使用的 MTU 小。该网关需要进一步对数据报进行分段,因此它会发送 ICMP 类型 4 消息,这实质上意味着“我需要对这些数据包进行分段,但您说不这样做。因此目的地无法到达。”

这些 ICMP 数据包没有被原始发送方接收,因为沿途的某些网关已(愚蠢地)配置为阻止所有 ICMP。所以发件人不知道他的数据包没有通过并坐在那里等待......等待。最终有些东西会超时。通常首先超时的是人。:)