【问题标题】:tcp timer value for fin/ack termination sequencefin/ack 终止序列的 tcp 定时器值
【发布时间】:2014-01-02 17:46:16
【问题描述】:

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

【问题讨论】:

    标签: tcp timer


    【解决方案1】:

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

    服务器不应该为客户端的 FIN/ACK 发送 ACK 没有充分的理由。如果它出于某种原因破坏了 TCB(可能服务器进程已经关闭了套接字和/或退出,所以没有什么可以从客户端接收更多数据)它应该发送 RST 而不是 ACK,但是 something 应该作为接收到 FIN/ACK 的结果返回。如果没有返回任何内容,这是服务器 TCP 实现中的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 2013-04-27
      相关资源
      最近更新 更多