Wireshark入門

相信大家總是能聽到TCP、UDP,還有TCP三次握手,之前都是看的書上的理論,今天來用Wireshark抓一個tcp三次握手。

在平時的開發(fā)中,如果是一般的Http或者Https請求,我們直接在Windows上使用Fiddler、Mac上使用Charles來抓包即可。當然,使用Wireshark也可以抓取http、https請求,不過一般使用Wireshark來抓TCP請求。

官方下載地址:https://www.wireshark.org/download.html

首先,來看下wireshark界面


image.png

這里選擇Wi-Fi就能抓到本機所有的請求了,我這里是wifi,如果是直接連網線,看到的就是本地連接了。這個很簡單,你試一下就能知道了。

然后就能看到各種網絡請求了,包括應用層協(xié)議和傳輸層協(xié)議。


因為數據傳輸記錄太多了,那么就一定需要過濾器功能了。上面的過濾器欄中支持以下幾種表達式:
表達式規(guī)則

  1. 協(xié)議過濾
    比如tcp,只顯示TCP協(xié)議。http,就是只顯示HTTP協(xié)議。注意,這里是區(qū)分大小寫的。
  2. IP 地址過濾
    比如 ip.src ==192.168.1.102 顯示源地址為192.168.1.102,
    ip.dst==192.168.1.102, 目標地址為192.168.1.102
  3. 端口過濾
    tcp.port ==80, 端口為80的
    tcp.srcport == 80, 只顯示TCP協(xié)議的愿端口為80的。
  4. Http模式過濾
    http.request.method=="GET", 只顯示HTTP GET方法的。
  5. 邏輯運算符為 AND/ OR

點擊任意一個記錄,下面會顯示該記錄的封包詳細信息


  • Frame: 物理層的數據幀概況
  • Ethernet II: 數據鏈路層以太網幀頭部信息,這里就可以看到本機mac地址以及目標mac地址了
  • Internet Protocol Version 4: 互聯(lián)網層IP包頭部信息,這里可以看到本機以及目標ip地址
  • Transmission Control Protocol: 傳輸層T的數據段頭部信息,此處是TCP,這里能看到TCP的數據包了,下面會講到。
  • Hypertext Transfer Protocol: 應用層的信息,此處是HTTP協(xié)議

關于互聯(lián)網通信協(xié)議,推薦阮一峰的“互聯(lián)網協(xié)議入門”,寫的真好。http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

下面看下TCP報文頭部格式:



再來對比看一下Wireshark抓的TCP包,終于從理論到實踐了。大學期間看了很多遍TCP報文頭都記不住。重點關注一下Sequence number 和 Acknowledgment number 以及Flags。


現在進入我們的重點,TCP三次握手,這個歷史性的握手
我們先訪問一個http請求“http://www.cnblogs.com/tankxiao”,注意這里不是https哦,關于https我后面再講。


我們找到我們請求的http地址,注意看Stream index = 2,這個index等下可以追蹤到這次http建立之前的tcp三次握手過程。

我們鼠標右鍵這個http請求,Follow-TCP Stream,就可以看到此次tcp建立連接的歷史性握手了。



上面的地址欄過濾"tcp.stream eq 2"中的2就是上面的Stream index。

咱么首先看下TCP三次握手經典圖



大學時看過很多遍這個圖,卻記不住到底啥意思,就是因為太抽象了,抽象到只能死記硬背,今天通過wireshark一看就明白了。

下面來分步解析一下三次握手過程,主要關注三個參數,分別是Flags、Sequence number、Acknowledgment number

第一次握手
Flags:SYN
Sequence number:0
Acknowledgment number:0

第二次握手
Flags:SYN,ACK
Sequence number:0
Acknowledgment number:1

第三次握手
Flags:ACK
Sequence number:1
Acknowledgment number:1

總結:TCP三次握手過程

  • 客戶端發(fā)送SYN標志和序列號Seq來向服務器發(fā)起連接
  • 服務端收到請求,向客戶端發(fā)送ACK表示確認,確認號是接收到的序列號+1。同時發(fā)送SYN標志位以及自己的序列號給客戶端發(fā)起連接
  • 客戶端再發(fā)送ACK標志給服務端表示確認,其中確認號是服務端發(fā)送過來的序列號+1

參考博客:https://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容