TCP状态转移图
一、三次挥手状态转移
- 客户端
SYN_SENT:调用connect()函数发送SYN请求时;
ESTABLISHED:收到服务器ACK时;
- 服务器
LISTEN:调用listen()函数监听时;
SYN_RCVD:收到客户端SYN请求时,并发送SYN请求、回复ACK;
ESTABLISHED:收到客户端ACK时;
二、数据传输
双方均处于ESTABLISHED状态。
三、四次挥手状态转移
- 客户端(主动关闭方)
FIN_WAIT_1:调用close()函数并发送FIN请求时;
FIN_WAIT_2:收到服务器ACK时;
TIME_WAIT:收到服务器FIN请求时,并回复ACK;
CLOSED:TIME_WAIT经过2MSL后;
- 服务器
CLOSE_WAIT:收到客户端FIN请求时,并回复ACK;
LAST_ACK:调用close()函数并发送FIN请求时;
CLOSED:收到客户端ACK时。