用 Wireshark 圖解:TCP 三次握手
一、什么是 Wireshark ?
簡單地說,Wireshark 是抓包工具。官網說,“Wireshark 是一個網絡包分析工具。 網絡數據包分析儀將嘗試捕獲網絡數據包并試圖盡可能詳盡顯示該數據包。”
Wireshark 不單單能抓包,主要的 Features 是 對數據包進行各種的分析 。下載打開界面非常簡單直觀:
最上面是 Packet List 窗口,它列出了所有網絡包。
在 Packet List 中選定的網絡包會詳細地顯示在中間的 Packet Details 窗口中。
最底下是 Packet Bytes Details 窗口(16 進制數據),我們一般不會用到它。
二、我們抓什么包呢?如題 TCP
TCP 一臉懵逼。記得上次在 《圖解Http協議》得知,HTTP 是一個客戶端和服務器端請求和響應的標準TCP。其實建立在 TCP 之上的。那我們就抓 HTTP,這很簡單。
三、實操 Wireshark
選擇 Capture – Options,選擇當前網絡,點擊 Start 。如圖:
瀏覽器打開我的博客 www.bysocket.com ,然后在 Wireshark 中的過濾器輸入博客 IP 過濾:ip.addr == 106.14.40.18
選擇第一行,如第一張圖,簡單介紹下 Packet Details 窗口參數詳情:
Frame – 物理層
Ethernet – 數據鏈路層
Internet Protocol Version – 網絡層
Transmission Control Protocol – 傳輸層
大家知道 網絡層次劃分為 標準的OSI七層模型 ,還有 TCP/IP四層協議 以及 TCP/IP五層協議 。如圖:
其中, Transmission Control Protocol – 傳輸層 是我們最為關心的。如圖已經展開了:
具體我們先學習 TCP 報文段格式:
那么第二個紅框,由上至下,一一大家可以對應下,重點的是:
Sequence number – 序號
Acknowledgment number – 確認號
Flags – 標志位
— Acknowledgment 確認位
— Push 急迫位
— Reset 重置位
— Syn 同步位
— Fin 終止位
a. 第一次握手標志位
localhost Seq=0 -> 博客地址
從標志位看出,同步位有值,在做請求(SYN):Syn 同步位為1
b. 第二次握手標志位
博客地址 Seq=0 Ack=1 -> localhost
從標志位看出,確認位、同步位有值,在做應答(SYN+ACK):Syn 同步位為 1 、Acknowledgment 確認位為 1
c. 第三次握手標志位
localhost Seq=1 Ack=1 -> 博客地址 (注: Seq=Seq+1)
從標志位看出,只有確認位有值,在做再次確認(SYN):Acknowledgment 確認位為 1
綜上所述,一個完整的三次握手就是:
請求(SYN) — 應答(SYN+ACK) — 再次確認(SYN)
如以上文章或鏈接對你有幫助的話,別忘了在文章結尾處評論哈~ 你也可以點擊頁面右邊“ 分享 ”懸浮按鈕哦,讓更多的人閱讀這篇文章。
來自:http://www.bysocket.com/?p=1404