WireShark學習筆記

抓包工具 Wireshark, 用來獲取網絡數據封包,包括 HTTP、TCP、UDP 等網絡協議包。

wireshark是開源軟件,可以放心使用。 可以運行在WindowsMac OS上。

wireshark只能查看封包,而不能修改封包的內容,或者發送封包。

Wireshark VS Fiddler

Fiddler是在windows上運行的程序,專門用來捕獲HTTP,HTTPS的。

wireshark能獲取HTTP,也能獲取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的內容。

總結,如果是處理HTTP,HTTPS 還是用Fiddler,? 其他協議比如TCP,UDP 就用wireshark。

同類的其他工具微軟的network monitor,sniffer

開始抓包

wireshark是捕獲機器上的某一塊網卡的網絡包,當你的機器上有多塊網卡的時候,你需要選擇一個網卡。

點擊Caputre->Interfaces.. 出現下面對話框,選擇正確的網卡。然后點擊”Start”按鈕, 開始抓包。

Caputre->Interfaces

WireShark 主要分為這幾個界面

1. Display Filter(顯示過濾器),? 用于過濾

2. Packet List Pane(封包列表), 顯示捕獲到的封包, 有源地址和目標地址,端口號。 顏色不同,代表

3. Packet Details Pane(封包詳細信息), 顯示封包中的字段

4. Dissector Pane(16進制數據)

5. Miscellanous(地址欄,雜項)

界面

過濾器有兩種:

一種是顯示過濾器,就是主界面上那個,用來在捕獲的記錄中找到所需要的記錄

一種是捕獲過濾器,用來過濾捕獲的封包,以免捕獲太多的記錄。 在Capture -> Capture Filters 中設置

過濾表達式的規則

表達式規則

1. 協議過濾

比如TCP,只顯示TCP協議。

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協議的愿端口為80的。

4. Http模式過濾

http.request.method==”GET”,?? 只顯示HTTP GET方法的。

5. 邏輯運算符為 AND/ OR

封包列表(Packet List Pane)

封包列表的面板中顯示,編號,時間戳,源地址,目標地址,協議,長度,以及封包信息。 你可以看到不同的協議用了不同的顏色顯示。

你也可以修改這些顯示顏色的規則,? View ->Coloring Rules.

封包詳細信息 (Packet Details Pane)

這個面板是我們最重要的,用來查看協議中的每一個字段。

各行信息分別為

Frame:物理層的數據幀概況

EthernetII:數據鏈路層以太網幀頭部信息

Internet Protocol Version 4:互聯網層IP包頭部信息

Transmission Control Protocol:傳輸層T的數據段頭部信息,此處是TCP

Hypertext Transfer Protocol:應用層的信息,此處是HTTP協議

對應七層模型


TCP包中的每個字段


TCP三次握手

TCP:

TCP/IP通過三次握手建立一個連接。這一過程中的三種報文是:SYN,SYN/ACK,ACK。

第一步是找到PC發送到網絡服務器的第一個SYN報文,這標識了TCP三次握手的開始。

如果你找不到第一個SYN報文,選擇Edit -> Find Packet菜單選項。選擇Display Filter,輸入過濾條件:tcp.flags,這時會看到一個flag列表用于選擇。選擇合適的flag,tcp.flags.syn并且加上==1。點擊Find,之后trace中的第一個SYN報文就會高亮出來了。

注意:Find Packet也可以用于搜索十六進制字符,比如惡意軟件信號,或搜索字符串,比如抓包文件中的協議命令。

一個快速過濾TCP報文流的方式是在Packet List Panel中右鍵報文,并且選擇Follow TCP Stream。這就創建了一個只顯示TCP會話報文的自動過濾條件。

這一步驟會彈出一個會話顯示窗口,默認情況下包含TCP會話的ASCII代碼,客戶端報文用紅色表示,服務器報文則為藍色。


HTTP

當HTTP發送初始GET命令之后,TCP繼續數據傳輸過程,接下來的鏈接過程中HTTP會從服務器請求數據并使用TCP將數據傳回客戶端。傳送數據之前,服務器通過發送HTTP? OK消息告知客戶端請求有效。如果服務器沒有將目標發送給客戶端的許可,將會返回403 Forbidden。如果服務器找不到客戶端所請求的目標,會返回404。

如果沒有更多數據,連接可被終止,類似于TCP三次握手信號的SYN和ACK報文,這里發送的是FIN和ACK報文。當服務器結束傳送數據,就發送FIN/ACK給客戶端,此報文表示結束連接。接下來客戶端返回ACK報文并且對FIN/ACK中的序列號加1。這就從服務器端終止了通信。要結束這一過程客戶端必須重新對服務器端發起這一過程。必須在客戶端和服務器端都發起并確認FIN/ACK過程。

基本IO Graphs:

IO graphs是一個非常好用的工具。基本的Wireshark IO

graph會顯示抓包文件中的整體流量情況,通常是以每秒為單位(報文數或字節數)。默認X軸時間間隔是1秒,Y軸是每一時間間隔的報文數。如果想要查看每秒bit數或byte數,點擊“Unit”,在“Y

Axis”下拉列表中選擇想要查看的內容。這是一種基本的應用,對于查看流量中的波峰/波谷很有幫助。要進一步查看,點擊圖形中的任意點就會看到報文的細節。

過濾:

每一個圖形都可以應用一個過濾條件。這里創建兩個不同的graph,一個HTTP一個ICMP。可以看到過濾條件中Graph 1使用“http”Graph 2使用“icmp”。圖中可以看到紅色ICMP流量中有些間隙,進一步分析。

過濾

常用排錯過濾條件:

對于排查網絡延時/應用問題有一些過濾條件是非常有用的:

tcp.analysis.lost_segment:表明已經在抓包中看到不連續的序列號。報文丟失會造成重復的ACK,這會導致重傳。

tcp.analysis.duplicate_ack:顯示被確認過不止一次的報文。大涼的重復ACK是TCP端點之間高延時的跡象。

tcp.analysis.retransmission:顯示抓包中的所有重傳。如果重傳次數不多的話還是正常的,過多重傳可能有問題。這通常意味著應用性能緩慢和/或用戶報文丟失。

tcp.analysis.window_update:將傳輸過程中的TCP window大小圖形化。如果看到窗口大小下降為零,這意味著發送方已經退出了,并等待接收方確認所有已傳送數據。這可能表明接收端已經不堪重負了。

tcp.analysis.bytes_in_flight:某一時間點網絡上未確認字節數。未確認字節數不能超過你的TCP窗口大小(定義于最初3此TCP握手),為了最大化吞吐量你想要獲得盡可能接近TCP窗口大小。如果看到連續低于TCP窗口大小,可能意味著報文丟失或路徑上其他影響吞吐量的問題。

tcp.analysis.ack_rtt:衡量抓取的TCP報文與相應的ACK。如果這一時間間隔比較長那可能表示某種類型的網絡延時(報文丟失,擁塞,等等)。

函數:

IO Graphs有六個可用函數:SUM,?MIN, AVG, MAX, COUNT, LOAD。

MIN( ), AVG( ), MAX( )

首先看一下幀之間的最小,平均和最大時間,這對于查看幀/報文之間的延時非常有用。我們可以將這些函數結合“frame.time_delta過濾條件看清楚幀延時,并使得往返延時更為明顯。如果抓包文件中包含不同主機之間的多個會話,而只想知道其中一個pair,可將“frame.time_delta”結合源和目標主機條件如“ip.addr==x.x.x.x &&ip.addr==y.y.y.y”。如下圖所示:

函數

我們做了以下步驟:

將Y軸設置為“Advanced”,讓Caculation域可見。不做這一步就看不到計算選項。

X軸時間間隔1秒,所以每個柱狀圖代表1秒間隔的計算結果。

過濾出兩個特定IP地址的HTTP會話,使用條件:“(ip.addr==192.168.1.4&&?ip.addr==128.173.87.169) && http”。

使用3個不同的graph,分別計算Min(), Avg(), Max()。

對每一個計算結果應用條件“frame.time_delta”,將style設置成“FBar”,顯示效果最佳。

Count( ):此函數計算時間間隔內事件發生的次數,在查看TCP分析標識符時很有用,例如重傳。

Sum( ):該函數統計事件的累加值。有兩種常見的用例是看在捕獲TCP數據量,以及檢查TCP序列號。

協議過濾器:

arp:顯示所有包括ARP請求和回復在內的所有ARP數據流。

ip:顯示內含IPv4頭在內的(如ICMP目的地址不可達報文,在ICMP報文頭之后返回到來方向的IPv4頭)IP數據流。

ipv6:顯示所有IPv6數據流,包括內含IPv6報文頭的IPv4報文,如6to4,Teredo,以及ISATAP數據流。

tcp:顯示所有基于TCP的數據流。

應用過濾器:

bootp:顯示所有DHCP數據流(基于BOOTP)。

dns:顯示包括TCP區域傳輸以及基于標準UDP的DNS請求和回復在內的所有DNS數據流。

tftp:顯示所有TFTP(Trivial File Transfer Protocol)數據流。

http:顯示所有HTTP命令,回復以及數據傳輸報文,但不顯示TCP握手報文,TCP ACK報文以及TCP結束報文。

icmp:顯示所有ICMP報文。

域過濾器:

boot.option.hostname:顯示所有包含主機名的DHCP數據流(DHCP基于BOOTP)。

http:host:顯示所有包含HTTP主機名字段的所有HTTP報文。此報文是客戶端向網絡服務器發送請求時發出的。

ftp.request.command:顯示所有包含命令的FTP數據流,比如USER,PASS,或RETR命令。

字符過濾器:

tcp.analysis.flags:顯示所有包含TCP分析標識的所有報文,包括報文丟失,重傳,或零窗口標識。

tcp.analysis,zero_window:顯示含有表明發送方的接收緩存用完標識的報文。

顯示過濾器比較運算符:

通過擴展過濾條件可查找某一域值,Wireshark針對此功能支持數字比較運算符。

1. ==或eq

例如:ip.src == 10.2.2.2

顯示所有源地址為10.2.2.2的IPv4數據流

2. !=或ne

例如:tcp.srcport != 80

顯示源端口除了80以外的所有TCP數據流

3. >或gt

例如:frame.time_relative > 1

顯示距前一個報文到達時間相差1秒的報文

4. <或lt

例如:tcp.window_size < 1460

顯示當TCP接收窗口小于1460字節時的報文

5. >=或ge

例如:dns.count.answers >= 10

顯示包含10個以上answer的DNS響應報文

6. <=或le

例如:ip.ttl <= 10

顯示IP報文中Time to Live字段小于等于10的報文

7. contains

例如:http contains “GET”

顯示所有HTTP客戶端發送給HTTP服務器的GET請求

對于基于TCP應用的過濾條件采用比較運算符。例如,如果想看端口80上面的HTTP數據流,使用HTTP.port==80。

小貼士:

運算符兩邊不用留空格。ip.src == 10.2.2.2與ip.src==10.2.2.2的效果是相同的。

過濾HTTP數據流:

在排查網頁瀏覽器會話或檢查網速過慢問題時,對瀏覽器會話進行過濾就顯得尤為重要。過濾HTTP數據流有兩種方式:

http

tcp.port==xx(xx表示所使用的HTTP端口)

第二種過濾方法更加有效。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,117評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,860評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,128評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,291評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,025評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,421評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,477評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,642評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,177評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,970評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,157評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,717評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,410評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,821評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,053評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,896評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,157評論 2 375

推薦閱讀更多精彩內容

  • 1.這篇文章不是本人原創的,只是個人為了對這部分知識做一個整理和系統的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,112評論 6 174
  • Wireshark的主窗口界面 我們在正式利用Wireshark進行數據包分析之前,應當首先了解一下這款軟件主 窗...
    kevinhuangk閱讀 3,998評論 1 7
  • title: 網絡基礎學習總結(1) tags: 網絡 categories:筆記 date: 2017-06-1...
    行徑行閱讀 2,539評論 0 3
  • HTTP工作流程 HTTP是一個無狀態的協議。所謂的無狀態指的是客戶端(Web瀏覽器)和服務器之間不需要建立持久的...
    kevinhuangk閱讀 2,002評論 0 1
  • 是呀,這世界誰少了誰會過不下去。 只是,心中少的那一塊也許只有自己知道。 時間,很自私 只有自己的節奏,心無旁騖的...
    喳喳講閱讀 208評論 0 0