TCP状态时序图:
1.主动发起连接请求端:CLOSE ----发送 SYN ---- SEND_SYN ----接收 ACK, SYN ---- SEND_SYN ---- 发送 ACK ----ESTABLISED(数据通信态)
2.主动关闭连接请求端:ESTABLISED(数据通信态) ---- 发送FIN ----FIN_WAIT_1 ----接收ACK ----FIN_WAIT_2(半关闭) ---- 接收对端发送FIN ----FIN_WAIT_2(半关闭) ---- 回发ACK ---- TIME_WAIT(只有主动关闭连接方,会经历该状态)---- 等2MSL时长 ---- CLOSE
3.被动接收请求连接端: CLOSE ---- LISTEN ----发送ACK.SYN ---- SYN_RCVD ----接收ACK ----ESTABLISED(数据通信态)
4 . 被动关闭连接请求端: ESTABLISED(数据通信态)----接收FIN ----ESTABLISED(数据通信态) ----发送ACK ---- CLOSE_WAIT(说明对端(主动关闭连接)处于半关闭状态) ----发送FIN ----LAST_ACK ---- CLOSE
重点记忆: ESTABLISED FIN_WAIT_2 <------>CLOSE_WAIT TIME_WAIT(2MSL)
2MSL时长:
一定出现在(主动关闭连接请求端) TIME_WAIT(此状态也只会出现在主动连接请求端)
保证最后一个ACK能成功被对端接收。(等待期间,对端没收到所发ACK,对端会再次发FIN请求)