TCP四次挥手

        四次挥手发生在断开连接的时候,在程序中当调用了c1ose()会使用TCP协议进行四次挥手。对资源进行释放,比如之前存储的IP和端口号。

        客户端和服务器端都可以主动发起断开连接,谁先调用c1ose()谁就是发起。因为在TCP连接的时候,采用三次握手建立的的连接是双向的,在断开的时候需要双向断开。

TCP四次挥手_第1张图片

  1. 第一次挥手(FIN1): 主动关闭方发送一个带有FIN(结束)标志的TCP段给被动关闭方,表示主动关闭方已经完成数据的发送,希望开始关闭连接。

  2. 第二次挥手(ACK1): 被动关闭方收到FIN后,发送一个带有ACK(确认)标志的TCP段给主动关闭方,确认收到了FIN,并且同意关闭连接。此时被动关闭方进入半关闭状态,它仍然可以向主动关闭方发送数据。

  3. 第三次挥手(FIN2): 被动关闭方发送一个带有FIN标志的TCP段给主动关闭方,表示被动关闭方也已经完成数据的发送,准备关闭连接。

  4. 第四次挥手(ACK2): 主动关闭方收到FIN后,发送一个带有ACK标志的TCP段给被动关闭方,确认收到了FIN。此时连接正式关闭。

        这四次挥手的设计是为了确保双方都有足够的时间完成数据的传输和接收,以及通知对方自己已经完成了相应的操作。在第二次挥手之后,被动关闭方进入半关闭状态,仍然可以向主动关闭方发送数据。通过第三次挥手,被动关闭方通知主动关闭方完成了数据的发送,可以进行最终的关闭。 

你可能感兴趣的:(tcp/ip,网络,服务器,网络协议,linux)