首页 > 解决方案 > TCP 连接 - 客户端在通信过程中发送 FIN

问题描述

我有 azure VM,它充当 TCP 服务器(侦听端口的 java 程序)。TCP 客户端 (ncat) 位于公司网络中。中间有企业防火墙。客户端通过发送消息来启动与服务器的连接,之后服务器每隔 3 秒向客户端发送一条消息。客户端确实收到 3 或 4 条消息,但之后它停止接收任何消息。服务器端也不例外。当客户端和服务器都在公司网络中时,我没有遇到这个问题。线鲨捕获如下。我不明白为什么客户端在两者之间发送 FIN(以黄色突出显示)。请有任何建议。

Wireshark 捕获

标签: azuretcpfirewall

解决方案


问题在于 Azure 和企业网络之间的防火墙中的 tcp-halfclose-timer 值。它设置为 10 秒,因此一旦从客户端发送 FIN,10 秒后服务器无法向客户端发送任何消息,因为防火墙在 10 秒后关闭了半关闭的连接。该值更改为 1 小时,之后问题得到解决。


推荐阅读