TCP三次握手的過程如下:
創(chuàng)新互聯(lián)提供網(wǎng)站設(shè)計、成都網(wǎng)站制作、網(wǎng)頁設(shè)計,品牌網(wǎng)站設(shè)計,1元廣告等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,十年的網(wǎng)站開發(fā)和建站經(jīng)驗,助力企業(yè)信息化建設(shè),成功案例突破上千余家,是您實現(xiàn)網(wǎng)站建設(shè)的好選擇.
主動連接端發(fā)送一個SYN包給被動連接端;
被動連接端收到SYN包后,發(fā)送一個帶ACK和SYN標(biāo)志的包給主動連接端;
主動連接端發(fā)送一個帶ACK標(biāo)志的包給被動連接端,握手動作完成。
TCP四次揮手的過程如下:
主動關(guān)閉端發(fā)送一個FIN包給被動關(guān)閉端;
被動關(guān)閉端收到FIN包后,發(fā)送一個ACK包給主動關(guān)閉端;
被動關(guān)閉端發(fā)送了ACK包后,再發(fā)送一個FIN包給主動關(guān)閉端;
主動關(guān)閉端收到FIN包后,發(fā)送一個ACK包,當(dāng)被動關(guān)閉端收到ACK包后,四次揮手動作完成,連接斷開。
netstat中的各種狀態(tài):
CLOSED
初始(無連接)狀態(tài)。
LISTEN
偵聽狀態(tài),等待遠程機器的連接請求。
SYN_SEND
在TCP三次握手期間,主動連接端發(fā)送了SYN包后,進入SYN_SEND狀態(tài),等待對方的ACK包。
SYN_RECV
在TCP三次握手期間,主動連接端收到SYN包后,進入SYN_RECV狀態(tài)。
ESTABLISHED
完成TCP三次握手后,主動連接端進入ESTABLISHED狀態(tài)。此時,TCP連接已經(jīng)建立,可以進行通信。
FIN_WAIT_1
在TCP四次揮手時,主動關(guān)閉端發(fā)送FIN包后,進入FIN_WAIT_1狀態(tài)。
FIN_WAIT_2
在TCP四次揮手時,主動關(guān)閉端收到ACK包后,進入FIN_WAIT_2狀態(tài)。
TIME_WAIT
在TCP四次揮手時,主動關(guān)閉端發(fā)送了ACK包之后,進入TIME_WAIT狀態(tài),等待最多MSL時間,讓被動關(guān)閉端收到ACK包。
CLOSING
在TCP四次揮手期間,主動關(guān)閉端發(fā)送了FIN包后,沒有收到對應(yīng)的ACK包,卻收到對方的FIN包,此時,進入CLOSING狀態(tài)。
CLOSE_WAIT
在TCP四次揮手期間,被動關(guān)閉端收到FIN包后,進入CLOSE_WAIT狀態(tài)。
LAST_ACK
在TCP四次揮手時,被動關(guān)閉端發(fā)送FIN包后,進入LAST_ACK狀態(tài),等待對方的ACK包。
主動連接端可能的狀態(tài)有:
CLOSED SYN_SEND ESTABLISHED。
主動關(guān)閉端可能的狀態(tài)有:
FIN_WAIT_1 FIN_WAIT_2 TIME_WAIT。
被動連接端可能的狀態(tài)有:
LISTEN SYN_RECV ESTABLISHED。
被動關(guān)閉端可能的狀態(tài)有:
CLOSE_WAIT LAST_ACK CLOSED。
在Linux下,如果連接數(shù)比較大,可以使用效率更高的ss來替代netstat。