哪台机器实际上正在关闭 TCP 套接字以及为什么?

哪台机器实际上正在关闭 TCP 套接字以及为什么?

我正在开发一个 C# 应用程序,处理 TCP 套接字。

我有一个服务器应用程序(大力神),尝试保持套接字打开。
我的计算机上有一个应用程序,订阅该打开的套接字。

我在用着微软的 TCPViewer关注正在发生的事情。

几分钟后,我看到套接字从已建立状态转变为时间等待状态,然后套接字连接断开。

我一直在两台计算机的事件查看器中的所有常规位置(Windows 日志/应用程序、/安全、/设置、/系统和/转发事件)中查找事件 ID 4227,但一无所获。

我应该怎么做才能知道哪台机器实际上正在关闭 TCP 套接字以及为什么?

答案1

我应该怎么做才能知道哪台机器实际上正在关闭 TCP 套接字

为了找出哪一端关闭了连接,您需要进行数据包捕获。请参阅https://wiki.wireshark.org/TCP-4-times-close.mdWireshark 中连接关闭的示意图。发送初始 FIN 的一方即为关闭连接的一方。

...为什么?

仅通过查看流量是无法判断的。连接可能会因为应用层协议期望或允许而关闭。连接可能会因为客户端或服务器崩溃而关闭。连接可能会因为违反协议而被一方关闭,即如果另一方的行为与预期不同...因此,为了找出原因,您需要了解应用程序协议、查看日志文件、检查进程是否正在运行等。

相关内容