
第一次挥手:
- FIN=1,表示要关闭A→B的连接
- seq=u,表示报文的序列号,等待B的确认
第二次挥手:
- ACK=1,表示B收到切断A→B的请求
- 期望的确认号 ack = u + 1,如果ack是,那么A断开了B的连接
第三次挥手:
- FIN=1,表示要关闭B→A的连接
- seq=w,表示报文的序列号,等待A的确认
第四次挥手:
- ACK=1,表示A收到切断B→A的请求
- 期望的确认号 ack = w + 1,如果ack是,那么B断开了A的连接
- 第一次挥手 (FIN): 客户端告诉服务器:“我没数据要发了,我想关掉发送通道。”
- 第二次挥手 (ACK): 服务器回答:“知道了,你的请求我收到了。但我可能还有数据没发完,你等我一下。”
- 第三次挥手 (FIN): 服务器发完最后的数据后告诉客户端:“我也发完了,我也要关掉发送通道了。”
- 第四次挥手 (ACK): 客户端回答:“好的,收到了,再见。”(随后客户端进入等待,确认服务器收到最后这条信息)。
目的
允许一端先停止发送数据(进入“半关闭”状态),但仍然能够接收来自另一端尚未发送完毕的数据。