天天看點

netstat 中state詳解

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。

本文轉自神ge 51CTO部落格,原文連結:http://blog.51cto.com/12218412/1895171

繼續閱讀