首页 > 代码库 > Tcp关闭

Tcp关闭

Client --->  FIN  --->  Server 

Client <---  ACK  <---  Server 

这时候Client端处于FIN_WAIT_2状态;而Server 程序处于CLOSE_WAIT状态。

Client <---  FIN  <---  Server 

这时Server 发送FIN给Client,Server 就置为LAST_ACK状态。

Client --->  ACK  --->  Server 

此时clinet并不是直接关闭。而是进入TIME_WAIT。如果执行主动关闭的一方Client 不进入到TIME_WAIT状态就关闭连接那会发生什么呢?当重传的FIN消息到达时,因为TCP已经不再有连接的信息了,所以就用RST(重新启动)消息应答,导致Server 进入错误的状态而不是有序终止状态,如果发送最后ACK消息的一方处于TIME_WAIT状态并仍然记录着连接的信息,它就可以正确的响应对等方Server 的FIN消息了

Tcp关闭