file-20241202225112648

第一次挥手:

  • FIN=1,表示要关闭AB的连接
  • seq=u,表示报文的序列号,等待B的确认

第二次挥手:

  • ACK=1,表示B收到切断AB的请求
  • 期望的确认号 ack = u + 1,如果ack是,那么A断开了B的连接

第三次挥手:

  • FIN=1,表示要关闭BA的连接
  • seq=w,表示报文的序列号,等待A的确认

第四次挥手:

  • ACK=1,表示A收到切断BA的请求
  • 期望的确认号 ack = w + 1,如果ack是,那么B断开了A的连接
  • 第一次挥手 (FIN): 客户端告诉服务器:“我没数据要发了,我想关掉发送通道。”
  • 第二次挥手 (ACK): 服务器回答:“知道了,你的请求我收到了。但我可能还有数据没发完,你等我一下。”
  • 第三次挥手 (FIN): 服务器发完最后的数据后告诉客户端:“我也发完了,我也要关掉发送通道了。”
  • 第四次挥手 (ACK): 客户端回答:“好的,收到了,再见。”(随后客户端进入等待,确认服务器收到最后这条信息)。

目的

允许一端先停止发送数据(进入“半关闭”状态),但仍然能够接收来自另一端尚未发送完毕的数据。

reference

浅谈TCP三次握手和四次挥手 TCP连接