【发布时间】:2016-04-21 10:01:50
【问题描述】:
我有一个代理,比如A,正在运行并向我的服务器发送信息,比如S。 A的socket配置为keepalive,当A和S之间的网络不好时,A会检测到连接错误,并尝试重新连接到S。我有时可以观察到A 上的 TCP 连接状态是FIN_WAIT1,这意味着A 发送一个FIN 数据包并等待。但是这个FIN 数据包似乎丢失了,因为在S 上我可以看到A 和S 之间的许多ESTABLISHED 连接,通常应该只有一个。
在这种情况下 TCP 会失败,还是我错过了什么?
【问题讨论】:
-
如果所有的数据包都丢失了,socket最终会超时,关闭并被移除。然而,超时可能需要很长时间,如果它们被调整的话