从本地网络下载超过 2000 字节的内容时,Windows XP 上的浏览​​器会挂起

从本地网络下载超过 2000 字节的内容时,Windows XP 上的浏览​​器会挂起

我们有一个在本地网络中 Tomcat 下运行的 Web 应用程序。我们的客户在使用此 Web 应用程序时遇到了奇怪的问题。假设 Tomcat 服务器在 host1 上运行,我们在 host2 上的浏览​​器中打开 webapp URL。

主机 2 上的任何浏览器都会开始打开页面,下载内容会“挂起”数小时。我们进行了大量实验,发现任何大于 2000 字节的内容都会导致浏览器请求挂起。在 Internet Explorer 8、Opera 12、Firefox 中进行了尝试。同时,如果用户从互联网打开网站,它会正常工作。从运行 Tomcat 的同一主机 1 打开 webapp 可以正常工作。本地网络由 D-Link DGS-3120-48TC 交换机组织。

附加信息。在实验过程中,我们注意到主机上安装了 XP Tweaker。该工具的网络设置如下:

  • MTU 手动设置为 1500
  • 回转轴承 = 14600
  • 支持大于 64 KB 的 TCP 帧
  • 生存时间 = 32
  • SACK 已启用

答案1

这可能只是PMTU 发现路径1上的某个地方出现故障,因此您的服务器发送的数据包比能够到达客户主机的数据包大。尝试将 MTU 减小到 1300,看看是否有帮助。

您要更改哪一侧的 MTU 并不重要 - 在客户端减少 MTU 也应该会减少在建立 TCP 连接时报告给服务器的 MSS,因此它会发送较小的数据包。在服务器端减少 MTU 会立即将数据流分成较小的段。

如果你觉得这有帮助,千万不要就此止步,修复 PMTUD


1最有可能的原因是因为你在防火墙配置中以错误的方式过滤了 ICMP,所以需要进行 ICMP 分段的消息将无法到达你服务器的 TCP 堆栈,从而严重破坏 PMTUD,导致数据包超出 MTU,而这些数据包根本无法通过 MTU 小于你服务器 MTU 的路由器。

相关内容