Windows 10 丢失 TCP 连接

And*_*ohr 7 networking tcp windows-10

我正在运行 Windows 10 专业版,并在我的 MSI 170A-Pro 主板上集成了 Realtek PCIe GBE 系列控制器。通常一切都很好。网络在 Linux 和 Windows 上运行良好且无中断。所以硬件似乎没问题。

但是,我在使用 Windows 10 时每天大约会遇到一次连接丢失的情况。不过,症状有点奇怪:

  • 我无法在 Chrome 或 Internet Explorer 中连接到任何网站(Chrome 显示 ERR_CONNECTION_FAILED)
  • 除了谷歌通常可以工作(可能是因为与它的连接是由 chrome 维护的)
  • 我的 Google Talk 连接继续工作(似乎只影响新连接)
  • nslookup 适用于任何域
  • 我可以ping我想浏览的网站
  • 我有一个有效的 IPv4 和 IPv6 地址
  • 我可以在 IPv4 和 IPv6 上 ping 默认网关
  • Windows 网络诊断找不到任何问题
  • Windows 说我已成功连接到 Internet
  • 网络上的其他设备继续没有问题(与路由器无关)

但是,唯一的解决方案是通过控制面板选项重置网络并重新启动,或者通过调用netsh winsock reset管理控制台并重新启动。单独重启并不能解决问题。

到目前为止我做到了

  • 禁用网卡的电源管理
  • 从 Realtek 升级到最新的驱动程序

我完全不知所措到底出了什么问题。因为网络显然有效。似乎只是它的某些部分不起作用。

如果有人知道如何进一步调试它,我会全力以赴!

请注意这是有线网络

ipconfig 输出如下(连接工作时看起来完全一样)

Windows IP Configuration


Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . : w00t
   IPv6 Address. . . . . . . . . . . : 2a02:2450:1024:442:808:aa56:5c13:9413
   Temporary IPv6 Address. . . . . . : 2a02:2450:1024:442:a5e3:4f74:fb29:5d13
   Link-local IPv6 Address . . . . . : fe80::808:aa56:5c13:9413%3
   IPv4 Address. . . . . . . . . . . : 192.168.1.165
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : fe80::1e87:2cff:fe6a:b6b0%3
                                       192.168.1.1

Tunnel adapter isatap.w00t:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : w00t

Tunnel adapter Teredo Tunneling Pseudo-Interface:

   Connection-specific DNS Suffix  . : 
   IPv6 Address. . . . . . . . . . . : 2001:0:9d38:6ab8:2cd7:1e65:3f57:fe5a
   Link-local IPv6 Address . . . . . : fe80::2cd7:1e65:3f57:fe5a%12
   Default Gateway . . . . . . . . . : 
Run Code Online (Sandbox Code Playgroud)

一些附加信息:

  • 重新启动到 Linux 时,网络连接在那里完美无缺,重新启动回 Windows,问题仍然存在
  • 完全关闭机器电源并不能解决问题
  • 我本地网络上的 HTTP 站点也无法访问
  • 问题与 DNS 无关,站点也无法通过 IP 地址访问
  • 到 Windows 共享的 SMB 连接也不起作用

对我来说,它看起来像是操作系统的 TCP 堆栈以某种方式“卡住了”。Ping (ICMP) 和 DNS (UDP) 有效,HTTP 和 SMB (TCP) 无效。

这让我尝试了另一件事:我尝试使用 PuTTY 将 ssh (TCP) 连接到另一台机器,但出现了错误: Network error: No buffer space available

上面的错误指向了https://serverfault.com/questions/131935/network-error-no-buffer-space-available,这反过来又让我检查了显示错误 4227 的事件查看器:

TCP/IP 未能建立传出连接,因为所选的本地端点最近用于连接到同一远程端点。当传出连接以高速率打开和关闭时,通常会发生此错误,从而导致使用所有可用的本地端口并强制 TCP/IP 为传出连接重用本地端口。为了将数据损坏的风险降至最低,TCP/IP 标准要求在从给定本地端点到给定远程端点的连续连接之间经过最短时间段。

当禁用和重新启用设备(知识库条目建议)时,错误只会再次出现在日志中。

似乎某些程序正在耗尽可用的传出 TCP 端口。所以问题变成了:

  • 如何找出哪个程序是罪魁祸首?
  • 为什么重启不能解决这个问题?

har*_*ymc 6

EventID 4227 似乎与太多未完成的 TCP 连接有关。

不是答案,但以下第一步对于评论来说太长了:

  1. 运行证监会/scannow
  2. 在设备管理器中删除网络适配器并重新启动
  3. 发生这种情况时,使用TCPView查看传出连接
  4. 通过设置TcpNumConnections增加传出连接的最大值, 另请参阅本文中描述的其他参数
  5. 禁用 IPv6
  6. 重启 Chrome
  7. 使用网络以安全模式启动 Windows,如果这种情况停止发生,则应归咎于某些已安装的应用程序
  8. 在隐身模式下使用 Chrome 暂时禁用扩展程序
  9. 试试火狐
  10. 你打开了很多标签吗?或者当发生这种情况时,您是否总是打开一个特定的网站?

上述结果可能有助于定位问题。