
第一次揮手
client發(fā)送一個FIN=1(seq=X)包,此時client進入FIN-WAIT-1狀態(tài),這表明client已經(jīng)沒有數(shù)據(jù)要發(fā)送了。
第二次揮手
server收到了client發(fā)來的FIN=1(seq=X)包后,向client發(fā)回一個ACK=1(ack=X+1)包,此時server進入CLOSE-WAIT狀態(tài),client進入FIN-WAIT-2狀態(tài)。
第三次揮手
server向client發(fā)送FIN=1(seq=Y)包,請求關(guān)閉連接,同時server進入LAST-ACK狀態(tài)。
第四次揮手
client收到server發(fā)送的FIN(N)包,進入TIME-WAIT狀態(tài)。向server發(fā)送ACK=1(ack=Y+1)包,server收到client的ACK=1(ack=Y+1)包以后,進入CLOSE狀態(tài);client等待一段時間還沒有得到回復(fù)后判斷server已正式關(guān)閉,進入CLOSE狀態(tài)。
wireshark解析
第一次揮手
客戶端給服務(wù)器發(fā)送TCP包,用來關(guān)閉客戶端到服務(wù)器的數(shù)據(jù)傳送。將標志位FIN和ACK置為1,序號為X=1,確認序號為Z=1。


第二次揮手
服務(wù)器收到FIN后,發(fā)回一個ACK(標志位ACK=1),確認序號為收到的序號加1,即X=X+1=2。序號為收到的確認序號=Z。


第三次揮手
服務(wù)器關(guān)閉與客戶端的連接,發(fā)送一個FIN。標志位FIN和ACK置為1,序號為Y=1,確認序號為X=2。


第四次揮手
客戶端收到服務(wù)器發(fā)送的FIN之后,發(fā)回ACK確認(標志位ACK=1),確認序號為收到的序號加1,即Y+1=2。序號為收到的確認序號X=2。

