【计算机网路】--tcp四次挥手关闭连接
文章目录
- 目的:
- 第一次挥手(Client → Server )
- 第二次挥手(Server → Client)
- 第三次挥手(Server → Client)
- 第四次挥手(Client → Server)
- 客户端TIME_WAIT 状态的作用

目的:
是为了双方都能可靠地关闭连接,并确保数据全部传输完毕。因为 TCP 是全双工通信(即两边都能独立发送数据),所以关闭时每一方都需要单独“说再见”。
第一次挥手(Client → Server )
-
客户端 发送一个
FIN
报文段(Seq=u)给 服务端。 -
表示:我已经没有数据要发了,但我还能接收。
-
Client:
ESTABLISHED → FIN_WAIT_1
第二次挥手(Server → Client)
- 服务端 收到
FIN
后,回复一个ACK
报文(Ack=u+1)。 - 表示:我知道你想关闭连接了。
- Server:
ESTABLISHED → CLOSE_WAIT
- Client:
FIN_WAIT_1 → FIN_WAIT_2
第三次挥手(Server → Client)
- Server 在处理完剩下的业务后,也发出一个
FIN
报文(Seq=v)。 - 表示:我也没有数据要发了,我们可以断开连接。
- Server:
CLOSE_WAIT → LAST_ACK
第四次挥手(Client → Server)
- Client 收到
FIN
后,发送ACK
报文(Ack=v+1)。 - 表示:确认断开。
- Client:
FIN_WAIT_2 → TIME_WAIT
(等待 2MSL) →CLOSED
- Server:
LAST_ACK → CLOSED
(关闭连接)
客户端TIME_WAIT 状态的作用
-
客户端并不会马上关闭连接,而是要等待2 倍最大报文生存时间(MSL),确保:
- 对方收到最后这个 ACK 报文(避免丢失);
- 避免之前连接残留的数据影响新的连接。
只有等到 TIME_WAIT 结束后,客户端才真正关闭连接(进入 CLOSED 状态)。