- CLOSED:TCP起始狀态
- LISTEN:綁定端口後進入listen狀态,一般是服務端
- SYN_SENT:發送SYN連接配接請求,主動打開連接配接的一方進入SYN_SENT
- SYN_RCVD:接收到SYN連接配接請求後進入SYN_RCVD,同時發送SYN,ACK。TCP可從LISTEN和SYN_SENT兩個狀态進入SYN_RCVD
- ESTABLISHED:三次握手成功後進入ESTABLISHED狀态
- CLOSE_WAIT:被動關閉的一方接收到FIN包後,發送ACK響應,進入CLOSE_WAIT狀态
- LAST_ACK:顧名思義,在等待最後一個ACK包。CLOSE_WAIT發送FIN包關閉連接配接後進入該狀态
- FIN_WAIT_1:主動關閉的一方先發送FIN包,從ESTABLISHED狀态進入FIN_WAIT_1
- CLOSING:FIN_WAIT_1下是在等待對方的ACK響應和對方的FIN包,FIN包先到的話,兩端是同時關閉,FIN_WAIT_1發送ACK響應後進入CLOSING狀态,等待一個ACK,然後進入TIME_WAIT狀态
- FIN_WAIT_2:FIN_WAIT_1下是在等待對方的ACK響應和對方的FIN包,如果ACK先到,進入FIN_WAIT_2狀态。這時候的連接配接處于半連接配接狀态,有一方已經斷開連接配接,但另一方還有資料要傳。繼續等待FIN包,FIN包到了後,發送ACK,進入TIME_WAIT狀态
- TIME_WAIT:FIN_WAIT_1下是在等待對方的ACK響應和對方的FIN包,FIN包和ACK包都到了,發送ACK響應後,進入TIME_WAIT狀态,等待2MSL然後關閉
TIME_WAIT狀态解釋
- 主動關閉連接配接的一方會進入TIME_WAIT狀态,等待2MSL然後徹底關閉
- MSL是任何IP資料報能夠在網際網路中存活的最長時間
- 為什麼要等待2MSL?
- 可靠地實作TCP全雙工連接配接的終止
- 允許老的重複分節在網絡中消逝