天天看點

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

TCP 三次握手 示意圖

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

Wireshark 抓包注意事項

為了示範一個TCP三向交握建立連接配接的過程,我們通過 Chrome 通路一個網頁。 

已知 HTTP 協定就是建立在TCP連結上的

比如通路以下的網址: 

http://toutiao.newmedia139.net/

通過 Cmd 的 ping 指令擷取 這個網站對應的 IP位址 183.136.236.13 

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

确定 這個IP 有一個非常重要的好處,就是我們隻需要

電腦 -> 網站 的資料包

網站->電腦 的資料包

是以,可以使用Wireshark的顯示過濾規則,隻顯示我們需要的資料,不然你一定看着滿螢幕的資料抓狂的。

過濾規則如下:

ip.src==183.136.236.13 or ip.dst==183.136.236.13

截圖:

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

分析TCP握手包

概覽

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

通過圖檔,可以看到 先 進行了 TCP 三次傳輸 然後才 開始 HTTP 傳輸

第一次 用戶端發送 SYN 封包 到伺服器

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

第二次 ,伺服器接收到 用戶端的SYN 封包,回複 SYN + ACK 封包

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

第三次 ,用戶端接收到服務端的 SYN+ACK 封包後,回複 ACK封包

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

注意:

這裡有個坑:Wireshark 顯示的 Syn Ack的數目是不準确的

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

理論上,Syn 應該初始值是個随機數的,後面的要根據初始值增加 

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

TCP 三次握手總結

建立一個穩定的 雙向 連接配接,最少需要 幾次 通信呢? 

以打電話為例 

小明 給小紅 打電話 

小明 : 喂,小紅 聽得到麼? 

小紅: 嗯,我聽到你說話了,你能聽到我麼? 

小明:我能聽到你。

隻有這三個傳輸都正确了,才能保障雙方是 連通的

TCP 四次揮手

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

CP的連接配接的拆除需要發送四個包,是以稱為四次揮手(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。

TCP采用四次揮手關閉連接配接如圖2所示。

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

抓包截圖

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

其中 183.136.236.13 是伺服器的ip 

可以看到 這一次揮手是由 伺服器 發起的

第一次揮手 FIN +ACK

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

第二次揮手 ACK

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

第三次揮手 FIN +ACK

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

第四次揮手 ACK

使用 WireShark 分析 TCP/IP 三次握手 和 四次揮手TCP 三次握手 示意圖TCP 四次揮手抓包截圖

總結

TCP 由于是全雙工的,斷開連結需要四次揮手

繼續閱讀