fin / ack终止序列的tcp定时器值

时间:2013-12-15 07:23:03

标签: tcp timer

我有一个tcp客户端向TCP服务器发送HTTP POST请求。建立连接后,数据将从服务器传输到客户端。最后,服务器向客户端发送[FIN,ACK]。并且客户端发送ACK。 37秒后客户端发送[FIN,ACK],但客户端没有从服务器获得ACK,因此客户端继续在指数计时器上重新发送[FIN,ACK]。问题:客户端是否允许发送[FIN,ACK]延迟37秒?在这种情况下是否有任何标准计时器值?在这种情况下,客户端的预期行为是什么以及服务器的预期行为是什么?

1 个答案:

答案 0 :(得分:0)

服务器发送FIN和发送FIN的客户端之间的时间没有限制。在TCP中,连接的两个方向基本上是独立的,并且连接可以保持在这种“半开”状态一段任意的时间。

没有充分理由说服务器不应该为客户端的FIN / ACK发送ACK。如果由于某种原因它已经销毁了TCB(也许服务器进程已关闭套接字和/或退出,那么没有什么可以从客户端接收更多数据)它应该发送RST而不是ACK,但是某事< / em>应该在收到FIN / ACK后返回。如果没有返回任何内容,那么这是服务器TCP实现中的一个错误。