WireShark學(xué)習(xí)筆記

抓包工具 Wireshark溪食, 用來獲取網(wǎng)絡(luò)數(shù)據(jù)封包囊卜,包括 HTTP、TCP错沃、UDP 等網(wǎng)絡(luò)協(xié)議包栅组。

wireshark是開源軟件,可以放心使用枢析。 可以運(yùn)行在WindowsMac OS上玉掸。

wireshark只能查看封包,而不能修改封包的內(nèi)容醒叁,或者發(fā)送封包司浪。

Wireshark VS Fiddler

Fiddler是在windows上運(yùn)行的程序,專門用來捕獲HTTP辐益,HTTPS的断傲。

wireshark能獲取HTTP,也能獲取HTTPS智政,但是不能解密HTTPS认罩,所以wireshark看不懂HTTPS中的內(nèi)容。

總結(jié)续捂,如果是處理HTTP,HTTPS 還是用Fiddler,? 其他協(xié)議比如TCP,UDP 就用wireshark垦垂。

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

開始抓包

wireshark是捕獲機(jī)器上的某一塊網(wǎng)卡的網(wǎng)絡(luò)包,當(dāng)你的機(jī)器上有多塊網(wǎng)卡的時(shí)候劫拗,你需要選擇一個(gè)網(wǎng)卡间校。

點(diǎn)擊Caputre->Interfaces.. 出現(xiàn)下面對(duì)話框,選擇正確的網(wǎng)卡页慷。然后點(diǎn)擊”Start”按鈕, 開始抓包憔足。

Caputre->Interfaces

WireShark 主要分為這幾個(gè)界面

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

2. Packet List Pane(封包列表)酒繁, 顯示捕獲到的封包滓彰, 有源地址和目標(biāo)地址,端口號(hào)州袒。 顏色不同揭绑,代表

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

4. Dissector Pane(16進(jìn)制數(shù)據(jù))

5. Miscellanous(地址欄,雜項(xiàng))

界面

過濾器有兩種:

一種是顯示過濾器郎哭,就是主界面上那個(gè)他匪,用來在捕獲的記錄中找到所需要的記錄

一種是捕獲過濾器,用來過濾捕獲的封包夸研,以免捕獲太多的記錄邦蜜。 在Capture -> Capture Filters 中設(shè)置

過濾表達(dá)式的規(guī)則

表達(dá)式規(guī)則

1. 協(xié)議過濾

比如TCP,只顯示TCP協(xié)議亥至。

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

封包列表(Packet List Pane)

封包列表的面板中顯示,編號(hào)关筒,時(shí)間戳溶握,源地址,目標(biāo)地址蒸播,協(xié)議睡榆,長度,以及封包信息袍榆。 你可以看到不同的協(xié)議用了不同的顏色顯示胀屿。

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

封包詳細(xì)信息 (Packet Details Pane)

這個(gè)面板是我們最重要的包雀,用來查看協(xié)議中的每一個(gè)字段宿崭。

各行信息分別為

Frame:物理層的數(shù)據(jù)幀概況

EthernetII:數(shù)據(jù)鏈路層以太網(wǎng)幀頭部信息

Internet Protocol Version 4:互聯(lián)網(wǎng)層IP包頭部信息

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

Hypertext Transfer Protocol:應(yīng)用層的信息才写,此處是HTTP協(xié)議

對(duì)應(yīng)七層模型


TCP包中的每個(gè)字段


TCP三次握手

TCP:

TCP/IP通過三次握手建立一個(gè)連接葡兑。這一過程中的三種報(bào)文是:SYN奖蔓,SYN/ACK,ACK讹堤。

第一步是找到PC發(fā)送到網(wǎng)絡(luò)服務(wù)器的第一個(gè)SYN報(bào)文吆鹤,這標(biāo)識(shí)了TCP三次握手的開始。

如果你找不到第一個(gè)SYN報(bào)文洲守,選擇Edit -> Find Packet菜單選項(xiàng)疑务。選擇Display Filter,輸入過濾條件:tcp.flags梗醇,這時(shí)會(huì)看到一個(gè)flag列表用于選擇因宇。選擇合適的flag砌创,tcp.flags.syn并且加上==1。點(diǎn)擊Find,之后trace中的第一個(gè)SYN報(bào)文就會(huì)高亮出來了蹂风。

注意:Find Packet也可以用于搜索十六進(jìn)制字符,比如惡意軟件信號(hào)陌凳,或搜索字符串娱仔,比如抓包文件中的協(xié)議命令。

一個(gè)快速過濾TCP報(bào)文流的方式是在Packet List Panel中右鍵報(bào)文虫溜,并且選擇Follow TCP Stream雹姊。這就創(chuàng)建了一個(gè)只顯示TCP會(huì)話報(bào)文的自動(dòng)過濾條件。

這一步驟會(huì)彈出一個(gè)會(huì)話顯示窗口衡楞,默認(rèn)情況下包含TCP會(huì)話的ASCII代碼吱雏,客戶端報(bào)文用紅色表示,服務(wù)器報(bào)文則為藍(lán)色瘾境。


HTTP

當(dāng)HTTP發(fā)送初始GET命令之后歧杏,TCP繼續(xù)數(shù)據(jù)傳輸過程,接下來的鏈接過程中HTTP會(huì)從服務(wù)器請(qǐng)求數(shù)據(jù)并使用TCP將數(shù)據(jù)傳回客戶端迷守。傳送數(shù)據(jù)之前犬绒,服務(wù)器通過發(fā)送HTTP? OK消息告知客戶端請(qǐng)求有效。如果服務(wù)器沒有將目標(biāo)發(fā)送給客戶端的許可兑凿,將會(huì)返回403 Forbidden凯力。如果服務(wù)器找不到客戶端所請(qǐng)求的目標(biāo),會(huì)返回404礼华。

如果沒有更多數(shù)據(jù)咐鹤,連接可被終止,類似于TCP三次握手信號(hào)的SYN和ACK報(bào)文圣絮,這里發(fā)送的是FIN和ACK報(bào)文祈惶。當(dāng)服務(wù)器結(jié)束傳送數(shù)據(jù),就發(fā)送FIN/ACK給客戶端,此報(bào)文表示結(jié)束連接行瑞。接下來客戶端返回ACK報(bào)文并且對(duì)FIN/ACK中的序列號(hào)加1奸腺。這就從服務(wù)器端終止了通信。要結(jié)束這一過程客戶端必須重新對(duì)服務(wù)器端發(fā)起這一過程血久。必須在客戶端和服務(wù)器端都發(fā)起并確認(rèn)FIN/ACK過程突照。

基本IO Graphs:

IO graphs是一個(gè)非常好用的工具⊙跬拢基本的Wireshark IO

graph會(huì)顯示抓包文件中的整體流量情況讹蘑,通常是以每秒為單位(報(bào)文數(shù)或字節(jié)數(shù))。默認(rèn)X軸時(shí)間間隔是1秒筑舅,Y軸是每一時(shí)間間隔的報(bào)文數(shù)座慰。如果想要查看每秒bit數(shù)或byte數(shù),點(diǎn)擊“Unit”翠拣,在“Y

Axis”下拉列表中選擇想要查看的內(nèi)容版仔。這是一種基本的應(yīng)用,對(duì)于查看流量中的波峰/波谷很有幫助误墓。要進(jìn)一步查看蛮粮,點(diǎn)擊圖形中的任意點(diǎn)就會(huì)看到報(bào)文的細(xì)節(jié)。

過濾:

每一個(gè)圖形都可以應(yīng)用一個(gè)過濾條件谜慌。這里創(chuàng)建兩個(gè)不同的graph然想,一個(gè)HTTP一個(gè)ICMP⌒婪叮可以看到過濾條件中Graph 1使用“http”Graph 2使用“icmp”变泄。圖中可以看到紅色I(xiàn)CMP流量中有些間隙,進(jìn)一步分析恼琼。

過濾

常用排錯(cuò)過濾條件:

對(duì)于排查網(wǎng)絡(luò)延時(shí)/應(yīng)用問題有一些過濾條件是非常有用的:

tcp.analysis.lost_segment:表明已經(jīng)在抓包中看到不連續(xù)的序列號(hào)妨蛹。報(bào)文丟失會(huì)造成重復(fù)的ACK,這會(huì)導(dǎo)致重傳晴竞。

tcp.analysis.duplicate_ack:顯示被確認(rèn)過不止一次的報(bào)文滑燃。大涼的重復(fù)ACK是TCP端點(diǎn)之間高延時(shí)的跡象。

tcp.analysis.retransmission:顯示抓包中的所有重傳颓鲜。如果重傳次數(shù)不多的話還是正常的,過多重傳可能有問題典予。這通常意味著應(yīng)用性能緩慢和/或用戶報(bào)文丟失甜滨。

tcp.analysis.window_update:將傳輸過程中的TCP window大小圖形化。如果看到窗口大小下降為零瘤袖,這意味著發(fā)送方已經(jīng)退出了衣摩,并等待接收方確認(rèn)所有已傳送數(shù)據(jù)。這可能表明接收端已經(jīng)不堪重負(fù)了。

tcp.analysis.bytes_in_flight:某一時(shí)間點(diǎn)網(wǎng)絡(luò)上未確認(rèn)字節(jié)數(shù)艾扮。未確認(rèn)字節(jié)數(shù)不能超過你的TCP窗口大屑惹佟(定義于最初3此TCP握手),為了最大化吞吐量你想要獲得盡可能接近TCP窗口大小泡嘴。如果看到連續(xù)低于TCP窗口大小甫恩,可能意味著報(bào)文丟失或路徑上其他影響吞吐量的問題。

tcp.analysis.ack_rtt:衡量抓取的TCP報(bào)文與相應(yīng)的ACK酌予。如果這一時(shí)間間隔比較長那可能表示某種類型的網(wǎng)絡(luò)延時(shí)(報(bào)文丟失磺箕,擁塞,等等)抛虫。

函數(shù):

IO Graphs有六個(gè)可用函數(shù):SUM,?MIN, AVG, MAX, COUNT, LOAD松靡。

MIN( ), AVG( ), MAX( )

首先看一下幀之間的最小,平均和最大時(shí)間建椰,這對(duì)于查看幀/報(bào)文之間的延時(shí)非常有用雕欺。我們可以將這些函數(shù)結(jié)合“frame.time_delta過濾條件看清楚幀延時(shí),并使得往返延時(shí)更為明顯棉姐。如果抓包文件中包含不同主機(jī)之間的多個(gè)會(huì)話屠列,而只想知道其中一個(gè)pair,可將“frame.time_delta”結(jié)合源和目標(biāo)主機(jī)條件如“ip.addr==x.x.x.x &&ip.addr==y.y.y.y”谅海。如下圖所示:

函數(shù)

我們做了以下步驟:

將Y軸設(shè)置為“Advanced”脸哀,讓Caculation域可見。不做這一步就看不到計(jì)算選項(xiàng)扭吁。

X軸時(shí)間間隔1秒撞蜂,所以每個(gè)柱狀圖代表1秒間隔的計(jì)算結(jié)果。

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

使用3個(gè)不同的graph,分別計(jì)算Min(), Avg(), Max()枫吧。

對(duì)每一個(gè)計(jì)算結(jié)果應(yīng)用條件“frame.time_delta”浦旱,將style設(shè)置成“FBar”,顯示效果最佳九杂。

Count( ):此函數(shù)計(jì)算時(shí)間間隔內(nèi)事件發(fā)生的次數(shù)颁湖,在查看TCP分析標(biāo)識(shí)符時(shí)很有用,例如重傳例隆。

Sum( ):該函數(shù)統(tǒng)計(jì)事件的累加值甥捺。有兩種常見的用例是看在捕獲TCP數(shù)據(jù)量,以及檢查TCP序列號(hào)镀层。

協(xié)議過濾器:

arp:顯示所有包括ARP請(qǐng)求和回復(fù)在內(nèi)的所有ARP數(shù)據(jù)流镰禾。

ip:顯示內(nèi)含IPv4頭在內(nèi)的(如ICMP目的地址不可達(dá)報(bào)文,在ICMP報(bào)文頭之后返回到來方向的IPv4頭)IP數(shù)據(jù)流。

ipv6:顯示所有IPv6數(shù)據(jù)流吴侦,包括內(nèi)含IPv6報(bào)文頭的IPv4報(bào)文屋休,如6to4,Teredo备韧,以及ISATAP數(shù)據(jù)流劫樟。

tcp:顯示所有基于TCP的數(shù)據(jù)流。

應(yīng)用過濾器:

bootp:顯示所有DHCP數(shù)據(jù)流(基于BOOTP)盯蝴。

dns:顯示包括TCP區(qū)域傳輸以及基于標(biāo)準(zhǔn)UDP的DNS請(qǐng)求和回復(fù)在內(nèi)的所有DNS數(shù)據(jù)流毅哗。

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

http:顯示所有HTTP命令捧挺,回復(fù)以及數(shù)據(jù)傳輸報(bào)文虑绵,但不顯示TCP握手報(bào)文,TCP ACK報(bào)文以及TCP結(jié)束報(bào)文闽烙。

icmp:顯示所有ICMP報(bào)文翅睛。

域過濾器:

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

http:host:顯示所有包含HTTP主機(jī)名字段的所有HTTP報(bào)文黑竞。此報(bào)文是客戶端向網(wǎng)絡(luò)服務(wù)器發(fā)送請(qǐng)求時(shí)發(fā)出的捕发。

ftp.request.command:顯示所有包含命令的FTP數(shù)據(jù)流,比如USER很魂,PASS扎酷,或RETR命令。

字符過濾器:

tcp.analysis.flags:顯示所有包含TCP分析標(biāo)識(shí)的所有報(bào)文遏匆,包括報(bào)文丟失法挨,重傳,或零窗口標(biāo)識(shí)幅聘。

tcp.analysis,zero_window:顯示含有表明發(fā)送方的接收緩存用完標(biāo)識(shí)的報(bào)文凡纳。

顯示過濾器比較運(yùn)算符:

通過擴(kuò)展過濾條件可查找某一域值,Wireshark針對(duì)此功能支持?jǐn)?shù)字比較運(yùn)算符帝蒿。

1. ==或eq

例如:ip.src == 10.2.2.2

顯示所有源地址為10.2.2.2的IPv4數(shù)據(jù)流

2. 荐糜!=或ne

例如:tcp.srcport != 80

顯示源端口除了80以外的所有TCP數(shù)據(jù)流

3. >或gt

例如:frame.time_relative > 1

顯示距前一個(gè)報(bào)文到達(dá)時(shí)間相差1秒的報(bào)文

4. <或lt

例如:tcp.window_size < 1460

顯示當(dāng)TCP接收窗口小于1460字節(jié)時(shí)的報(bào)文

5. >=或ge

例如:dns.count.answers >= 10

顯示包含10個(gè)以上answer的DNS響應(yīng)報(bào)文

6. <=或le

例如:ip.ttl <= 10

顯示IP報(bào)文中Time to Live字段小于等于10的報(bào)文

7. contains

例如:http contains “GET”

顯示所有HTTP客戶端發(fā)送給HTTP服務(wù)器的GET請(qǐng)求

對(duì)于基于TCP應(yīng)用的過濾條件采用比較運(yùn)算符。例如葛超,如果想看端口80上面的HTTP數(shù)據(jù)流暴氏,使用HTTP.port==80。

小貼士:

運(yùn)算符兩邊不用留空格绣张。ip.src == 10.2.2.2與ip.src==10.2.2.2的效果是相同的答渔。

過濾HTTP數(shù)據(jù)流:

在排查網(wǎng)頁瀏覽器會(huì)話或檢查網(wǎng)速過慢問題時(shí),對(duì)瀏覽器會(huì)話進(jìn)行過濾就顯得尤為重要胖替。過濾HTTP數(shù)據(jù)流有兩種方式:

http

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市独令,隨后出現(xiàn)的幾起案子端朵,更是在濱河造成了極大的恐慌,老刑警劉巖燃箭,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冲呢,死亡現(xiàn)場離奇詭異,居然都是意外死亡招狸,警方通過查閱死者的電腦和手機(jī)敬拓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來裙戏,“玉大人乘凸,你說我怎么就攤上這事±郯瘢” “怎么了营勤?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長壹罚。 經(jīng)常有香客問我葛作,道長,這世上最難降的妖魔是什么猖凛? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任赂蠢,我火速辦了婚禮,結(jié)果婚禮上辨泳,老公的妹妹穿的比我還像新娘虱岂。我一直安慰自己,他們只是感情好漠吻,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布量瓜。 她就那樣靜靜地躺著,像睡著了一般途乃。 火紅的嫁衣襯著肌膚如雪绍傲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天耍共,我揣著相機(jī)與錄音烫饼,去河邊找鬼。 笑死试读,一個(gè)胖子當(dāng)著我的面吹牛杠纵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钩骇,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼比藻,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼铝量!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起银亲,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤慢叨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后务蝠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拍谐,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年馏段,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轩拨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡院喜,死狀恐怖亡蓉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情够坐,我是刑警寧澤寸宵,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站元咙,受9級(jí)特大地震影響梯影,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜庶香,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一甲棍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赶掖,春花似錦感猛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至膳灶,卻和暖如春咱士,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背轧钓。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工序厉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人毕箍。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓弛房,卻偏偏與公主長得像,于是被迫代替她去往敵國和親而柑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子文捶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1.這篇文章不是本人原創(chuàng)的荷逞,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,037評(píng)論 6 174
  • Wireshark的主窗口界面 我們?cè)谡嚼肳ireshark進(jìn)行數(shù)據(jù)包分析之前粹排,應(yīng)當(dāng)首先了解一下這款軟件主 窗...
    kevinhuangk閱讀 3,855評(píng)論 1 7
  • title: 網(wǎng)絡(luò)基礎(chǔ)學(xué)習(xí)總結(jié)(1) tags: 網(wǎng)絡(luò) categories:筆記 date: 2017-06-1...
    行徑行閱讀 2,500評(píng)論 0 3
  • HTTP工作流程 HTTP是一個(gè)無狀態(tài)的協(xié)議颅围。所謂的無狀態(tài)指的是客戶端(Web瀏覽器)和服務(wù)器之間不需要建立持久的...
    kevinhuangk閱讀 1,973評(píng)論 0 1
  • 是呀,這世界誰少了誰會(huì)過不下去恨搓。 只是,心中少的那一塊也許只有自己知道筏养。 時(shí)間斧抱,很自私 只有自己的節(jié)奏,心無旁騖的...
    喳喳講閱讀 201評(píng)論 0 0