关闭一个连接意味着:“我没有数据要发送了”。关闭的连接还可以接收数据直到对方也关闭了连接;
TCP发现对方关闭了连接后,需要通知用户;
关闭连接的三种情况:
1:本地用户发送CLOSE指令关闭连接
发送FIN报文给对方,状态变为FIN_WAIT_1;还可以接收数据,等待对方确认FIN报文;等待对方发送FIN;
2:对方发送FIN报文
接收到对方发送的FIN报文,发送确认该FIN的ACK,进入CLOSE_WAIT状态;
通知本地用户,如果本地用户发送CLOSE指令,发送FIN报文,进入LAST_ACK状态,等待确认FIN报文,如果收到ACK报文删除连接,如果没有收到,会通知用户;
3:双方同时关闭
常见关闭连接的流程:
通信双方同时关闭连接的流程: