tcp四次挥手

  1. 主动关闭方状态变化:

ESTABLISHED(连接建立) -> 发送FIN报文(第一次挥手) -> FIN_WAIT_1 -> 收到对方的ACK确认 -> FIN_WAIT_2 -> 收到对方的FIN报文 -> 发送ACK确认(第四次挥手)-> TIME_WAIT -> CLOSED

  1. 被动关闭方状态变化:

ESTABLISHED(连接建立) -> 收到对方的FIN报文 -> 发送ACK确认(第二次挥手)-> CLOSE_WAIT -> 发送FIN报文(第三次挥手) -> LAST_ACK -> 收到对方的ACK确认 -> CLOSED

  1. 第一次挥手 (FIN, Finish):

客户端发送一个 FIN 报文段给服务器,设置 FIN 位为 1,序列号 seq = u。客户端进入 FIN_WAIT_1 状态。这表示客户端没有数据要发送了,但仍然可以接收来自服务器的数据。

  1. 第二次挥手 (ACK, Acknowledgement):

服务器收到 FIN 报文后,发送一个 ACK 报文段给客户端,确认序号 ack = u + 1,序列号 seq = v。服务器进入 CLOSE_WAIT 状态。此时服务器已知晓客户端不再发送数据,但它可能还有数据需要发送给客户端。

  1. 第三次挥手 (FIN):

当服务器完成所有数据的发送或者确定不再发送数据后,它也发送一个 FIN 报文段给客户端,设置 FIN 位为 1,序列号 seq = w。服务器进入 LAST_ACK 状态。这意味着服务器也完成了数据传输,并准备好关闭连接。

  1. 第四次挥手 (ACK):

客户端收到服务器的 FIN 报文后,返回一个 ACK 报文段给服务器,确认序号 ack = w + 1,序列号 seq = u + 1。客户端进入 TIME_WAIT 状态,等待一段时间以确保服务器收到了最后一个 ACK 报文。在服务器收到这个 ACK 后,进入 CLOSED 状态,关闭连接。客户端在等待一段时间(通常称为 TIME_WAIT 状态持续时间,用于确保网络中的任何重传报文都被处理完)后也会进入 CLOSED 状态,彻底关闭连接。


本站总访问量:次本站总访问数:人
本站由 Peng Tong 使用 Stellar 1.29.1 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。