TIME_WAIT意义

四次挥手
  • 1 : 客户端A发送一个FIN,用来关闭客户端A到服务器B的数据传送。
  • 2 : 服务器B收到这个FIN,它发送一个ACK,确认序号为收到的序号加1。
  • 3 : 服务器B关闭和客户端A的连接,发送一个FIN给客户端A。
  • 4 : 客户端A发送ACK报文确认,并将确认序号设置为收到序号加1。

连接是3次握手,关闭为什么是4次?
这是因为服务器端的LISTEN状态下的SOCKET当收到SYN报文的建立请求后,它可以把ACK和SYN放在一个报文来发送。但关闭时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上关闭SOCKET,也即你可能还需要发送一些数据给对方之后,在发送FIN报文给对方来表示你同意现在关闭连接了,所以它这里的ACK报文和FIN报文多数情况下是分开发送的。

在TCP四次挥手的过程中,发起连接断开的一方会有一段时间处于TIME_WAIT的状态,下面就解释TIME_WAIT是用来做什么的?

你可能感兴趣的:(TIME_WAIT意义)