一、状态转换图
二、过程说明
1、Client:我要断开连接啦!
2、Server:好的!稍等,我这还有一些数据需要发送给你,等完事我再断开连接哈。
……(server 向 client 发送数据)
3、Server:我发送完毕了,断开连接了啊!
4、Client:嗯嗯,好的!
三、原因
TCP/IP 属于全双工。当 Client 向 Server 断开连接,进行 2 次挥手之后,TCP/IP 允许 Server 将缓冲区中剩余数据发送至 Client 。等 Server 发送完毕之后在进行 剩余的 2 次挥手。
上述也解释了为什么三次握手时,Server 的 SYN 和 ACK 是同时发送的,而四次挥手时 Server 的 FIN 和 ACK 是分开的(第 2 和 3 次挥手)。因为 Server 要将剩余的数据发完。
(SAW:Game Over!)