创建连接
1. 服务端/客户端:CLOSE 关闭状态
默认初始化状态
2. 服务端:LISTEN 监听
服务端建立socket,进入监听状态
3. 客户端:SYN_SENT 请求连接
客户端发送SYN报文,进入SYN_SENT状态
4. 服务端:SYN_RCVD 接受连接
服务端接收SYN报文,回复SYN+ACK报文
5. 服务端/客户端:ESTABLISHED 建立连接
客户端接收SYN报文,回复ACK报文;服务端接收ACK报文,建立连接
断开连接
1. 服务端/客户端:ESTABLISHED 建立连接
默认断开前初始化状态
2. 客户端:FIN_WAIT1 发起断开请求
发送断开请求FIN报文
3. 服务端:CLOSE_WAIT 接受断开请求
收到FIN报文,回复客户端ACK报文
4. 客户端:FIN_WAIT2 等待数据传输
收到服务端ACK报文,等待数据传输
5. 服务端:LAST_ACK 发送断开请求
发送FIN断开请求报文
6. 客户端:TIME_WAIT 等待断开
回复FIN断开请求,发送ACK报文
7. 服务端/客户端:CLOSED 服务端断开
服务端收到ACK报文,立即断开
8. 客户端:CLOSING 准备断开
没有收到回复FIN报文的ACK,直接断开