如果第一个“FIN”数据包在TCP连接中丢失会发生什么?

问题描述:

我有一个代理,说A,运行和发送信息到我的服务器,说SA的套接字配置为keepalive,并且当AS之间的网络很差时,A将检测到连接错误并尝试重新连接到S。我可以看到有时A上的TCP连接状态是FIN_WAIT1,意思是A发送一个FIN数据包并等待。但这FIN数据包似乎丢失,因为在S我可以看到AS之间的许多ESTABLISHED连接,通常应该只有一个。如果第一个“FIN”数据包在TCP连接中丢失会发生什么?

在这种情况下TCP是否失败,或者我错过了什么?

+0

如果所有数据包丢失,套接字将最终超时,关闭并被删除。但是,超时可能需要很长时间,如果它们被调整的话 –

它在没有ACK的情况下被重发,就像任何其他TCP段一样。

+0

所以我想重发的FIN也丢失了? –