天天看點

Wireshark過濾規則筆記,附軟體Wireshark基本用法 :https://www.cnblogs.com/dragonir/p/6219541.html

Wireshark(前稱Ethereal)是一個網絡封包分析軟體。網絡封包分析軟體的功能是撷取網絡封包,并盡可能顯示出最為詳細的網絡封包資料。Wireshark使用WinPCAP作為接口,直接與網卡進行資料封包交換。

在過去,網絡封包分析軟體是非常昂貴的,或是專門屬于盈利用的軟體。Ethereal的出現改變了這一切。在GNUGPL通用許可證的保障範圍底下,使用者可以以免費的代價取得軟體與其源代碼,并擁有針對其源代碼修改及客制化的權利。Ethereal是全世界最廣泛的網絡封包分析軟體之一。

Wireshark過濾規則筆記,附軟體Wireshark基本用法 :https://www.cnblogs.com/dragonir/p/6219541.html

(1)版本 ,占4位,指IP協定的版本,目前廣泛使用的IP協定版本号為4(即IPv4)。

2)首部長度 ,占4位,可表示的最大十進制數值是15。請注意,這個字段所表示數的機關是32位字長(1個32位字長是4位元組),是以,當IP的首部長度為1111時(即十進制的15),首部長度就達到60位元組。當IP分組的首部長度不是4位元組的整數倍時,必須利用最後的填充字段加以填充。是以資料部分永遠在4位元組的整數倍開始,這樣在實作IP協定時較為友善。首部長度限制為60位元組的缺點是有時可能不夠用。但這樣做是希望使用者盡量減少開銷。最常用的首部長度就是20位元組(即首部長度為0101),這時不使用任何選項。

(3)服務類型 ,占8位,用來獲得更好的服務,但實際上一直沒有被使用過。1998年IETF把這個字段改名為區分服務DS(Differentiated Services)。隻有在使用區分服務時,這個字段才起作用。

(4)總長度 ,總長度指首部和資料之和的長度,機關為位元組。總長度字段為16位,是以資料報的最大長度為2^16-1=65535位元組。在IP層下面的每一種資料鍊路層都有自己的幀格式,其中包括幀格式中的資料字段的最大長度,這稱為最大傳送單元MTU(Maximum Transfer Unit)。當一個資料報封裝成鍊路層的幀時,此資料報的總長度(即首部加上資料部分)一定不能超過下面的資料鍊路層的MTU值。

PS:圖中總長度為84個位元組,ping包預設為56個位元組,ICMP標頭是8個位元組,再加上首部長度20個位元組。下圖我将包長度設定為112個位元組後,總長度就變成140個位元組了

(5)辨別(identification),占16位。IP軟體在存儲器中維持一個計數器,每産生一個資料報,計數器就加1,并将此值賦給辨別字段。但這個“辨別”并不是序号,因為IP是無連接配接服務,資料報不存在按序接收的問題。當資料報由于長度超過網絡的MTU而必須分片時,這個辨別字段的值就被複制到所有的資料報的辨別字段中。相同的辨別字段的值使分片後的各資料報片最後能正确地重裝成為原來的資料報。

PS:個人了解就是一個資料報對應一個辨別,當資料報長度超過最大MTU時會被分片,但被分片的辨別字段是一樣的。下面ping一個3100位元組的包驗證一下,百度大包經禁ping了,改pingMOP:

從上圖可以看出3100位元組的大包被分為3片字段都是一樣的(12312)。

(6)标志(flag),占3位,但目前隻有2位有意義。标志字段中的最低位記為MF(More Fragment)。MF=1即表示後面“還有分片”的資料報。MF=0表示這已是若幹資料報片中的最後一個。标志字段中間的一位記為DF(Don’t Fragment),意思是“不能分片”。隻有當DF=0時才允許分片。

(7)片偏移,占13位。片偏移指出:較長的分組在分片後,某片在原分組中的相對位置。也就是說,相對使用者資料字段的起點,該片從何處開始。片偏移以8個位元組為偏移機關。這就是說,除了最後一個分片,每個分片的長度一定是8位元組(64位)的整數倍

PS:片偏移就是相對資料報字段的起點,以辨別中的ping包來看,第一個分片的片偏移是0,第二個是1480,第3個是2960,如下圖所示:

(8)生存時間,占8位,生存時間字段常用的的英文縮寫是TTL(Time To Live),表明是資料報在網絡中的壽命。由發出資料報的源點設定這個字段。其目的是防止無法傳遞的資料報無限制地在網際網路中兜圈子,因而白白消耗網絡資源。最初的設計是以秒作為TTL的機關。每經過一個路由器時,就把TTL減去資料報在路由器消耗掉的一段時間。若資料報在路由器消耗的時間小于1秒,就把TTL值減1。當TTL值為0時,就丢棄這個資料報。後來把TTL字段的功能改為“跳數限制”(但名稱不變)。路由器在轉發資料報之前就把TTL值減1.若TTL值減少到零,就丢棄這個資料報,不再轉發。是以,現在TTL的機關不再是秒,而是跳數。TTL的意義是指明資料報在網絡中至多可經過多少個路由器。顯然,資料報在網絡上經過的路由器的最大數值是255.若把TTL的初始值設為1,就表示這個資料報隻能在本區域網路中傳送。

(9)協定占8位,協定字段指出此資料報攜帶的資料是使用何種協定,以便使目的主機的IP層知道應将資料部分上交給哪個處理過程。

(10)首部檢驗和,占16位。這個字段隻檢驗資料報的首部,但不包括資料部分。這是因為資料報每經過一個路由器,路由器都要重新計算一下首部檢驗和(一些字段,如生存時間、标志、片偏移等都可能發生變化)。不檢驗資料部分可減少計算的工作量。

(11)源位址,占32位。

(12)目的位址,占32位。

(13)資料部分,可變,最大為總長度-首部長度。

基本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。如果這一時間間隔比較長那可能表示某種類型的網絡延時(封包丢失,擁塞,等等)。

函數

我們做了以下步驟:

将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端口)

Wireshark基本用法 :https://www.cnblogs.com/dragonir/p/6219541.html

軟體來源于吾愛破解

Wireshark-win64-3.2.3.7z密碼:www.lanol.cn|大小:57.0MB

已經過安全軟體檢測無毒,請您放心下載下傳。