TCP的CLOSING状态发生条件
当主动关闭方发送了FIN后(主动方状态FIN_TAIT_1)到达被动关闭方。被动关闭方接受FIN并发送了确认ACK(被动方变为CLOSE_WAIT),之后发送了被动方自己的FIN;
情况1:此时主动方先收到ACK,进入fin_wait_2,然后收到FIN并发送确认码ACK,主动关闭方进入TIME_WAIT
情况2:此时主动方先收到被动关闭方的FIN然后发送该FIN的接收确认码ACK到被动关闭方(主动方状态变为CLOSING,可能是由于传输过程中出现异常,ACK数据被阻塞延时),然后收到被动方发送给主动方的ACK确认码,主动方进入TIME_WAIT。
备注:每次2个socket之间进行通讯,每次通信都必须经过2个环节。a:主动方发送数据到被动方,b:被动方发送确认收到的信息ACK到发送方,如果主动方没有收到该ACK,那么主动方会重新发送。一般主动方请求发送后,ack码会与要传输的数据内容一起传输给发送请求端。