客户端和服务端都处于ESTABLISHED状态
- 客户端首先发起断开连接请求,标识位
FIN为1,客户端从ESTABLISHED状态变更为FIN-WAIT-1状态 - 服务端收到
FIN请求之后,操作系统内核会发起ACK响应,服务器从ESTABLISHED状态变更为CLOSE-WAIT状态,并告知APP关闭 - 客户端收到服务端的
ACK请求之后变更为FIN-WAIT-2状态,开始等待服务端的FIN请求 - 服务端
APP在处理完之后,发起FIN请求,服务端从CLOSE-WAIT状态变更为LAST-ACK状态 - 客户端收到
FIN请求之后,发起ACK响应,状态从FIN-WAIT-2变更为TIME-WAIT状态 - 服务端收到
ACK请求,从LAST-ACK变更为CLOSED状态 - 客户端处于
TIME-WAIT状态,等待2个MSL的时间(Maximum Segment Life最大TCP段时间)之后关闭
两端同时关闭
两端同时从状态ESTABLISHED变更为CLOSEDESTABLISHED -> FIN-WAIT-1 -> CLOSING -> TIME-WAIT -> CLOSED

