释放连接
通信双方在通信结束之后要释放TCP连接
客户端发送一个释放连接请求,TCP状态变为FIN-WAIT-1,FIN置为1
服务器对于该请求返回确认释放报文,同时将自己的TCP状态转入CLOSE-WAIT
客户端在接收到该确认后TCP状态转入FIN-WAIT-2,并等待服务器发回的断开连接请求,此时TCP连接处于半关闭的状态,客户端不能向服务器发送数据但是仍然可以接收来自服务器的数据。
半关闭状态可能持续一段时间,服务器向客户端发送请求关闭连接,同时将自己的TCP状态转入LAST-ACK
客户端在接收到服务器发送的断开连接请求后,对该请求发回一个确认,同时TCP状态转入TIME-WAIT,并等待2MSL时间后进入CLOSED状态,服务器在接收到该确认后进入CLOSED状态
客户端对服务器的断开连接发送确认后还需要等待2MSL时间的原因如果主机在发送确认后立即进入CLOSED状态,而此时很不幸客户端发送的确认报文在网络中丢失了,服务器收不到该确认,当服务器的请求断开连接报文的超时重传计时器倒计时结束,服务器会继续重传该请求报文,但是此时客户端已经无法对该报文做出响应,导致一段时间内该TCP连接无法关闭,浪费服务器主机资源和网络资源
TCP保活计时器
参考资料
网络是怎样连接的(日)户根勤著; 周自恒译. 责任者, 户根勤; 周自恒. 出版发行, 北京: 人民邮电出版社,2017
文档信息
- 本文作者:wendaocsmaster
- 本文链接:https://wendaocsmaster.github.io/2023/02/24/Computer-Networks-transmission-layer-Release-a-TCP-connection/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)