azure - TCP 连接 - 客户端在通信过程中发送 FIN
问题描述
我有 azure VM,它充当 TCP 服务器(侦听端口的 java 程序)。TCP 客户端 (ncat) 位于公司网络中。中间有企业防火墙。客户端通过发送消息来启动与服务器的连接,之后服务器每隔 3 秒向客户端发送一条消息。客户端确实收到 3 或 4 条消息,但之后它停止接收任何消息。服务器端也不例外。当客户端和服务器都在公司网络中时,我没有遇到这个问题。线鲨捕获如下。我不明白为什么客户端在两者之间发送 FIN(以黄色突出显示)。请有任何建议。
解决方案
问题在于 Azure 和企业网络之间的防火墙中的 tcp-halfclose-timer 值。它设置为 10 秒,因此一旦从客户端发送 FIN,10 秒后服务器无法向客户端发送任何消息,因为防火墙在 10 秒后关闭了半关闭的连接。该值更改为 1 小时,之后问题得到解决。
推荐阅读
- java - p:confirm 对话框的 OK 在 Chrome 74 中被忽略
- angular - 没有将“exportAs”设置为“cdkStep”的指令
- python - 错误:在 aws 实例上运行 python 脚本时不支持多个远程源
- linux - 这个奇怪的构造“{} \;”是什么意思?方法?
- ios - 任何方式将语音转换为文本,如谷歌为 iPhone 的搜索框做的?
- node.js - npm install --save opencv4nodejs
- r - 使用 dplyr 进行表转换
- android - 在 RecyclerView 中显示/隐藏工具栏中任何事件的视图
- python - 使用熊猫连续出现多个组时如何明智地添加数字组
- mysql - 使用自动增量的 SQL 插入