我特别感兴趣的是FIX 协议通过 TCP,但我很乐意更广泛地讨论这个问题。
假设客户端向服务器发送 TCP 段,其中部分 IP 数据包丢失。那么对于未完全到达的 TCP 段,客户端将不会收到 ACK。通常,这是提示客户端在超时期限过后重新传输 TCP 段。
现在让我们假设客户端决定不发送那些丢失的 TCP 段。那么服务器正确接收的不完整段集会发生什么?
服务器是否希望获得最佳结果并假设丢失的段最终会到达?服务器是否有一个超时时间,以便从其缓冲区中清除不完整的信息?如果有,通常该超时时间是多长?
答案1
RFC-1122 的第 4.2.3.6 节讨论了 TCP Keep-alive(http://www.rfc-editor.org/std/std3.txt)。
如果没有保持连接重传,TCP 连接可以无限期保持打开状态而无需交换任何数据段。如果连接实际上已断开,通常直到一方尝试发送新数据并发生超时或 ICMP 错误时才会发现。