WireShark 分析 TCP 協議(TCP 三次握手,TCP 的四次揮手)

WireShark 分析 TCP 協議

TCP 三次握手

1. 三次握手示意圖

img

2. 使用 WireShark 進行抓包

爲了能夠抓取到 TCP 三次握手建立連接的數據,我們可以通過 WireShark 在本地主機訪問網頁時開始抓取數據。抓取的數據量比較大,包括了此時段本地主機所有的通信數據包,爲了方便我們的分析,我們可以使用 WireShark 的顯示過濾規則來過濾掉不需要的數據而只顯示本地主機與目標主機之間通信的數據包。

過濾規則如下:ip.src==源IP or ip.dst==目的IP

過濾結果如圖所示:

3. 分析 TCP 三次握手

  • 第一次 客戶端發送 SYN 報文到服務器

  • 第二次 服務器收到客戶端的 SYN 報文,回覆 SYN + ACK 報文

  • 第三次,客戶端接收到服務器的 SYN + ACK 報文後。回覆ACK 報文

TCP 的四次揮手

1. 四次握手示意圖

img

由於TCP連接是全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的數據發送任務後就能發送一個FIN來終止這個方向的連接。收到一個 FIN只意味着這一方向上沒有數據流動,一個TCP連接在收到一個FIN後仍能發送數據。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。

TCP的連接的拆除需要發送四個包,因此稱爲四次揮手(four-way handshake)。客戶端或服務器均可主動發起揮手動作,在socket編程中,任何一方執行close()操作即可產生揮手操作。

(1)客戶端A發送一個FIN,用來關閉客戶A到服務器B的數據傳送。

(2)服務器B收到這個FIN,它發回一個ACK,確認序號爲收到的序號加1。和SYN一樣,一個FIN將佔用一個序號。

(3)服務器B關閉與客戶端A的連接,發送一個FIN給客戶端A。

(4)客戶端A發回ACK報文確認,並將確認序號設置爲收到序號加1。

2. 分析數據包

  • 第一次揮手 FIN + ACK

  • 第二次揮手 ACK

 

  • 第三次揮手 FIN + ACK

  • 第四次揮手 ACK

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章