📜  门| GATE-CS-2017(套装1)|问题 12

📅  最后修改于: 2021-09-24 06:33:15             🧑  作者: Mango

考虑运行在两台不同机器上的 TCP 客户端和 TCP 服务器。完成数据传输后,TCP 客户端调用close终止连接,并向TCP 服务器发送一个FIN 段。服务器端 TCP 通过发送客户端 TCP 接收到的 ACK 进行响应。根据 TCP 连接状态图(RFC 793),客户端 TCP 连接在哪种状态下等待来自服务器端 TCP 的 FIN?
(A)最后确认
(B)时间等待
(C) FIN-WAIT-1
(D) FIN-WAIT-2答案: (D)
说明: Client已经向服务器发送了FIN段,移动到FIN-WAIT-1,即等待自己的ACK
鳍段。这里有两种可能性:

  1. 如果客户端收到其 FIN 的 ACK,则客户端将移动到 FIN-WAIT-2 并等待匹配
    来自服务器端的 FIN。客户端收到服务器的 FIN 后,会发送 ACK 并移动到 TIME-WAIT
    状态。
  2. 客户端已发送 FIN 段,但直到此时才收到 ACK。客户端收到 FIN 而不是 ACK
    从服务器端。客户端将确认此 FIN 并进入 CLOSE 状态。这里客户端将等待
    其自己的 FIN 的 ACK。收到 ACK 后,客户端将进入 TIME-WAIT 状态。
    在这里,我们遇到了第一种情况。

    所以,答案是(D)。

    这个问题的测验