随机 HTTP 连接问题

随机 HTTP 连接问题

我遇到了一个奇怪的互联网访问问题,我不知道如何调试。大约 90% 的时间里,一组特定的网站无法加载,并显示“连接重置”状态。通过它们的 IP 访问它们会产生相同的结果。Ping IP 成功(无数据包丢失)。我运行的是安装了最新更新的 Windows Server 2012。

Fiddler(HTTP MITM 调试器)告诉我 HTTP 响应是“HTTP 504”。Wireshark 显示我在 TCP 层接收到“连接重置”数据包。

我尝试了以下更改:

问题仍然存在:

  • 通过 IP 访问
  • 使用 wget
  • 使用不同的网络适配器(带 3G 功能的 USB 绑定手机)
  • 使用其他浏览器
  • 在 VirtualBox VM 中使用浏览器
  • 禁用防火墙
  • 启动至带网络连接的安全模式。
  • 更改 DNS 服务器。
  • 以不同的非管理员用户身份登录。

问题消失时:

  • 使用不同的机器
  • 使用 TOR
  • 使用不同的操作系统
  • 在 Fiddler 中重新发出 HTTP 请求超过五次(即,前 5 次重新发出失败,之后的重新发出成功)。
  • 使用 Fiddler 捕获 HTTP 请求并在另一台机器上重新发出。

我最后的办法是重新安装操作系统。我还能尝试其他什么方法来调试此问题吗?

答案1

失败的连接是与启用 CloudFlare 的网站的 TCP 连接。Windows Server 2012 默认启用显式拥塞通知 - TCP 数据包中的 ECN 和 CWR(拥塞窗口减少)标志设置为 true。

我通过运行解决了这个问题

netsh interface tcp set global ecncapability=disabled

答案2

这有点牵强,但我见过这种方法修复了一些奇怪的问题,而这些问题我以前无法通过其他方法解决。所以在完全重新安装之前,这种方法绝对值得一试。

通过运行以下命令重置 Windows 计算机上的 TCP/IP 堆栈

netsh int ip reset c:\resetlog.txt(最后一个参数为日志路径,可选)

如果您点击下面的链接,还可以找到一个自动化工具。

文档:http://support2.microsoft.com/kb/299357/en

相关内容