TCP四次揮手 wireshark分析

2021-08-25 02:54:43 字數 1655 閱讀 8090

和前面的三次連線一樣,這一次我們來看一下tcp四次揮手的過程,當然了,也可能會失望,因為我捕捉到的只有三次揮手,而不是四次揮手。我們這裡規定ip位址為219.223.247.181是client端,而183.232.250.255是server端,下面就用client端和server端來解釋四次揮手的過程

三次揮手

第一次揮手

從下面我們可以看到,client首先發起了斷開連線請求,從**可以看出這是乙個斷開連線請求呢?從flags中的fin=1標誌這是client已經沒有資料要傳送了,這個時候就會傳送乙個請求關閉連線的資訊給server端,同樣,這裡包含sequence num = 451、acknowledgement num =48475;sequence num表示這一次傳送資料的起始序號,而acknowledgement number=48475 表示client已經收到了server端傳送的48475之前的所有的資料,期待下一次server傳送的sequence num = 48475;還有乙個就是acknowledgement = 1表示這是乙個應答資料,acknowledgement 和fin一起傳送就是這個資料報是乙個確認和請求關閉連線,具有兩重功能。

第二次和第三次揮手

這是server端傳送的資料,按照常理這一次應該是server端傳送乙個確認資料給client端(也就是flags中的fin = 0,而acknowledgement=1);但是這裡不按常理出牌,直接將fin=1和acknowledgement=1,一起合併發過來了。可能是因為上面的tcp keep-alive功能造成的?那我們先看一下server端傳送的資訊都有些啥?sequence num = 48475和我們第一次握手分析的結果相同,表示這是client需要server傳送的sequence num。acknowledgement num=4052表示server接受到了client傳送的sequence num=4051的資料,期待client下一次傳送的sequence num = 4052。那麼到這裡客戶端就關閉了。而server端關閉還需要client進行一次確認。

第四次揮手

從這裡我們可以看到fin=0,而acknowledgement = 1;表示這只是單純的乙個確認資料,表示client接收到server關閉連線的請求。我們看一下sequence num = 4052和上面分析的結論一致。而acknowledgement num=48476表示client收到了server端傳送的sequence num=48476之前的所有的資料。到這裡四次揮手就結束了。

2.1、四次揮手流程

2.2、為什麼需要四次揮手

因為tcp的半連線的特性決定的,tcp是乙個全雙工通訊機制的協議,只有雙方都關閉的時候才表示這個連線斷開了。??

tcp 四次揮手 TCP四次揮手

tcp斷開連線的過程 客戶端傳送fin報文,表明客戶端將不在傳送資料。具體過程 把fin標誌位改為1,序號seq u,之前傳送的資料加1,這裡規定即使不攜帶資料序號也要 1。該過程中客戶端通過close系統呼叫從established狀態進入fin wait 1狀態。第二次揮手 服務端收到客戶端發來...

TCP四次揮手

純給自己看的 發起關閉的一方是客戶端,被動關閉的一方是伺服器。1 客戶端a傳送乙個fin 1,用來關閉客戶a到伺服器b的資料傳送。圖上畫的對,還有乙個seq n 2 伺服器b收到這個fin,它發回乙個ack 1,確認序號ack為收到的序號加1。3 伺服器b關閉與客戶端a的連線,傳送乙個fin 1給客...

TCP四次揮手

四次揮手 1.客戶端程序發出連線釋放報文,並且停止傳送資料。釋放資料報文首部,fin 1,其序列號為seq u 等於前面已經傳送過來的資料的最後乙個位元組的序號加1 此時,客戶端進入fin wait 1 終止等待1 狀態。tcp規定,fin報文段即使不攜帶資料,也要消耗乙個序號。2.伺服器收到連線釋...