標籤:使用 發送 lis 三向交握 效率 tcp三向交握 netstat tab log
TCP三向交握的過程如下:
主動串連端發送一個SYN包給被動串連端;
被動串連端收到SYN包後,發送一個帶ACK和SYN標誌的包給主動串連端;
主動串連端發送一個帶ACK標誌的包給被動串連端,握手動作完成。
TCP四次揮手的過程如下:
主動關閉端發送一個FIN包給被動關閉端;
被動關閉端收到FIN包後,發送一個ACK包給主動關閉端;
被動關閉端發送了ACK包後,再發送一個FIN包給主動關閉端;
主動關閉端收到FIN包後,發送一個ACK包,當被動關閉端收到ACK包後,四次揮手動作完成,串連斷開。
netstat中的各種狀態:
CLOSED
初始(無串連)狀態。
LISTEN
偵聽狀態,等待遠程機器的串連請求。
SYN_SEND
在TCP三向交握期間,主動串連端發送了SYN包後,進入SYN_SEND狀態,等待對方的ACK包。
SYN_RECV
在TCP三向交握期間,主動串連端收到SYN包後,進入SYN_RECV狀態。
ESTABLISHED
完成TCP三向交握後,主動串連端進入ESTABLISHED狀態。此時,TCP串連已經建立,可以進行通訊。
FIN_WAIT_1
在TCP四次揮手時,主動關閉端發送FIN包後,進入FIN_WAIT_1狀態。
FIN_WAIT_2
在TCP四次揮手時,主動關閉端收到ACK包後,進入FIN_WAIT_2狀態。
TIME_WAIT
在TCP四次揮手時,主動關閉端發送了ACK包之後,進入TIME_WAIT狀態,等待最多MSL時間,讓被動關閉端收到ACK包。
CLOSING
在TCP四次揮手期間,主動關閉端發送了FIN包後,沒有收到對應的ACK包,卻收到對方的FIN包,此時,進入CLOSING狀態。
CLOSE_WAIT
在TCP四次揮手期間,被動關閉端收到FIN包後,進入CLOSE_WAIT狀態。
LAST_ACK
在TCP四次揮手時,被動關閉端發送FIN包後,進入LAST_ACK狀態,等待對方的ACK包。
主動串連端可能的狀態有:
CLOSED SYN_SEND ESTABLISHED。
主動關閉端可能的狀態有:
FIN_WAIT_1 FIN_WAIT_2 TIME_WAIT。
被動串連端可能的狀態有:
LISTEN SYN_RECV ESTABLISHED。
被動關閉端可能的狀態有:
CLOSE_WAIT LAST_ACK CLOSED。
在Linux下,如果串連數比較大,可以使用效率更高的ss來替代netstat。
參考:http://12218412.blog.51cto.com/12208412/1895171
006_netstat中state詳解