Wireshark入門

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

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

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

首先,來看下wireshark界面


image.png

這里選擇Wi-Fi就能抓到本機(jī)所有的請(qǐng)求了,我這里是wifi,如果是直接連網(wǎng)線,看到的就是本地連接了。這個(gè)很簡單,你試一下就能知道了。

然后就能看到各種網(wǎng)絡(luò)請(qǐng)求了,包括應(yīng)用層協(xié)議和傳輸層協(xié)議。


因?yàn)閿?shù)據(jù)傳輸記錄太多了,那么就一定需要過濾器功能了。上面的過濾器欄中支持以下幾種表達(dá)式:
表達(dá)式規(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, 目標(biāo)地址為192.168.1.102
  3. 端口過濾
    tcp.port ==80, 端口為80的
    tcp.srcport == 80, 只顯示TCP協(xié)議的愿端口為80的。
  4. Http模式過濾
    http.request.method=="GET", 只顯示HTTP GET方法的。
  5. 邏輯運(yùn)算符為 AND/ OR

點(diǎn)擊任意一個(gè)記錄,下面會(huì)顯示該記錄的封包詳細(xì)信息


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

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

下面看下TCP報(bào)文頭部格式:



再來對(duì)比看一下Wireshark抓的TCP包,終于從理論到實(shí)踐了。大學(xué)期間看了很多遍TCP報(bào)文頭都記不住。重點(diǎn)關(guān)注一下Sequence number 和 Acknowledgment number 以及Flags。


現(xiàn)在進(jìn)入我們的重點(diǎn),TCP三次握手,這個(gè)歷史性的握手
我們先訪問一個(gè)http請(qǐng)求“http://www.cnblogs.com/tankxiao”,注意這里不是https哦,關(guān)于https我后面再講。


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

我們鼠標(biāo)右鍵這個(gè)http請(qǐng)求,F(xiàn)ollow-TCP Stream,就可以看到此次tcp建立連接的歷史性握手了。



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

咱么首先看下TCP三次握手經(jīng)典圖



大學(xué)時(shí)看過很多遍這個(gè)圖,卻記不住到底啥意思,就是因?yàn)樘橄罅?,抽象到只能死記硬背,今天通過wireshark一看就明白了。

下面來分步解析一下三次握手過程,主要關(guān)注三個(gè)參數(shù),分別是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

總結(jié):TCP三次握手過程

  • 客戶端發(fā)送SYN標(biāo)志和序列號(hào)Seq來向服務(wù)器發(fā)起連接
  • 服務(wù)端收到請(qǐng)求,向客戶端發(fā)送ACK表示確認(rèn),確認(rèn)號(hào)是接收到的序列號(hào)+1。同時(shí)發(fā)送SYN標(biāo)志位以及自己的序列號(hào)給客戶端發(fā)起連接
  • 客戶端再發(fā)送ACK標(biāo)志給服務(wù)端表示確認(rèn),其中確認(rèn)號(hào)是服務(wù)端發(fā)送過來的序列號(hào)+1

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

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容