Windows Server 2008,卡在 TCP 握手上

Windows Server 2008,卡在 TCP 握手上

问题:

我的 Windows 2008 Server 无法与远程机器建立 TCP 连接。

重现步骤:

我在 Windows 2008 Server 计算机上的端口 40.000 上运行一项服务,IP 为 10.100.5.46。

从另一台 Linux 机器上我尝试使用Telnet 10.100.5.46 40000

这导致了与国家的联系SYN_RECEIVED

我使用 netstat-a | find "40000"查看所有连接,在尝试 telnet 后,我​​可以看到 2 个连接

  1. 正在监听端口 40000 的连接
  2. 处于状态的连接SYN_RECEIVED

该程序已在其他机器和另一台 Windows 2008 机器上测试过,并且能够正常运行。

有人知道哪里出了问题吗,以及如何修改 Windows 2008 服务器以使其正常工作。

答案1

好的,有些很明显,但也许它们可以有所帮助:

  • 服务器是否正确接受其他入站连接,如文件共享、远程桌面等?
  • 该服务是否接受来自服务器本身的连接telnet localhost 40000
  • 该服务是 .NET 应用程序吗?Windows Server 2008 可以获取很多与.NET 框架子功能很棘手。

答案2

我们现在已经找到了解决我的问题的方法,我想分享这个解决方案。

该问题是由 Socket 上的一个选项引起的。

socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.ReuseAddress, true);

当此选项设置为 true 时,我们的服务无法接收来自 Windows 2008 上不同子网的任何连接。连接将卡在 TCP 握手阶段。

对于来自同一台机器或同一子网上的机器的连接来说,这不是问题。

安装在 Windows 2003 上的相同程序在与其他子网的连接时不会出现问题。

相关内容