RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

網(wǎng)絡(luò)延遲及故障分析方法指南匯總!

jf_TEuU2tls ? 來源:CSDN技術(shù)社區(qū) ? 2022-12-30 09:02 ? 次閱讀

前言

大家好,這里是浩道linux,主要給大家分享linux、python、網(wǎng)絡(luò)通信相關(guān)的IT知識平臺(tái)。

今天浩道跟大家分享關(guān)于網(wǎng)絡(luò)延遲及故障分析方法相關(guān)的硬核干貨!

一、Wireshark中的輔助工具

我們在安裝完Wireshark時(shí),會(huì)發(fā)現(xiàn)系統(tǒng)中還多了一些程序,例如Tshark等。這些程序都采用了命令行的工作方式,雖然體積都很小,但是功能卻十分強(qiáng)大。

1、Wireshark命令行工具

開Wireshark的安裝目錄,然后按照類型對文件進(jìn)行排序,就可以看到除了Wireshark.exe之外還有如圖所示的一些命令行工具。

0d5cd8a4-87d4-11ed-bfe3-dac502259ad0.png

首先我們先來簡單地看一下這些工具的功能:

Tshark.exe:這個(gè)工具可以看作是Wireshark的命令行版本,可以用來捕獲數(shù)據(jù)包,也可以讀取保存好的數(shù)據(jù)包捕獲文件。

editcap.exe:主要用來轉(zhuǎn)換捕獲數(shù)據(jù)包捕獲文件的格式。

dumpcap.exe:和tshark.exe一樣用來捕獲數(shù)據(jù)包,保存為libpcap格式文件。

mergecap .exe:用來將多個(gè)數(shù)據(jù)包捕獲文件合并成一個(gè)。

capinfos.exe:用來將顯示數(shù)據(jù)包捕獲文件的信息。

text2pcap.exe:將十六進(jìn)制轉(zhuǎn)儲(chǔ)文件轉(zhuǎn)換為數(shù)據(jù)包捕獲文件。

2、使用Tshark和Dumpcap進(jìn)行數(shù)據(jù)包的捕獲

1. Tshark.exe使用方法

Tshark.exe是Wireshark的一個(gè)組件,可以用來捕獲數(shù)據(jù)包,也可以用來查看之前保存的數(shù)據(jù)包捕獲文件。

Tshark.exe也提供了對數(shù)據(jù)包的解析和保存功能。雖然沒有圖形化的工作界面,但是Tshark.exe的功能卻十分強(qiáng)大。如果你希望查看Tshark.exe的全部功能,可以在命令行中輸入“tshark–h”就可以查看幫助文件,這個(gè)幫助文件很大,下圖只顯示了其中與網(wǎng)絡(luò)接口(網(wǎng)卡)有關(guān)的部分。

0d7fec22-87d4-11ed-bfe3-dac502259ad0.png

我們首先來看一個(gè)使用Tshark.exe捕獲數(shù)據(jù)包的簡單示例,這里至少需要指定捕獲數(shù)據(jù)包所使用的網(wǎng)卡,在Linux下很容易查看到網(wǎng)卡的名稱和編號。

但是查看Windows下網(wǎng)卡的編號則要困難很多,不過在Tshark中,可以使用如下的命令查看每個(gè)網(wǎng)卡的編號:

tshark -D

接下來我們使用第4塊網(wǎng)卡來捕獲數(shù)據(jù),為了加快捕獲的速度,這里使用-s參數(shù)來表示只捕獲數(shù)據(jù)包的前512個(gè)字節(jié)數(shù)據(jù):

tshark -s 512 -i 4

和Wireshark一樣,Tshark還支持捕獲過濾器和顯示過濾器的使用,這兩種過濾器的語法也和Wireshark中規(guī)定的一樣,例如下面就使用了目標(biāo)端口為80的過濾器:

tshark -s 512 -i 4 -f 'tcp dst port 80'

捕獲到的數(shù)據(jù)包如圖17-3所示:

0da80efa-87d4-11ed-bfe3-dac502259ad0.png

需要停止捕獲數(shù)據(jù)包時(shí),可以使用“Ctrl+C”組合鍵。

Tshark中還提供了強(qiáng)大的統(tǒng)計(jì)功能,這個(gè)功能通過參數(shù)-z來實(shí)現(xiàn),這個(gè)參數(shù)后面需要使用Tshark所指定的值,可以使用如下命令:

tshark -z -h

Tshark所有可以使用的值如圖所示:

0e04cdd4-87d4-11ed-bfe3-dac502259ad0.png

這里面我們選擇使用“io,phs”作為-z參數(shù)的值,這里面我們添加了-q來指定不顯示捕獲的數(shù)據(jù)包信息:

tshark -i 4 -f “port 80” -q -z io,phs

執(zhí)行該命令的結(jié)果如圖所示:

0e279a9e-87d4-11ed-bfe3-dac502259ad0.png

Tshark功能詳情,請參考:tshark(1)

2. Dumpcap的用法

Dumpcap也是Wireshark中自帶的一個(gè)命令行工具,這種工具的優(yōu)勢就在于對資源的消耗較小。

你可以使用dumpcap.exe -h來查看它的幫助文件:

0e4fa296-87d4-11ed-bfe3-dac502259ad0.png

這里首先來介紹幾個(gè)最為常用的選項(xiàng)。

-D:列出當(dāng)前可以的網(wǎng)卡設(shè)備。

-i<>:指定要使用的網(wǎng)卡名字或者序號。

-f<capture filter>:使用BPF語法完成的過濾器表達(dá)式。

-b filesize:指定文件的大小。

-w<o(jì)utfile>:指定用來保存文件的名稱。

這個(gè)工具的使用與Tshark很相似,dumpcap詳情功能,請參考:dumpcap(1)

3、使用Editcap對數(shù)據(jù)包進(jìn)行修改

使用Wireshark在捕獲數(shù)據(jù)包時(shí)得到的文件可能會(huì)很大,Editcap就可以將這種大文件分割成較小的文件。另外,Editcap也可以通過開始時(shí)間和停止時(shí)間來獲取捕獲數(shù)據(jù)包文件的子集,刪除捕獲數(shù)據(jù)包文件中重復(fù)數(shù)據(jù)等。

同樣我們了解這個(gè)工具最好的辦法還是查看它的幫助文件,使用Editcap -h可以看到:

0e7b38b6-87d4-11ed-bfe3-dac502259ad0.png

同樣這個(gè)幫助文件也很長,這里只顯示了其中的一部分。

下面我們以實(shí)例的方式來介紹一下它的應(yīng)用:

editcap[options]…<infile><o(jì)utfile>[<packet

這里面的infile和outfile是必要參數(shù),其中infile表示要處理的捕獲數(shù)據(jù)包文件,outfile表示經(jīng)過處理的文件。例如,我們已經(jīng)將Wireshark中捕獲的數(shù)據(jù)包文件保存為Traces.pcapng,現(xiàn)在需要將里面的前2000個(gè)數(shù)據(jù)包單獨(dú)保存成另一個(gè)文件,可以執(zhí)行如下所示的命令:

editcap –r Traces.pcapng packetrange.pcapng 1-2000

這里面使用了一個(gè)參數(shù)r,它的作用是保留要處理的文件Traces.pcapng,如果不使用這個(gè)參數(shù)的話,這個(gè)文件就會(huì)被刪除掉。

將一個(gè)文件拆分成多個(gè)文件時(shí),需要指定拆分的條件,例如一個(gè)捕獲了100000個(gè)數(shù)據(jù)包的文件,我們就可以按照每2000個(gè)數(shù)據(jù)包為一個(gè)新文件的方式作為條件。

拆分時(shí)使用的參數(shù)為c:

editcap –c 2000 Traces.pcapng SplitTrace.pcapng

當(dāng)一個(gè)文件中包含了重復(fù)的數(shù)據(jù)包時(shí),可以使用參數(shù)d或者D來將重復(fù)的數(shù)據(jù)包去掉,其中-d在檢測一個(gè)數(shù)據(jù)包是否重復(fù)的時(shí)候,只會(huì)和當(dāng)前數(shù)據(jù)包的前5個(gè)進(jìn)行比較,而參數(shù)-D則可以指定范圍(有效值可以是0~100000)。

editcap –d Traces.pcapng nodupes.pcapng

4、使用Mergecap對數(shù)據(jù)包進(jìn)行合并

相比起其他工具,Mergecap的功能比較單一,它主要的功能就是將多個(gè)文件合并成一個(gè)文件,最基本的語法為

mergecap –w  infile1.pcapng infile2.pcapng…

也就是mergecap后面跟多個(gè)文件名,其中的第一個(gè)是其他文件合并生成的。

主要參數(shù)的作用如下:

-a:將多個(gè)文件拼接成一個(gè)文件,默認(rèn)為按照數(shù)據(jù)包的時(shí)間戳進(jìn)行合并。

-s<snaplen>:將文件中的數(shù)據(jù)包均截?cái)酁椋約naplen>字節(jié)。

-w<o(jì)utfile>:設(shè)置保存為文件名。

-F<capture type>:設(shè)置保存的文件類型,默認(rèn)為pcapng。

-T<encap type>:設(shè)置保存文件的封裝類型,默認(rèn)和原始文件類型一致。

下面的例子中就將source1.pcapng、source2.pcapng、source3.pcapng這3個(gè)文件合并成了一個(gè)merged.pacap文件。

mergecap –w merged.pacap source1.pcapng source2.pcapng source3.pcapng

另外,我們也可以只截取目標(biāo)數(shù)據(jù)包的一部分來進(jìn)行合并,例如截取每個(gè)數(shù)據(jù)包的前128個(gè)字節(jié),使用的命令如下所示:

mergecap –w merged.pacap -s 128 source1.pcapng source2.pcapng source3.pcapng

5、Capinfos的使用方法

capinfos是一個(gè)顯示數(shù)據(jù)包捕獲文件信息的程序。

這個(gè)程序最常見的參數(shù)如下所示:

-t輸出包文件的類型

-E輸出包文件的封裝類型

-c輸出包的個(gè)數(shù)

-s輸出包文件的大?。▎挝唬篵yte)

-d輸出包所有包的總字節(jié)長度(單位:byte)

-u輸出包文件中包的時(shí)間周期(單位:second)

-a輸出包文件中包的起始時(shí)間

-e輸出包文件中包的結(jié)束時(shí)間

-y輸出包文件中包的平均速率(單位:byte/s)

-i輸出包文件中包的平均速率(單位:bit/s)

-z輸出包文件中包的平均字節(jié)長度(單位:byte)

-x輸出包文件中包的平均速率(單位:packet/s)

如果需要查看這個(gè)包的所有信息:

capinfos caps.pcap

執(zhí)行的結(jié)果如圖所示:

0ea3a22e-87d4-11ed-bfe3-dac502259ad0.png

6、USBPcapCMD的使用方法

USB技術(shù)的應(yīng)用越來越廣泛,我們常用的U盤、鼠標(biāo)、鍵盤都是USB設(shè)備。我們有時(shí)也會(huì)遇見要對這種設(shè)備進(jìn)行調(diào)試的情形,但是很少有人知道其實(shí)Wireshark也是可以勝任這一任務(wù)的。

Wireshark可以像處理網(wǎng)絡(luò)中的通信一樣來捕獲和解析USB設(shè)備的通信。

Wireshark2.0之后就加入了對USB協(xié)議的支持,USB協(xié)議版本有USB1.0、USB1.1、USB2.0、USB3.1等,目前USB2.0比較常用。這里,我們介紹如何使用Wireshark來捕獲和分析USB協(xié)議。

使用Wireshark對USB進(jìn)行調(diào)試的時(shí)候需要考慮所使用的操作系統(tǒng),默認(rèn)情況下,Windows環(huán)境中需要安裝專門的軟件才能完成這個(gè)工作。不過Wireshark2.0以上的版本提供了一個(gè)名為USBPcap的工具。這個(gè)工具需要管理員的工作權(quán)限,這個(gè)工具沒有提供圖形化的操作界面,所以我們需要在命令行下完成這些工作。

首先我們將工作目錄切換到USBPcap的安裝目錄:

cd c:program FilesUSBPcap

使用-h作為參數(shù)來查看這個(gè)工具的幫助:

C:Program FilesUSBPcap>USBPcapCMD.exe -h

0ebfc2ec-87d4-11ed-bfe3-dac502259ad0.png

如果現(xiàn)在需要列出當(dāng)前連接設(shè)備的話,我們只需要輸入這個(gè)工具的名稱即可,無需任何參數(shù)。執(zhí)行之后你就可以看到一個(gè)USB設(shè)備里列表,在這個(gè)列表可以找到所需要調(diào)試的設(shè)備。

下圖演示了一個(gè)在我的工作環(huán)境(Windows 7)下的USB設(shè)備列表,這里面我的計(jì)算機(jī)連接了一個(gè)無線網(wǎng)卡,一個(gè)USB鼠標(biāo),一個(gè)USB鍵盤和一個(gè)USB2.0集線器,它們都連接到了\.USBPcap1上。

0eff64e2-87d4-11ed-bfe3-dac502259ad0.png

最后一行會(huì)顯示“Select filter to monitor(q to quit):”,在這里面輸入要捕獲信息的控制設(shè)備。這里只有一個(gè)設(shè)備\.USBPcap1,所以我們輸入數(shù)字1。

之后我們還要再輸入一個(gè)文件的名稱,你可以按照自己的習(xí)慣來命名。這個(gè)文件將用來保存捕獲到的USB設(shè)備信息。

我們可以使用Enter鍵來開始捕獲USB流量,當(dāng)開始捕獲之后,這個(gè)控制臺(tái)不會(huì)有任何的顯示。

0f3011a0-87d4-11ed-bfe3-dac502259ad0.png

當(dāng)捕獲結(jié)束的時(shí)候,可以使用Ctrl+C組合鍵。然后USBPcap控制臺(tái)就會(huì)關(guān)閉,所有捕獲的數(shù)據(jù)將會(huì)保存在C:Program FilesUSBPcap下。

然后我們就可以使用Wireshark來查看這個(gè)捕獲文件:

0f4a2bb2-87d4-11ed-bfe3-dac502259ad0.png

二、Wireshark過濾器

Wireshark的世界里有2種過濾器,分別是采集過濾器和顯示過濾器,采用恰當(dāng)?shù)倪^濾器,不但能提高數(shù)據(jù)分析的靈活性,而且能讓分析者更快看到自己想要的分析對象。

1、Wireshark采集過濾器

使用Wireshark采集數(shù)據(jù)包時(shí),可能有諸多原因會(huì)使用到采集過濾器,比如減少采集的數(shù)據(jù)包大小來節(jié)省磁盤空間,加速問題和目標(biāo)分析,提高軟件自身工作速率等等。

1. 為什么要使用抓包過濾器

當(dāng)網(wǎng)絡(luò)中數(shù)據(jù)流的規(guī)模相當(dāng)龐大時(shí),只抓取滿足某些條件的流量就顯得十分重要了。如果用戶需要在生產(chǎn)環(huán)境中進(jìn)行流量分析,那他一定遲早會(huì)需要使用到抓包過器。用戶要在開始抓包之前使用抓包過濾器。總之,Wireshark抓取的每個(gè)數(shù)據(jù)包都會(huì)提交給抓包引擎,再由抓包引擎將抓取的數(shù)據(jù)包轉(zhuǎn)換成人類可以讀懂的格式。但是,如果用戶應(yīng)用了抓包過濾器,那么Wireshark就會(huì)丟棄與用戶需求不符的那些數(shù)據(jù)包。Wireshark不會(huì)將這些丟棄的數(shù)據(jù)包交給抓包引擎進(jìn)行轉(zhuǎn)換。相比之下,顯示過器就要具體和強(qiáng)大得多了。在使用抓包過濾器時(shí),用戶一定要謹(jǐn)慎,因?yàn)槿绻行?shù)據(jù)包因?yàn)榕c用戶定義的規(guī)則不符可能被丟棄,這些丟棄的數(shù)據(jù)包是無法恢復(fù)的。

創(chuàng)建過源器時(shí)要使用伯克利數(shù)據(jù)包過器(BPF)語法,還有很多協(xié)議分析軟件使用的也是這種語法,因?yàn)檫@種語法是行業(yè)標(biāo)準(zhǔn)。這種語法很容易學(xué)習(xí)和使用,使用基本的格式來構(gòu)建用戶的過濾標(biāo)準(zhǔn)就行了。

2. 如何使用抓包過濾器

最簡單直接的使用方式如下圖,在Wireshark主體界面,直接輸入抓捕過濾器表達(dá)即可。

0f6dfc2c-87d4-11ed-bfe3-dac502259ad0.png

也可以選擇已有的過濾器名稱,直接使用。

如下圖:

0f9f4a8e-87d4-11ed-bfe3-dac502259ad0.png

3. 如何管理過濾器

管理過濾器的目的是提前定義常用的過濾器,在使用的使用直接使用,以避免再去查找語法或書寫規(guī)范等操作。

選擇捕獲——捕獲過濾器,即可打開捕獲過濾器管理窗口。

0fd28c5a-87d4-11ed-bfe3-dac502259ad0.png

在捕獲過濾器窗口,你可以定義自己想要的過濾器并保存,下次使用的使用,直接從下拉菜單選擇就行。

在定義捕獲過濾器時(shí),有個(gè)小技巧,就是多用復(fù)制功能,這種先通過復(fù)制形似的過濾器,然后再調(diào)整修改的方式能夠加快過濾器的定義速度,提高定義過濾器的準(zhǔn)確性。

1000c48a-87d4-11ed-bfe3-dac502259ad0.png

4. 抓包過濾器語法規(guī)則

捕獲過濾器應(yīng)用于Winpcap,并使用 Berkeley Packet Filter(BPF)語法。這個(gè)語法被廣泛用于多種數(shù)據(jù)包抓包軟件,主要因?yàn)榇蟛糠謹(jǐn)?shù)據(jù)包抓包軟件都依賴于使用BPF的libpcap/Winpcap庫。

掌握BPF語法對你在數(shù)據(jù)包層級更深入地探索網(wǎng)絡(luò)來說是非常關(guān)鍵的。使用BPF語法創(chuàng)建的過濾器被稱為表達(dá)式,并且每個(gè)表達(dá)式包含一個(gè)或多個(gè)原語。每個(gè)原語包含一個(gè)或多個(gè)限定詞,然后跟著一個(gè)ID名字或者數(shù)字,如下圖是對限定詞的介紹。

10242d9e-87d4-11ed-bfe3-dac502259ad0.png

下圖是一個(gè)完整的抓包過濾器示例:

1047bba6-87d4-11ed-bfe3-dac502259ad0.png

在這個(gè)給定表達(dá)式的組成部分中,一個(gè)src限定詞和192.168.0.10組成了一個(gè)原語。這個(gè)原語本身就是表達(dá)式,可以用它只捕獲那些源IP地址是192.168.0.10的流量。

你可以使用以下3種邏輯運(yùn)算符,對原語進(jìn)行組合,從而創(chuàng)建更高級的表達(dá)式。

連接運(yùn)算符與(&&)

選擇運(yùn)算符或(II)

否定運(yùn)算符非(!)

舉例來說,下面的這個(gè)表達(dá)式只對源地址是192.168.0.10和源端口或目標(biāo)端口是80的流量進(jìn)行捕獲。

src 1921680.108 && port 80

5. 常見抓包過濾器列表

以下是常見的抓包過濾器,供參考。

過濾器 過濾器
host 192.168.1.1 所有與主機(jī)192.168.1.1相關(guān)的流量
port 8080 所有與8080端口相關(guān)的流量
src host 192.168.1.1 所有從主機(jī)192.168.1.1始發(fā)的流量
dst host 192. 168.1.1 所有去往主機(jī)192.168.1.1的流量
src port 53 所有由53端口發(fā)出的流量
dst port 21 所有去往21端口的流量
src 192.168.1.1 and tcp port21 所有從19216811且與tcp端口21相關(guān)的流量
dst 192.168.1.1 or dst 192.168.1.2 所有去往192.168.1.1或者去往192.168.1.2的流量
not port 80 所有與80端口不相關(guān)的流量
not src host 192.168.1.1 所有非主機(jī)192.168.1.1發(fā)出的流量
not port 21 and not port 22 所有既與21端口無關(guān),也與22端口無關(guān)的流量
tcp 所有tcp流量

2、Wireshark顯示過濾器

和抓包過濾器不同,顯示過濾器是在現(xiàn)有的數(shù)據(jù)包中通過過濾條件,篩選查看想要的對象,不需要顯示的內(nèi)容被“隱藏”,而執(zhí)行了抓包過濾器,不需要的數(shù)據(jù)包則會(huì)直接被丟棄,無法挽回。

1. 顯示過濾器簡介

顯示過濾器遠(yuǎn)比抓包過濾器更加靈活和強(qiáng)大。顯示過濾器不會(huì)丟失數(shù)據(jù)包,只是為了增強(qiáng)用戶閱讀而將一部分?jǐn)?shù)據(jù)包隱藏起來。丟棄數(shù)據(jù)包有時(shí)并非明智選擇,因?yàn)橐坏?shù)據(jù)包被丟棄,這些數(shù)據(jù)包也就無法再恢復(fù)回來了。

在分組列表面板上面的輸入框,你可以輸入顯示過濾器,或者通過下拉顯示近期使用的過濾器記錄,來選擇使用顯示過濾器。

105a5388-87d4-11ed-bfe3-dac502259ad0.png

在用戶配置了顯示過濾器之后,只有那些滿足用戶過濾器設(shè)置條件的數(shù)據(jù)包才會(huì)被顯示出來。使用應(yīng)用了顯示過濾器之后,就會(huì)在Wireshark狀態(tài)欄的第二列看到使用顯示過濾器后的相關(guān)信息。

10a53178-87d4-11ed-bfe3-dac502259ad0.png

2. 如何快速創(chuàng)建顯示過濾器

顯示過濾器可以在Packet List(數(shù)據(jù)包列表面板)上面右鍵,從作為過濾器、準(zhǔn)備過濾器和對話過濾器中快速生成,如下圖所示。顯示過濾器使用的語法很容易理解并使用。對于新手來說,顯示過濾器是一種超級強(qiáng)大的功能,它會(huì)讓你分析起數(shù)據(jù)包游刃有余。

10d5a902-87d4-11ed-bfe3-dac502259ad0.png

顯示過濾器可以用很多不同的參數(shù)作為匹配標(biāo)準(zhǔn),比如IP地址協(xié)議、端口號、某些協(xié)議頭部的參數(shù)。此外,用戶也用一些條件工具和組合運(yùn)算符創(chuàng)建出更加復(fù)雜的表達(dá)式。用戶可以將不同的表達(dá)式組合起來,讓軟件顯示的數(shù)據(jù)包范圍更加精確。在數(shù)據(jù)包列表面板中顯示的所有數(shù)據(jù)包都可以用數(shù)據(jù)包中包含的字段進(jìn)行過濾顯示。

3. 顯示過濾器語法結(jié)構(gòu)

每條顯示過濾器通常都是由若干原詞構(gòu)成,原詞之間通過連接符(如and或or等)連接,原詞之前還可以添加not表示相反的意思,其語法如下所列。

[not]表達(dá)式[and or] [not]表達(dá)式

下圖是顯示過濾器表達(dá)式中條件運(yùn)算符的解釋。

10f1d398-87d4-11ed-bfe3-dac502259ad0.png

下圖是邏輯運(yùn)算符的說明解釋:

1109ecda-87d4-11ed-bfe3-dac502259ad0.png

4. 常用顯示過濾器參考

以下是常見顯示過濾器,供參考。

112309d6-87d4-11ed-bfe3-dac502259ad0.png

5. 如何保存過濾器

當(dāng)你創(chuàng)建了很多捕獲和顯示過濾器之后,會(huì)發(fā)現(xiàn)其中有一些使用得格外頻繁。為了每次使用它們的時(shí)候都不重新輸入,可以讓W(xué)ireshark把常用的過濾器規(guī)則保存下來,供以后使用。

選擇分析——顯示過濾器,打開顯示過濾器窗口,就能看到系統(tǒng)默認(rèn)自帶的部分顯示過濾器。

11538214-87d4-11ed-bfe3-dac502259ad0.png

根據(jù)自己的需求,在顯示過濾器窗口,使用新增和刪除功能,進(jìn)行過濾器創(chuàng)建和刪除,你也可以使用復(fù)制這一快捷的方法,先復(fù)制類似形式的已有過濾器,再通過修改名稱和過濾器內(nèi)容,形成新的過濾器。

三、使用Wireshark分析數(shù)據(jù)包技巧

在進(jìn)行數(shù)據(jù)包分析過程,一定會(huì)遇到成千上萬的數(shù)據(jù)包需要分析的常見。如何在如此大量數(shù)據(jù)的環(huán)境中快速得到你想要的對象,提高分析效率和精準(zhǔn)度呢?采用常見的分析技巧,也許能給你帶來極大的幫助。

1、使用查找數(shù)據(jù)包

如果要快速查找到分析想要的數(shù)據(jù),按ctr+f快捷鍵,打開查找輸入框,輸入框中可輸入顯示過濾器、十六進(jìn)制值、字符串和正則表達(dá)式內(nèi)容。

1187b584-87d4-11ed-bfe3-dac502259ad0.png

以下是搜索類型和例子,關(guān)于正則表達(dá)式,這里不再展開。

11b1608c-87d4-11ed-bfe3-dac502259ad0.png

當(dāng)你選好選項(xiàng)并在文本框中輸入搜索關(guān)鍵詞之后,單擊查找,就會(huì)找到滿足該關(guān)鍵詞的第一個(gè)數(shù)據(jù)包。如果想要找到下一個(gè)匹配的數(shù)據(jù)包,按Ctrl-N,想要找前一個(gè),按Ctrl-B。

2、標(biāo)記數(shù)據(jù)包

在找到那些符合搜索條件的數(shù)據(jù)包之后,就可以根據(jù)需要進(jìn)行標(biāo)記。舉例來說,可能你希望將那些需要分開保存的數(shù)據(jù)包標(biāo)記出來,或者根據(jù)顏色快速查找它們。被標(biāo)記的數(shù)據(jù)包會(huì)以黑底白字顯示(你也可以單獨(dú)將標(biāo)記了的數(shù)據(jù)包選擇出來,然后作為數(shù)據(jù)包捕獲保存下來)。

被標(biāo)記的數(shù)據(jù)包將在你的屏幕上以高亮顯示。在下面這個(gè)例子中,數(shù)據(jù)包50被標(biāo)記并且顯示為深色。

11ca13b6-87d4-11ed-bfe3-dac502259ad0.png

如果你想要標(biāo)記一個(gè)數(shù)據(jù)包,右擊Packet List面板,并在彈出菜單中選擇 Mark Packet,或者在Packet List面板中選中一個(gè)數(shù)據(jù)包,然后按Ctrl-M。

如果想取消對一個(gè)數(shù)據(jù)包的標(biāo)記,再按一次Ctrl-M就可以將其取消。在一次捕獲中,你想標(biāo)記多少個(gè)數(shù)據(jù)包都可以。如果你想要在標(biāo)記的數(shù)據(jù)包間前后切換,分別按SHIFT-CTRL-N和SHIFT-CTRL-B切換即可。

3、打印數(shù)據(jù)包

盡管大多數(shù)情況下分析都會(huì)在電腦前進(jìn)行,但你仍然可能需要將捕獲結(jié)果打印出來。我經(jīng)常將數(shù)據(jù)包打印出來,并貼在顯眼的位置,這樣在做其他分析的時(shí)候,就可以快速地參考這些內(nèi)容。特別是在做報(bào)告的時(shí)候,能夠?qū)?shù)據(jù)包打印成一個(gè)PDF文件將是非常方便的。

如果需要打印捕獲的數(shù)據(jù)包,在主菜單中選擇文件——打印,打開打印對話框。

你可將選中的數(shù)據(jù)以文本或者Post Script的格式打印或者輸出到一個(gè)文件。與 另存為對話框相似,你也可以按一定范圍打印數(shù)據(jù)包,比如被標(biāo)記的數(shù)據(jù)包,或者作為過濾器篩選結(jié)果顯示出來的數(shù)據(jù)包。對于每一個(gè)數(shù)據(jù)包,你也可以在主面板中選擇打印對象。在你做好了這些選擇之后,單擊打印。

1212775a-87d4-11ed-bfe3-dac502259ad0.png

4、設(shè)定數(shù)據(jù)包相對時(shí)間參考

時(shí)間在數(shù)據(jù)包分析中非常重要。所有在網(wǎng)絡(luò)上發(fā)生的事情都是與時(shí)間息息相關(guān)的,并且你幾乎需要在每個(gè)捕獲文件中檢查時(shí)間規(guī)律以及網(wǎng)絡(luò)延遲。Wireshark意識到時(shí)間的重要性,并提供了一些相關(guān)的選項(xiàng)以供設(shè)定。下面介紹相對時(shí)間參考。

數(shù)據(jù)包的相對時(shí)間參考,可以讓你以一個(gè)數(shù)據(jù)包作為基準(zhǔn),而之后的數(shù)據(jù)包都以此計(jì)算相對時(shí)間戳。當(dāng)一系列的順序事件不是在捕獲開始時(shí)被觸發(fā),而是在中間某個(gè)地方被觸發(fā),這個(gè)功能會(huì)變得非常好用。

如果希望將某一個(gè)數(shù)據(jù)包設(shè)定為時(shí)間參考,在 Packet Listi面板中選擇作為相對參考的數(shù)據(jù)包,然后右鍵,選擇設(shè)置/取消設(shè)置時(shí)間參考。同樣,如果要取消一個(gè)數(shù)據(jù)包的相對時(shí)間參考,還是在這個(gè)地方操作。

12464c42-87d4-11ed-bfe3-dac502259ad0.png

當(dāng)你將一個(gè)數(shù)據(jù)包設(shè)定為時(shí)間參考之后,Packet List面板中這個(gè)數(shù)據(jù)包的Time列就會(huì)顯示為REF*,如下圖所示。只有當(dāng)捕獲的時(shí)間顯示格式設(shè)定為相對于捕獲開始的時(shí)間,設(shè)定數(shù)據(jù)包時(shí)間參考才有用處。使用其他設(shè)定都不會(huì)生成有用的結(jié)果,并且其產(chǎn)生的一堆時(shí)間會(huì)很令人迷惑。

128ada10-87d4-11ed-bfe3-dac502259ad0.png

數(shù)據(jù)包相對時(shí)間參考在分析網(wǎng)絡(luò)性能問題,網(wǎng)絡(luò)延時(shí),應(yīng)用性能問題及最終用戶體驗(yàn)時(shí)都極為重要,熟練掌握相對時(shí)間參考設(shè)置,能夠讓分析事半功倍。

下圖為網(wǎng)深科技NetInside企業(yè)級應(yīng)用性能管理系統(tǒng)自動(dòng)分析出網(wǎng)絡(luò)數(shù)據(jù)包中的各種延時(shí)及最終用戶體驗(yàn),企業(yè)級系統(tǒng)能夠針對任意一個(gè)用戶、任意一個(gè)IP、任意一個(gè)網(wǎng)段或任意一個(gè)應(yīng)用系統(tǒng)做這樣的分析輸出,而這樣的分析只需動(dòng)動(dòng)手指就能夠完成。

12bb085c-87d4-11ed-bfe3-dac502259ad0.png

5、匯總分析一個(gè)抓包文件

抓包匯總功能在生成數(shù)據(jù)包分析報(bào)告時(shí)常常用到。

1. 如何打開匯總分析

要打開匯總分析,首先要打開一個(gè)抓包文件。

打開菜單——捕獲文件屬性,彈出的窗口就是匯總分析界面。

12e55d6e-87d4-11ed-bfe3-dac502259ad0.png

2. 匯總分析功能解讀

下圖是匯總分析界面,詳細(xì)顯示了該抓包文件的相關(guān)信息,下面我們將詳細(xì)解讀匯總分析中各個(gè)條目的內(nèi)容。

捕獲文件屬性對話框可以分為下面幾部分。

文件:顯示的是一些總體的信息,比如文件名、文件所在位、長度、哈希、使用的格式、封裝等。

時(shí)間:這一部分顯示抓取第一個(gè)數(shù)據(jù)包和最后一個(gè)數(shù)據(jù)包的時(shí)間,以及之間經(jīng)歷的時(shí)間(也就是總的抓包時(shí)長)。

捕獲:這一部分會(huì)顯示捕獲報(bào)文的網(wǎng)卡信息、操作系統(tǒng)信息及當(dāng)前使用的Wireshark系統(tǒng)版本信息。

接口:這里會(huì)顯示所有抓取流量接口的詳細(xì)信息

統(tǒng)計(jì):這里會(huì)顯示與所有顯示過濾器有關(guān)的統(tǒng)計(jì)數(shù)據(jù),以及應(yīng)用過濾器之后遭忽略數(shù)據(jù)包的百分比。

捕獲文件描述:用戶可以在這里寫入備注信息。

132e6720-87d4-11ed-bfe3-dac502259ad0.png

下圖是統(tǒng)計(jì)部分的內(nèi)容,它們提供了各種詳細(xì)的數(shù)據(jù),包括以表格形式提供的匯總數(shù)據(jù),其中包含了各類基本信息,如數(shù)據(jù)包的平均大小、抓取到的數(shù)據(jù)包總數(shù),第一次抓到數(shù)據(jù)包和最后一次抓到數(shù)據(jù)包之間經(jīng)歷的時(shí)間等。

比如,我們在應(yīng)用顯示過濾器之后生成了一個(gè)抓包文件。在此之后,我們再次打開捕獲文件屬性窗口??梢钥吹浇y(tǒng)計(jì)部分顯示了捕獲文件和使用了顯示過濾器后的結(jié)果比較。

136b7124-87d4-11ed-bfe3-dac502259ad0.png

捕獲文件屬性窗口所提供的所有信息來源于所有打開的數(shù)據(jù)包文件,如果使用了顯示過濾器,則顯示使用了過濾器的數(shù)據(jù)包。

6、查看數(shù)據(jù)包中協(xié)議信息

網(wǎng)絡(luò)協(xié)議是網(wǎng)絡(luò)分析的基礎(chǔ)信息,網(wǎng)絡(luò)分析人員拿到一個(gè)抓包文件后,往往會(huì)快速了解一下。一個(gè)抓包文件中都由哪些協(xié)議組成,這些協(xié)議的占用比例分別是多少,協(xié)議層級關(guān)系如何等等,這些疑問都可以由Wireshark自帶的協(xié)議分級功能來回答。

1. 打開協(xié)議分級

要打開協(xié)議分析,意味著你已經(jīng)打開了一個(gè)抓包文件。

打開菜單——協(xié)議分級,彈出的窗口就是協(xié)議分級統(tǒng)計(jì)界面。

137fe3de-87d4-11ed-bfe3-dac502259ad0.png

協(xié)議分級統(tǒng)計(jì)可以給用戶提供通信中使用到的各個(gè)協(xié)議的分布信息,同時(shí)也可以向用戶展示出那些不符合網(wǎng)絡(luò)基準(zhǔn)的異常操作。所謂各個(gè)協(xié)議的分布信息,是指這個(gè)界面可以顯示某種協(xié)議在兩臺(tái)主機(jī)間通信數(shù)據(jù)中所占的百分比以及相關(guān)的統(tǒng)計(jì)數(shù)據(jù),比如顯示每種協(xié)議分別發(fā)送和接收了多少比特、多少個(gè)數(shù)據(jù)包。用戶網(wǎng)絡(luò)當(dāng)前的流量狀態(tài)與網(wǎng)絡(luò)正常狀態(tài)下建立的流量基線相比較,就很容易發(fā)現(xiàn)網(wǎng)絡(luò)中的異常操作。

2. 協(xié)議分級統(tǒng)計(jì)詳細(xì)解讀

協(xié)議分級統(tǒng)計(jì)以直觀的樹形圖展開顯示,第一列分級顯示了協(xié)議信息,以及協(xié)議之間的層級關(guān)系。

后面分別列舉多個(gè)指標(biāo)信息,下面詳細(xì)解讀一下。

139b0b00-87d4-11ed-bfe3-dac502259ad0.png

按分組百分比:顯示了抓包文件中所含數(shù)據(jù)包在每一種協(xié)議類型中的占比情況(按數(shù)據(jù)包的個(gè)數(shù)來統(tǒng)計(jì))。

分組:顯示了每一種協(xié)議類型的數(shù)據(jù)包的個(gè)數(shù)。

按字節(jié)百分比:顯示了抓包文件中所含數(shù)據(jù)包在每一種協(xié)議類型中的占比情況(按數(shù)據(jù)包的字節(jié)數(shù)來統(tǒng)計(jì))。

字節(jié):顯示了每一種協(xié)議類型的數(shù)據(jù)包的字節(jié)數(shù)

比特/秒:顯示了某種協(xié)議類型的數(shù)據(jù)包在抓包時(shí)段內(nèi)的傳輸速率。

結(jié)束 分組:顯示了隸屬于該協(xié)議類型的數(shù)據(jù)包的凈數(shù)量。

結(jié)束 字節(jié):顯示了隸屬于該協(xié)議類型的數(shù)據(jù)包的凈字節(jié)數(shù)。

結(jié)束 位/秒:顯示了隸屬于該協(xié)議類型的數(shù)據(jù)包在抓包時(shí)段內(nèi)的凈傳輸速率。

3. 如何知道某人在干什么

如果要快速查看某個(gè)人在網(wǎng)絡(luò)上干了什么,只需要先做個(gè)顯示過濾器,過濾器的內(nèi)容是這個(gè)人的IP地址,例如ip.addr==10.66.2.100。然后在打開協(xié)議分析統(tǒng)計(jì)查看,查看到的就是這個(gè)人相關(guān)的所有協(xié)議信息。

13d7fdda-87d4-11ed-bfe3-dac502259ad0.png

協(xié)議分級統(tǒng)計(jì)窗口能夠提供當(dāng)前網(wǎng)絡(luò)中活動(dòng)的協(xié)議信息,是分析者經(jīng)常使用的功能之一,因?yàn)樗钱?dāng)前網(wǎng)絡(luò)的直觀寫照。

7、數(shù)據(jù)包會(huì)話分析

在網(wǎng)絡(luò)分析中,經(jīng)常會(huì)有這樣一個(gè)需求,就是想知道當(dāng)前網(wǎng)絡(luò)誰最活躍,誰和誰之間的流量傳輸最大,即占用的帶寬最多,以及最活躍的對象占用了多大的帶寬。

1. 什么是會(huì)話

網(wǎng)絡(luò)中的一個(gè)會(huì)話(conversation),就如同現(xiàn)實(shí)中兩個(gè)人在接打電話,舉例來說,張三和李四會(huì)話可能是這樣子的:“你好嗎?”,“我很好,你呢?”,“非常好!”。

而在網(wǎng)絡(luò)中的會(huì)話,描述的是兩臺(tái)主機(jī)(端點(diǎn))之間進(jìn)行的通信。192.168.1.2和192.168.0.10之間的一個(gè)會(huì)話可能就是這樣的“SYN”” SYN/ACK””ACK”。

會(huì)話可以說基于數(shù)據(jù)鏈路層MAC之間的,也可以是基于網(wǎng)絡(luò)層IP之間的,如下圖舉例說明這2類會(huì)話。

13fdea5e-87d4-11ed-bfe3-dac502259ad0.png

2. 如何打開會(huì)話分析

要打開會(huì)話分析,點(diǎn)擊菜單統(tǒng)計(jì)——會(huì)話。

在打開的窗口,用戶就會(huì)看到下圖所示內(nèi)容,這個(gè)窗口顯示出很多列信息,包括網(wǎng)絡(luò)中正在傳輸?shù)臄?shù)據(jù)包、網(wǎng)絡(luò)中傳輸?shù)谋忍財(cái)?shù)量、數(shù)據(jù)流量、設(shè)備的MAC地址,以及很多其他的詳細(xì)信息。在窗口的最上方,用戶可以看到很多標(biāo)簽,每個(gè)標(biāo)簽顯示關(guān)于一種協(xié)議的信息在標(biāo)簽中除了協(xié)議名稱之外,用戶還可以看到個(gè)數(shù)字,這個(gè)數(shù)字表示的是當(dāng)前獨(dú)立會(huì)話的數(shù)量。

141a7318-87d4-11ed-bfe3-dac502259ad0.png

3. 如何查看流量最大的會(huì)話

想要找出網(wǎng)絡(luò)中誰的流量最大,看看這些流量是從哪里傳輸過來的,那么用戶就可以在打開的會(huì)話分析窗口,點(diǎn)擊Pv4標(biāo)簽,然后按照降序來排列數(shù)據(jù)包。在這里,窗口中顯示的第一行信息就是這位用戶正在尋找的答案。如下圖,該圖顯示了這里所說的信息。

14417864-87d4-11ed-bfe3-dac502259ad0.png

在第一行中,用戶可以看到各個(gè)端點(diǎn)收發(fā)了多少數(shù)據(jù)包字節(jié),以及設(shè)備抓包的總時(shí)長。如果用戶想要?jiǎng)?chuàng)建個(gè)過器,也可以用同樣的方法右鍵點(diǎn)擊第一行信息,然后就可以創(chuàng)建出用戶想要設(shè)置的表達(dá)式了。選擇第一個(gè)可選項(xiàng)A<>B,這里只會(huì)顯示與地址A( Address A)和地址B( Address B)有關(guān)的數(shù)據(jù)包。

4. 會(huì)話分析常用技巧

在會(huì)話分析過程中,最常用的是針對網(wǎng)絡(luò)第二、三、四層內(nèi)容進(jìn)行分析。通過點(diǎn)擊會(huì)話分析窗口中不同標(biāo)簽,找到分析答案。

Ethernet標(biāo)簽:來觀察具有不同MAC地址的主機(jī)間發(fā)生過什么樣的“溝通”。

IPv4標(biāo)簽:來觀察具有不同IPv4地址的主機(jī)間有過什么樣的“交流”。

TCP或UDP標(biāo)簽:來觀察具有不同IPv4地址的主機(jī)間所建立的各種TCP(或UDP)會(huì)話。

在現(xiàn)實(shí)網(wǎng)絡(luò)分析中,使用這些常用分析標(biāo)簽,不但能夠分析二層的廣播風(fēng)暴、MAC地址沖突等故障,而且能夠分析網(wǎng)絡(luò)中存在的掃描現(xiàn)象,感染病毒的主機(jī)定位,異常服務(wù)器發(fā)現(xiàn),或者異常的應(yīng)用連接行為。

遺憾的是,Wireshark無法通過圖形方式直觀展現(xiàn)這些內(nèi)容,只能是一行行的表格信息。

8、數(shù)據(jù)包終端分析

和會(huì)話分析類似,會(huì)話分析告訴我們,網(wǎng)絡(luò)中誰與誰之間的表現(xiàn)最活躍,占用的流量最大。終端分析,能夠告訴我們,每個(gè)終端的不同表現(xiàn)和數(shù)據(jù)。終端可以是一個(gè)MAC地址,也可以是一個(gè)IP地址,還可以是一個(gè)IP地址+端口(TCP或UDP應(yīng)用)。

1. 如何使用終端分析

終端即網(wǎng)絡(luò)會(huì)話中的一側(cè)。要打開終端分析,點(diǎn)擊菜單統(tǒng)計(jì)——終端。即可打開終端分析窗口。

147ecc6e-87d4-11ed-bfe3-dac502259ad0.png

每臺(tái)主機(jī)都可以借助網(wǎng)絡(luò)接口卡(NIC)中的物理地址(常常稱為MAC地址)進(jìn)行通信,設(shè)備會(huì)使用這個(gè)地址在一個(gè)本地網(wǎng)絡(luò)中實(shí)現(xiàn)通信。

比如說,在我們觀察到一個(gè)網(wǎng)絡(luò)中的流量異常繁忙時(shí),就會(huì)發(fā)現(xiàn)這個(gè)流量與網(wǎng)絡(luò)中日常傳輸?shù)牧髁磕J讲煌?。接下來,我們就希望能夠找出到底是哪臺(tái)設(shè)備創(chuàng)建流量的模式與過去不一樣。對于網(wǎng)絡(luò)管理員來說,這時(shí)就應(yīng)該使用終端分析,在打開終端分析窗口之前,可以從數(shù)據(jù)包列表面板中隨便點(diǎn)擊一個(gè)TCP數(shù)據(jù)包。此時(shí),用戶會(huì)在頂部看到很多標(biāo)簽,每個(gè)標(biāo)簽分別顯示一種不同的協(xié)議。其中有些協(xié)議是激活的,有些則是非激活的。當(dāng)流量中包含了與某種協(xié)議有關(guān)的數(shù)據(jù)包時(shí),這個(gè)標(biāo)簽中顯示的協(xié)議就是激活的;否則,這個(gè)協(xié)議就是非激活的。

首次打開終端分析界面,默認(rèn)顯示二層網(wǎng)絡(luò)的終端分析信息。在窗口中,用戶可以看到很多關(guān)于各個(gè)端點(diǎn)的詳細(xì)信息,比如傳輸?shù)臄?shù)據(jù)包總數(shù)、傳輸?shù)目傋止?jié)數(shù),以及一個(gè)端點(diǎn)接收和傳輸?shù)淖止?jié)總數(shù)與數(shù)據(jù)包總數(shù)。

149ac018-87d4-11ed-bfe3-dac502259ad0.png

如果想要分析網(wǎng)絡(luò)三次信息,只需點(diǎn)IPv4標(biāo)簽。就可以輕而易舉的查看到網(wǎng)絡(luò)中IP地址信息,通過排序,就能找到數(shù)據(jù)量最大的終端地址。

14b2d54a-87d4-11ed-bfe3-dac502259ad0.png

2. 終端分析技巧

在終端分析窗口,顯示了大量的標(biāo)簽和密密麻麻的數(shù)據(jù)排列,可能有讓人摸不著頭腦。下面介紹部分終端分析的技巧,用來識別和分析常見的網(wǎng)絡(luò)故障。

Ethernet端點(diǎn)(MAC地址)少,IP端點(diǎn)(IP地址)多:對于這種現(xiàn)象,可能的原因是有一臺(tái)路由器來負(fù)責(zé)轉(zhuǎn)發(fā)所有進(jìn)、出本地LAN(IP子網(wǎng))的IP流量。也就是說,對于源或目的IP地址不隸屬于本地IP子網(wǎng)的所有數(shù)據(jù)包,其源或目的MAC地址都會(huì)是那臺(tái)路由器內(nèi)網(wǎng)LAN口的MAC地址,這屬于正常情況。

IP端點(diǎn)(IP地址)少,TCP端點(diǎn)(TCP端口號)多:就是每個(gè)IP端點(diǎn)都試圖建立或已經(jīng)建立了多條TCP連接。對于

這種現(xiàn)象,可能正常也可能不正常。若建立或試圖建立多條TCP連接的IP端點(diǎn)為服務(wù)器,這就屬于正常情況;否則,極有可能是有人在發(fā)動(dòng)網(wǎng)絡(luò)攻擊(比如, TCP SYN攻擊),或開啟了基于P2P的程序而導(dǎo)致的。

終端分析通常與會(huì)話分析結(jié)合使用,可以快速發(fā)現(xiàn)網(wǎng)絡(luò)中占用流量最大的節(jié)點(diǎn)或會(huì)話,也可以配合顯示過濾器使用。通過終端分析,也能夠發(fā)現(xiàn)部分常見網(wǎng)絡(luò)或應(yīng)用故障,協(xié)助管理員快速解決問題。

9、HTTP協(xié)議分析工具

Web應(yīng)用作為全球使用最多的應(yīng)用,HTTP協(xié)議可謂功不可沒。無論是個(gè)人博客、電子交易平臺(tái)或是新聞資訊,Web站點(diǎn)隨處可見,而后臺(tái)默默無聞支撐其運(yùn)行的則是HTTP協(xié)議,因此,如果要運(yùn)維和優(yōu)化好關(guān)鍵的基于Web應(yīng)用的核心業(yè)務(wù)系統(tǒng),掌握HTTP協(xié)議基礎(chǔ)和工作原理,常見故障分析和性能優(yōu)化等技能必不可少。

Wireshark內(nèi)置了強(qiáng)大的HTTP協(xié)議分析功能。

點(diǎn)擊菜單統(tǒng)計(jì)——HTTP,就可以看到Wireshark內(nèi)置的針對HTTP的分析功能列表,一共4個(gè),分別是分組計(jì)數(shù)器、請求、負(fù)載分配和請求序列(Request Sequences)。

如下圖:

14ce75b6-87d4-11ed-bfe3-dac502259ad0.png

分組計(jì)數(shù)器:用來了解抓包文件中HTTP數(shù)據(jù)包的總數(shù),以及其中HTTP請求數(shù)據(jù)包和HTTP響應(yīng)數(shù)據(jù)包分別為多少。

14f39df0-87d4-11ed-bfe3-dac502259ad0.png

請求:用來了解(主機(jī))請求訪問的Web站點(diǎn)的分布情況,以及所訪問的Web站點(diǎn)上的具體資源(指向資源的URL)。

151870bc-87d4-11ed-bfe3-dac502259ad0.png

負(fù)載分配:用來了解抓包文件中HTTP數(shù)據(jù)包(包括HTTP請求和HTTP響應(yīng)數(shù)據(jù)包)在各Web站點(diǎn)間的分布情況(即訪問過哪些web站點(diǎn))。

15612c94-87d4-11ed-bfe3-dac502259ad0.png

請求序列:HTTP請求序列使用HTTP的Referer和Location頭部信息,將捕獲的HTTP請求排序以樹狀顯示。該功能可以讓分析人員能夠看到一個(gè)HTTP請求與下一個(gè)HTTP請求的關(guān)系。

158b1cac-87d4-11ed-bfe3-dac502259ad0.png

10、讓W(xué)ireshark圖形說話

Wireshark內(nèi)置了強(qiáng)大的數(shù)據(jù)流圖形,通過圖形可以直觀的分析和定位故障原因。使用者想要精準(zhǔn)的分析出問題原因,熟練掌握和使用圖形功能是必備要求之一。

Wireshark自帶了I/O圖表、流量圖、TCP流圖形、UDP多播流以及對語音流量分析中的部分圖形,由于UDP多播流正在開發(fā),語音流分析使用相對較少,目前重點(diǎn)簡單介紹前三種圖形功能。

1. I/O圖表

I/O圖表,借助于該工具,同時(shí)配搭預(yù)先定義的顯示過濾器,便可以生成各種易于閱讀的信息統(tǒng)計(jì)圖表。比如,可生成單一IP主機(jī)吞吐量統(tǒng)計(jì)圖表、兩臺(tái)或多臺(tái)主機(jī)間流量負(fù)載統(tǒng)計(jì)圖表、應(yīng)用程序網(wǎng)絡(luò)吞吐量統(tǒng)計(jì)圖表,以及TCP現(xiàn)象分布統(tǒng)計(jì)圖表等。

通過這種方式,我們可以看到流量的波峰和波谷,這個(gè)圖形可以用來找出網(wǎng)絡(luò)中的問題,甚至可以用來進(jìn)行流量監(jiān)測。在圖中x軸的數(shù)據(jù)表示時(shí)間,單位為秒,而y軸的數(shù)據(jù)表示的則是每單位時(shí)間的數(shù)據(jù)包數(shù)量。x軸和y軸的范圍可以根據(jù)用戶的需要而進(jìn)行調(diào)整,X軸的范圍是從10到0.001秒,而y軸數(shù)值的范圍則是數(shù)據(jù)包/字節(jié)比特。

15b8eaa6-87d4-11ed-bfe3-dac502259ad0.png

2. 流量圖

流量圖,該工具直觀顯示了會(huì)話節(jié)點(diǎn)之間的信息,包括時(shí)間、端口及詳細(xì)的TCP傳輸控制和數(shù)據(jù)傳輸報(bào)文信息。

這是Wireshark最強(qiáng)大的特性之ー,當(dāng)用戶需要面對存在大量連接斷開、大量數(shù)據(jù)幀丟失或者大量流量重傳等情況的環(huán)境時(shí),這種特性就可以協(xié)助用戶進(jìn)行排錯(cuò)。數(shù)量圖可以讓我們創(chuàng)建一個(gè)很多列的圖,這張圖會(huì)顯示兩個(gè)端點(diǎn)間傳輸流量的匯總信息,它甚至可以讓用戶將輸出結(jié)果導(dǎo)出為一個(gè)簡單的文本格式文件。這是驗(yàn)證客戶端和服務(wù)器之間連接狀態(tài)的最佳方式。

15cf413e-87d4-11ed-bfe3-dac502259ad0.png

3. TCP流圖形

TCP流圖形,利用該工具,可深入分析單個(gè)TCP連接的內(nèi)部傳輸和控制細(xì)節(jié)。因此,該工具能大大幫助網(wǎng)管人員分析和查找TCP故障,定位故障根本原因。

TCP流圖形又可以按照功能細(xì)分,分別有時(shí)間分析、吞吐量分析、往返延時(shí)分析及窗口大小變化分析等等。

15eedcd8-87d4-11ed-bfe3-dac502259ad0.png

四、基于生成的IP統(tǒng)計(jì)分析

在網(wǎng)絡(luò)分析過程,往往會(huì)使用到對某個(gè)地址的詳細(xì)內(nèi)容進(jìn)行分析和統(tǒng)計(jì),這個(gè)要求使用顯示過濾器配合會(huì)話及終端分析功能還不足以滿足。

1、怎樣打開IP統(tǒng)計(jì)

基于IP統(tǒng)計(jì)分別針對IPv4和IPv6,這里只介紹IPv4的統(tǒng)計(jì)功能。點(diǎn)擊菜單統(tǒng)計(jì)——IPv4 Statistics下拉菜單,能看到Wireshark自帶的4個(gè)統(tǒng)計(jì)IP的功能(分別是所有地址、目標(biāo)和端口、IP協(xié)議類型及源–目標(biāo)地址)。

如下圖:

160d2c56-87d4-11ed-bfe3-dac502259ad0.png

2、IP統(tǒng)計(jì)分析詳細(xì)介紹

以下是對各個(gè)IP統(tǒng)計(jì)功能的詳細(xì)介紹。

1. 所有地址

所有地址IP統(tǒng)計(jì),顯示抓包文件中每個(gè)IP地址的數(shù)據(jù)包個(gè)數(shù),頻率,占有百分百和高峰值相關(guān)信息。

使用者也可以通過顯示過濾器,只查看某一個(gè)或幾個(gè)IP的統(tǒng)計(jì)數(shù)據(jù),顯示過濾器在下方直接輸入即可。

1674c8c0-87d4-11ed-bfe3-dac502259ad0.png

2. 目標(biāo)和端口

目標(biāo)和端口,統(tǒng)計(jì)了各個(gè)IP傳輸層端口的數(shù)據(jù)包個(gè)數(shù)及相關(guān)信息。這個(gè)功能能夠詳細(xì)查看任意IP地址都在通過哪些端口傳輸數(shù)據(jù)。

169fe8de-87d4-11ed-bfe3-dac502259ad0.png

3. IP協(xié)議類型

IP協(xié)議類型,統(tǒng)計(jì)不同協(xié)議的數(shù)據(jù)包個(gè)數(shù),占比及相關(guān)信息。

16bb4f52-87d4-11ed-bfe3-dac502259ad0.png

4.源-目標(biāo)地址

源和目標(biāo)地址統(tǒng)計(jì),分別查看作為源地址或目的地址的IP統(tǒng)計(jì)信息。

16c44ecc-87d4-11ed-bfe3-dac502259ad0.png

在一份分析報(bào)告中,如果要詳細(xì)分析并記錄某個(gè)IP地址的內(nèi)容和網(wǎng)絡(luò)活動(dòng),采用上述IP統(tǒng)計(jì)功能,就能夠精確、細(xì)致的統(tǒng)計(jì)該地址的所有細(xì)節(jié)信息,該功能也可用于異常分析。

五、如何定位網(wǎng)絡(luò)性能問題

定位分析網(wǎng)絡(luò)性能問題是網(wǎng)絡(luò)分析中最為常見的需求之一,影響網(wǎng)絡(luò)性能的因素很多,每一個(gè)轉(zhuǎn)發(fā)數(shù)據(jù)包的環(huán)節(jié)出現(xiàn)了問題,都有可能會(huì)造成性能的下降。

幸運(yùn)的是,如果我們采集到了這些數(shù)據(jù)傳輸過程的原始報(bào)文,那么則可以通過Wireshark撥繭抽絲,一步步找到問題的可能答案。

1、IO圖形分析工具介紹

首先,打開你想要分析的抓包文件。

點(diǎn)擊菜單統(tǒng)計(jì)——I/O圖表。

16e849c6-87d4-11ed-bfe3-dac502259ad0.png

下圖是I/O圖表信息,在圖形窗口中,上半部分區(qū)域?yàn)閳D形顯示區(qū)域,下半部分區(qū)域?yàn)轱@示過濾器配置區(qū)域。

1749bcba-87d4-11ed-bfe3-dac502259ad0.png

在下半部分區(qū)域,通過“+”或復(fù)制按鈕,新增一個(gè)圖形名稱,寫入過濾器內(nèi)容,設(shè)置顏色,同樣可以設(shè)置圖形的樣式,Y軸和X軸的信息,以及圖形顯示粒度。勾選最前面的enabled列復(fù)選框,就能生效。

在Style列,雙擊對應(yīng)的行,可以選擇圖形顯示風(fēng)格,例如line(線)、 Impulse(脈沖)、Fbar(粗線)、Dot(點(diǎn))等等。

177db934-87d4-11ed-bfe3-dac502259ad0.png

在Y Axis列,雙擊對應(yīng)的行,可以選擇Y軸數(shù)據(jù)單位,例如Packets(數(shù)據(jù)包)、 Bytes(字節(jié))、bits(位)等等,還有很多公式可選擇,具體內(nèi)容后續(xù)會(huì)有詳細(xì)講解。

17b2b986-87d4-11ed-bfe3-dac502259ad0.png

還有很多其它設(shè)置,比如Y字段,顯示粒度,顯示間隔,鼠標(biāo)行為,顯示時(shí)間等,相對比較簡單,不再一一細(xì)述。

2、使用I/O工具分析

上面講述了I/O圖形分析工具的基本信息,以下看看如何使用該工具分析。

I/O分析工具的精髓在于與顯示過濾器的配合使用,所以對使用者來說,對顯示過濾器的理解和熟練程度,直接關(guān)系到I/O分析工具的功能發(fā)揮如何。

例如,如果要分析192.168.30.124這個(gè)地址在某段時(shí)間的數(shù)據(jù)傳輸狀況,使用者可以創(chuàng)建過濾器,然后設(shè)置該對象的圖形顯示格式,調(diào)整Y軸和X軸的信息,不但能夠從整體上查看這個(gè)地址的數(shù)據(jù)傳輸情況,也能夠查看到更細(xì)微信息(例如把X軸時(shí)間調(diào)整為10毫秒的時(shí)間傳輸情況)。

17e0f6f2-87d4-11ed-bfe3-dac502259ad0.png

3、測試網(wǎng)絡(luò)吞吐量

網(wǎng)絡(luò)吞吐量在網(wǎng)絡(luò)分析中常常遇到,比如分析者想知道某個(gè)客戶端和服務(wù)器的傳輸速率,或者某臺(tái)服務(wù)器在網(wǎng)絡(luò)中的帶寬大小等。利用數(shù)據(jù)包分析軟件,能夠精確分析任何對象的網(wǎng)絡(luò)吞吐量,這為進(jìn)一步容量規(guī)劃、策略調(diào)整及應(yīng)用優(yōu)化都有重要意義。

1. Wireshark能測試哪些吞吐量

所謂測試網(wǎng)絡(luò)吞吐量,既可以指測算通信線路上兩臺(tái)設(shè)備(客戶端和服務(wù)器、IP電話-IP電話等)間相互通信的吞吐量,也可以指測算兩臺(tái)設(shè)備上運(yùn)行的某一具體應(yīng)用程序間相互通信的吞吐量。

一般來說,常規(guī)的流量測試方法包括:測算主機(jī)到主機(jī)的流量、測試發(fā)往某指定服務(wù)器的所有流量、測試發(fā)往某指定服務(wù)器運(yùn)行的某種應(yīng)用程序的所有流量、統(tǒng)計(jì)發(fā)生在某指定服務(wù)器與TCP性能有關(guān)的所有現(xiàn)象。

如下圖:

18372e5a-87d4-11ed-bfe3-dac502259ad0.png

測試鏈路上未端設(shè)備之間基于單個(gè)連接所發(fā)生的流量,并了解流量的來源,是定位網(wǎng)絡(luò)故障的第一步。

2. 測試兩端設(shè)備的吞吐量

打開需要測試的抓包文件,點(diǎn)擊菜單統(tǒng)計(jì)——I/O圖表,在選項(xiàng)中,設(shè)置所有分組Y軸單位為bits,默認(rèn)看到的就是該抓包文件中所有對象的吞吐量。

如下圖:

18d939c0-87d4-11ed-bfe3-dac502259ad0.png

假如,要測試客戶端192.168.30.124與服務(wù)器114.112.96.29之間的吞吐量,則可以在I/O圖表下部添加過濾器,表達(dá)式為 ip.addr==114.112.96.29 && ip.addr==192.168.30.124,再設(shè)置顯示樣式和顏色,Y軸設(shè)置為bits,時(shí)間間隔使用默認(rèn)的1秒。這時(shí)候新建項(xiàng)目所顯示的內(nèi)容,就是我們想要測試的這2個(gè)終端之間的吞吐量。

如下圖:

190f1644-87d4-11ed-bfe3-dac502259ad0.png

3.測試某個(gè)應(yīng)用程序的吞吐量

測試某個(gè)應(yīng)用程序的吞吐量,方法與測試兩端連接吞吐量的類似。只是過濾器內(nèi)容不同。假如要測試某個(gè)抓包文件443端口的所有流量。方法如下。

打開抓包文件,點(diǎn)擊菜單統(tǒng)計(jì)——I/O圖表,設(shè)置過濾器,表達(dá)式為tcp.port==443,太簡單調(diào)整顯示設(shè)置,即可得到443端口應(yīng)用的流量。如下圖。

1946b61c-87d4-11ed-bfe3-dac502259ad0.png

4、使用TCP數(shù)據(jù)流圖形分析窗口大小

滑動(dòng)窗口控制機(jī)制,是整個(gè)TCP協(xié)議工作的中控臺(tái)或核心站。當(dāng)TCP連接建立時(shí),協(xié)議棧會(huì)為不同的連接劃分出獨(dú)立的緩沖空間,而在數(shù)據(jù)傳輸過程中,則存在復(fù)雜的傳輸控制過程。由于這個(gè)過程管理和處理的復(fù)雜性,很多性能問題往往就出現(xiàn)在這里。

1. 打開TCP窗口分析界面

打開需要分析的抓包文件。選擇想要分析的數(shù)據(jù)幀。

點(diǎn)擊菜單統(tǒng)計(jì)——TCP流圖形——窗口尺寸。

如下圖:

1966990a-87d4-11ed-bfe3-dac502259ad0.png

窗口大小分析面向單向TCP會(huì)話,從打開的窗口可以看到題目信息,窗口尺寸對于某某連接及方向。如下圖,顯示了114.112.96.29向192.168.30.124流向中,443端口發(fā)往54645端口數(shù)據(jù)的窗口大小及數(shù)據(jù)傳輸情況。

199f7a18-87d4-11ed-bfe3-dac502259ad0.png

2. 分析TCP滑動(dòng)窗口

在TCP窗口分析界面,默認(rèn)顯示2類線條。最上面淺綠色的是接收方宣告的窗口大?。╓indows Size),代表接收方還有多大緩沖空間可接收數(shù)據(jù)。下方深色黑點(diǎn)則代表數(shù)據(jù)發(fā)送方的實(shí)際數(shù)據(jù)傳輸大小。

19c581c2-87d4-11ed-bfe3-dac502259ad0.png

在滑動(dòng)窗口分析過程,分析人員可以使用鼠標(biāo)放縮功能,定位到具體的某一個(gè)細(xì)節(jié),詳細(xì)分析。如下圖,通過鼠標(biāo)放縮,查看數(shù)據(jù)發(fā)送方在某一時(shí)刻具體的數(shù)據(jù)發(fā)送大小和數(shù)量。

19d60bbe-87d4-11ed-bfe3-dac502259ad0.png

3. 常見TCP窗口故障分析技巧

TCP滑動(dòng)窗口分析是網(wǎng)絡(luò)性能分析中關(guān)鍵的分析對象之一。針對TCP窗口可能出現(xiàn)的相關(guān)信息或錯(cuò)誤,Wireshark通過內(nèi)置專家系統(tǒng)會(huì)自動(dòng)提示,或者以不同的顏色區(qū)分顯示。分析人員也可以根據(jù)自己的喜好或分析習(xí)慣,自定義顯示樣式。

下面簡要列舉一下在Wireshark專家系統(tǒng)中,可能會(huì)看到的關(guān)于TCP窗口的相關(guān)信息,這其中可能是錯(cuò)誤,也可能是告警或記錄。

Zero Window:如果TCP接收方窗口已滿,這時(shí)接收方會(huì)通知發(fā)送方,讓發(fā)送方暫停一段時(shí)間,不要繼續(xù)發(fā)送消息。這時(shí),在Wireshark專家系統(tǒng)中就會(huì)查看到這類消息。

Zero Window Probe:如果從客戶端那里接收數(shù)據(jù)包的服務(wù)器不能以客戶端發(fā)送數(shù)據(jù)包的相同速率來處理數(shù)據(jù)包,就會(huì)導(dǎo)致丟包的情況。在這種情況下,服務(wù)器就會(huì)向客戶端發(fā)送零窗口探測包。讓客戶端暫停一段時(shí)間不要發(fā)送數(shù)據(jù)包,同時(shí)保持這條連接不會(huì)斷開。

Zero Window Probe ACK:和Zero Window Probe消息的例子有關(guān)。Zero Window Probe ACK消息是客戶端發(fā)送的消息,其作用是對服務(wù)器的請求做出響應(yīng)。

Window is full:這種消息的作用是通知發(fā)送方主機(jī),TCP接收窗口當(dāng)前已滿。

Windows Update:這類消息可以讓發(fā)送方意識到TCP接收窗口的大小已更新。

當(dāng)然,與TCP窗口相關(guān)的分析信息不僅限于上述列舉出來的。總之,滑動(dòng)窗口分析在數(shù)據(jù)包分析過程占有較高的比重和分量,是分析人員不能忽視的對象。只有詳細(xì)了解了在Wireshark中顯示的這些關(guān)于TCP窗口的信息的意義和產(chǎn)生原因,才能在實(shí)戰(zhàn)中得心應(yīng)手,精準(zhǔn)分析出問題根本原因。

5、服務(wù)器響應(yīng)延時(shí)分析

下面這臺(tái)關(guān)鍵主機(jī),服務(wù)器的響應(yīng)延時(shí)竟然有1秒多。

1a25e0a8-87d4-11ed-bfe3-dac502259ad0.png

因?yàn)楸韱沃锌吹降臄?shù)據(jù)是個(gè)平均值,所以時(shí)延分布情況,需要時(shí)一步確認(rèn)。在單個(gè)IP最終用戶體驗(yàn)分析中,搜索43的主機(jī),情況如下:

1a4ec054-87d4-11ed-bfe3-dac502259ad0.png

發(fā)現(xiàn)這臺(tái)主機(jī)的服務(wù)器響應(yīng)延時(shí)都在秒級波動(dòng),最高值達(dá)到4秒,基于采樣時(shí)間原因,我們有理由相信真實(shí)延時(shí)肯定會(huì)更大,且在同時(shí)間段,幾乎沒有流量,那么這個(gè)現(xiàn)象就比較奇怪了。

沒有連接失敗請求,沒有多大流量,但服務(wù)器響應(yīng)延時(shí)較大,因?yàn)樯a(chǎn)網(wǎng)都是千M網(wǎng)絡(luò),看上去根本不存在影響時(shí)延的因素,所以什么原因?qū)е麓饲闆r,值得探究。

為了進(jìn)一步分析,我們在netinside系統(tǒng)里面,把這臺(tái)主機(jī)在時(shí)間點(diǎn)13:36前后的數(shù)據(jù)包下載下來(按時(shí)間點(diǎn)下載主要是為了減少數(shù)據(jù)包的大小,更精準(zhǔn)分析問題),導(dǎo)入wireshark,一探究竟。

因?yàn)榉?wù)器的響應(yīng)時(shí)間,本質(zhì)上就是RTT(RoundTrip Time),即往返時(shí)間。測量方法是發(fā)送一個(gè)特定序號的字節(jié),并記錄時(shí)間。

當(dāng)收到確認(rèn)的ACK之后,把ACK的時(shí)間,減掉之前記錄的發(fā)送時(shí)間,就可以得到RTT值,該值比較大時(shí),通常會(huì)被專家系統(tǒng)診斷為“網(wǎng)絡(luò)或服務(wù)器繁忙“。

1.配置wireshark

數(shù)據(jù)包導(dǎo)入wireshark后,分析RTT需要先進(jìn)行簡單配置,如下:

1a822f3e-87d4-11ed-bfe3-dac502259ad0.png

該步驟是開啟TCP會(huì)話時(shí)間戳計(jì)算,默認(rèn)可能已經(jīng)開啟,如果沒有開啟的話,手動(dòng)按上面方法開啟即可,然后按以下方法,把RTT應(yīng)用為列:

1ace8456-87d4-11ed-bfe3-dac502259ad0.png

列的名字,可以自行修改。需要注意的是,這個(gè)時(shí)間戳是由發(fā)送端系統(tǒng)依據(jù)自己的時(shí)鐘打上去的,如果系統(tǒng)時(shí)間本身有誤,則會(huì)給分析帶來困擾,所以分析之前,先要確認(rèn)各系統(tǒng),包括抓包系統(tǒng)的時(shí)間沒有問題。

2.RTT分析

經(jīng)過上個(gè)步驟的配置,在wireshark中分析RTT就很簡單了,只要在“應(yīng)用顯示過濾器”中,輸入“tcp.analysis.ack_rtt > 4”,然后回車就可以了。

里面的“4”,就是我們在netinside系統(tǒng)中看到的4秒延遲,因?yàn)槲覀兇_定實(shí)際延遲比會(huì)比這個(gè)大,所以我們只要”>4″即可,結(jié)果如下圖:

1b09e794-87d4-11ed-bfe3-dac502259ad0.png

通過過濾,我們可以快速找到RTT>4數(shù)據(jù)包,因?yàn)槲覀冎笆蔷_定位下載,所以可以看到有一個(gè)數(shù)據(jù)包的RTT值是9秒多,這與我們推測符合。

很顯然,光看一個(gè)數(shù)據(jù)看不出什么情況,此時(shí)我們就需要把綠色框中“86”記下,并通過這個(gè)流ID,把這個(gè)數(shù)據(jù)包相關(guān)的流過濾出來進(jìn)行分析,如下圖:

1b39afe2-87d4-11ed-bfe3-dac502259ad0.png

把TCP流過濾出來后,發(fā)現(xiàn)個(gè)奇怪地方,即>4的RTT好像有三個(gè)(紅框),而我們剛才過濾時(shí),只看到了9.99的這個(gè),那么為什么10秒的就不算RTT呢?

這個(gè)是不是wireshark有問題?請注意綠框,數(shù)據(jù)長度為0的ACK,我們先把TCP流圖打開看下,如下圖:

1b65e3d2-87d4-11ed-bfe3-dac502259ad0.png

通過上圖,我們可以看到兩個(gè)間隔10秒,都是由43產(chǎn)生的,并非是一個(gè)有效的交互,上下兩個(gè)報(bào)文的seq及ACK都相同。

這種現(xiàn)象原因是,上面playload長度為0的ACK僅僅是通知對端滑窗,因?yàn)闆]有傳數(shù)據(jù),所以對端不再響應(yīng),處于等待狀態(tài)。

而后43開始正常發(fā)送數(shù)據(jù)時(shí),接著使用相同的SEQ與ACK,這樣就把TCP的交互繼續(xù)流動(dòng)起來。所以,這個(gè)10秒是由43本身等待造成,不算是RTT,而真正算RTT的就是綠框標(biāo)注的,即9秒的那個(gè)交互。

由此產(chǎn)生的一個(gè)疑問就是,43到底在干什么,在一個(gè)TCP的交互中,總是會(huì)停下來休息一伙?我們接著查看觸碼內(nèi)容,如下圖:

1b859dda-87d4-11ed-bfe3-dac502259ad0.png

基于解碼內(nèi)容,基本可以推斷,這可能是一個(gè)操作mongoDB的定時(shí)任務(wù),這樣話,前面的間隔10秒與第三條間隔9秒的,本質(zhì)上沒有太大區(qū)別,都屬于43向170的請求。

也就是說43主機(jī)每間隔差不多10秒左右就會(huì)發(fā)一個(gè)請求給170。因?yàn)槭钦埱箝g隔,所以我們基本認(rèn)為,這種延遲理論上不影響實(shí)際業(yè)務(wù)。

不過需要注意的是,netinsdie系統(tǒng)里面看到是43這臺(tái)服務(wù)器的響應(yīng)延時(shí),而我們分析的實(shí)際情況是43服務(wù)器的請求延時(shí),這明明就是兩個(gè)概念,這兩種不同的延時(shí)對是否存在問題的判斷是有顯著區(qū)別的,那這是什么問題呢?

實(shí)際上,在一個(gè)TCP流里面,其實(shí)是無法區(qū)別應(yīng)用請求方向的,TCP的主動(dòng)打開還是被動(dòng)打開,并不能決定應(yīng)用層哪個(gè)是請求,哪個(gè)是響應(yīng),所以站點(diǎn)TCP層的角度,方向是可以切換分析,如下圖:

1bb16636-87d4-11ed-bfe3-dac502259ad0.png

從43往170這個(gè)方向看,服務(wù)器延時(shí)(RTT)在0.3MS左右,所以很顯然,170的響應(yīng)延時(shí)挺正常。而如果我們切換方向,則會(huì)如下:

1bd78168-87d4-11ed-bfe3-dac502259ad0.png

從上可以看到,切換方向后,就有一個(gè)近10秒的延遲,而從TCP層看,這個(gè)延遲是由43來響應(yīng)產(chǎn)生的,而我們通過上面的分析也就知道,這其實(shí)是43的請求間隔,而非響應(yīng)延遲。

所以,如果站在43是臺(tái)服務(wù)器的角度,把這個(gè)10秒延遲歸到服務(wù)器響應(yīng)延遲里面,從TCP的角度是完全沒有問題的。

從剛才的分析中,我們在wireshark里面對問題抽絲剝繭,進(jìn)行了透視,得出明確的結(jié)論。

一般情況下,不帶業(yè)務(wù)請求的,通常是在三次握的時(shí)候,所以也被叫做IRTT,這個(gè)時(shí)間,基本只包含網(wǎng)絡(luò)與服務(wù)器內(nèi)核響應(yīng)延時(shí),所以會(huì)當(dāng)做業(yè)務(wù)分析延時(shí)的一個(gè)基準(zhǔn)。

在wireshark里面,如果你抓包有抓到三次握手,那么它會(huì)聰明的把這兩個(gè)時(shí)間放在一起,供我們分析,如下圖:

1bfd4146-87d4-11ed-bfe3-dac502259ad0.png

所以,基于這兩個(gè)數(shù)值的對比,我們就可以大概率確定,問題所在方向,是應(yīng)用還是網(wǎng)絡(luò)或服務(wù)器本身。而且通過服務(wù)器響應(yīng)延時(shí)的方向,即服務(wù)端或者客戶端,我們也可以看到與wireshark中切換方向看到的同一效果。

到這階段,我們基本上可以預(yù)見,應(yīng)用可能存在問題,只不過,這種問題,對于業(yè)務(wù)來講,是正常還是不正常,我們就得看業(yè)務(wù)邏輯了,而這個(gè)時(shí)候,就只能導(dǎo)到wireshark中去解個(gè)碼。

對于內(nèi)部不同業(yè)務(wù)場景下,對TCP的使用建立模型,標(biāo)定基線,是后續(xù)進(jìn)一步高效運(yùn)維,快速發(fā)現(xiàn)并排除潛在業(yè)務(wù)影響的關(guān)鍵基礎(chǔ)。

九、網(wǎng)絡(luò)延遲排查實(shí)戰(zhàn)

1、建立一個(gè)訪問遠(yuǎn)程服務(wù)器的仿真網(wǎng)絡(luò)

我們在生活和工作中經(jīng)常會(huì)遇到應(yīng)用程序可以使用,但是速度卻變得十分緩慢的情況。例如,在使用瀏覽器查看某個(gè)網(wǎng)頁的時(shí)候,可能會(huì)等待很長時(shí)間才能查看到頁面的內(nèi)容。對于大多數(shù)人來說,這是一個(gè)非常棘手的問題,因?yàn)樵谶@個(gè)過程中有很多設(shè)備參與其中,而這些設(shè)備又分布在不同的位置,使用者不可能對它們逐一進(jìn)行排查,所以也很難找到問題所在。

為了能夠更好地了解整個(gè)網(wǎng)絡(luò)的狀況,我們首先來構(gòu)建一個(gè)模擬的仿真網(wǎng)絡(luò),在這個(gè)網(wǎng)絡(luò)中存在著客戶端、服務(wù)器以及連接它們的各種設(shè)備。

構(gòu)建完成的仿真網(wǎng)絡(luò)如圖所示:

1c2425c2-87d4-11ed-bfe3-dac502259ad0.png

這個(gè)網(wǎng)絡(luò)主要由以下3個(gè)部分組成:

客戶端所在網(wǎng)絡(luò),包括“客戶端”“內(nèi)部交換機(jī)”“網(wǎng)關(guān)”“DNS服務(wù)器”。

互聯(lián)網(wǎng),包括“互聯(lián)網(wǎng)路由器”。

服務(wù)器所在網(wǎng)絡(luò),包括“目標(biāo)網(wǎng)關(guān)”“交換機(jī)”“HTTP服務(wù)器”。

下面我們給出這個(gè)網(wǎng)絡(luò)的具體設(shè)計(jì)過程,步驟如下所示。

(1)設(shè)計(jì)中的兩個(gè)主要網(wǎng)絡(luò)的IP地址分配為:客戶端所在網(wǎng)絡(luò)IP地址為192.168.1.0/24,目標(biāo)網(wǎng)絡(luò)所在網(wǎng)絡(luò)IP地址為192.168.4.0/24。

(2)打開ENSP,按照圖7-1中所示向網(wǎng)絡(luò)拓?fù)渲刑砑觾蓚€(gè)Server,一個(gè)Client,一個(gè)交換機(jī)S3700,3臺(tái)路由器AR1220。

(3)其中client的設(shè)置如圖所示。

1c578f8e-87d4-11ed-bfe3-dac502259ad0.png

(4)DNS服務(wù)器的基礎(chǔ)設(shè)置如圖所示。

1c7ee9f8-87d4-11ed-bfe3-dac502259ad0.png

如下圖所示,在服務(wù)器信息中的“DNSServer”中添加一條DNS記錄,主機(jī)域名為“www.a.com”,IP地址為“192.168.4.100”,單擊“增加”按鈕之后將其添加到DNS記錄之后,再單擊“啟動(dòng)”按鈕。

1c9b56ec-87d4-11ed-bfe3-dac502259ad0.png

(5)兩臺(tái)交換機(jī)不進(jìn)行任何配置,3臺(tái)路由器的左側(cè)均為GE0/0/0接口,右側(cè)為GE0/0/1接口。

(6)3個(gè)路由器使用了動(dòng)態(tài)路由協(xié)議rip,其中網(wǎng)關(guān)路由器的配置如下:


[Huawei]interface GigabitEthernet0/0/0

[Huawei-GigabitEthernet0/0/0]ip address 192.168.1.1 255.255.255.0

[Huawei-GigabitEthernet0/0/0]quit

[Huawei]interface GigabitEthernet0/0/1

[Huawei-GigabitEthernet0/0/1]ip address 192.168.2.1 255.255.255.0

[Huawei-GigabitEthernet0/0/1]quit

[Huawei-rip-1]network 192.168.1.0

[Huawei-rip-1]network 192.168.2.0

(7)互聯(lián)網(wǎng)路由器的配置如下:


[Huawei]interface GigabitEthernet0/0/0

[Huawei-GigabitEthernet0/0/0]ip address 192.168.2.2 255.255.255.0

[Huawei-GigabitEthernet0/0/0]quit

[Huawei]interface GigabitEthernet0/0/1

[Huawei-GigabitEthernet0/0/1]ip address 192.168.3.1 255.255.255.0

[Huawei-GigabitEthernet0/0/1]quit

[Huawei-rip-1]network 192.168.2.0

[Huawei-rip-1]network 192.168.3.0

(8)HTTP路由器的配置如下:


[Huawei]interface GigabitEthernet0/0/0

[Huawei-GigabitEthernet0/0/0]ip address 192.168.3.2 255.255.255.0

[Huawei-GigabitEthernet0/0/0]quit

[Huawei]interface GigabitEthernet0/0/1

[Huawei-GigabitEthernet0/0/1]ip address 192.168.4.1 255.255.255.0

[Huawei-GigabitEthernet0/0/1]quit

[Huawei-rip-1]network 192.168.3.0

[Huawei-rip-1]network 192.168.4.0

(9)HTTP服務(wù)器的基礎(chǔ)配置,如圖所示。

1cbe4a62-87d4-11ed-bfe3-dac502259ad0.png

在其中的服務(wù)器信息中設(shè)置HttpServer,這里需要建立一個(gè)網(wǎng)頁。如果你手頭沒有專門用來設(shè)計(jì)網(wǎng)頁的工具,可以使用最常見的Word來完成,在C盤下建立一個(gè)名為net的文件夾。然后新建一個(gè)Word文檔,在文檔中輸入“Hello word”。

然后在菜單欄中依次單擊“另存為”→“其他格式”,起名為“default.htm”。將其保存到C盤net文件夾中(該文件更需要讀者自行創(chuàng)建),如圖所示。

1ce6c4ba-87d4-11ed-bfe3-dac502259ad0.png

接下來我們在HTTP服務(wù)器中將net文件夾作為網(wǎng)站發(fā)布出去,這個(gè)網(wǎng)站只包含了一個(gè)名為“default.htm”的頁面,如圖所示。

1d2bdf8c-87d4-11ed-bfe3-dac502259ad0.png

好了,到現(xiàn)在為止,我們已經(jīng)完成了整個(gè)仿真環(huán)境的模擬,不妨使用client來訪問HTTP服務(wù)器以驗(yàn)證它是否能正常工作。我們在客戶端中打開“客戶端信息”選項(xiàng)卡,左側(cè)首先選擇HttpClient,然后在右側(cè)的地址欄中輸入“http://192.168.4.100/default.htm”。

可以看到當(dāng)在地址欄中輸入地址之后單擊獲取按鈕時(shí),就會(huì)顯示一個(gè)“File download”的文件保存對話框,這就表示已經(jīng)成功地打開了目標(biāo)頁面。這里需要注意的是,模擬的瀏覽器并沒有IE或者Firefox那么強(qiáng)大的功能,它無法真正地從數(shù)據(jù)包中解析并顯示網(wǎng)頁的內(nèi)容。

1d582a06-87d4-11ed-bfe3-dac502259ad0.png

2、在Wireshark中觀察遠(yuǎn)程訪問的過程

現(xiàn)在我們已經(jīng)建立好了一個(gè)仿真網(wǎng)絡(luò),它雖然簡化了很多,但是運(yùn)行原理和真實(shí)網(wǎng)絡(luò)是完全一樣的。剛剛我們使用客戶端的瀏覽器訪問了HTTP服務(wù)器,這個(gè)過程一共只用了幾秒(甚至更短)。但是在這個(gè)過程中都發(fā)生了什么呢,我們對此一無所知。那么現(xiàn)在我們就在Wireshark的幫助下來解讀剛剛所經(jīng)歷的一切。

在仿真網(wǎng)絡(luò)中,我們可以使用Wireshark在任何一個(gè)節(jié)點(diǎn)查看數(shù)據(jù)包,這也是它的優(yōu)勢所在。但是在實(shí)際工作中,我們是不可能做到這一點(diǎn)的。因此在這個(gè)示例中,我們僅考慮在上圖網(wǎng)絡(luò)中的內(nèi)部進(jìn)行數(shù)據(jù)包的觀察,實(shí)驗(yàn)過程如下所示。

(1)如下圖所示,在client的端口上啟動(dòng)Wireshark,在實(shí)際工作中,你可以選擇使用TAP來分流client的數(shù)據(jù)。

1d8a19a8-87d4-11ed-bfe3-dac502259ad0.png

(2)在client的客戶端中輸入“http://www.a.com/default.htm”,按下“獲取”按鈕,如圖所示。

1dbfcc88-87d4-11ed-bfe3-dac502259ad0.png

(3)返回Wireshark,查看捕獲到的數(shù)據(jù)包,如圖所示。

1dd49726-87d4-11ed-bfe3-dac502259ad0.png

下面我們就以捕獲到的數(shù)據(jù)包文件為例來詳細(xì)地了解剛剛都發(fā)生了什么?

按照最簡單的思路來說,客戶端會(huì)產(chǎn)生一個(gè)請求發(fā)送給服務(wù)器,然后服務(wù)器再將資源發(fā)回給客戶端。

1df9f70a-87d4-11ed-bfe3-dac502259ad0.png

不過實(shí)際的情形要遠(yuǎn)遠(yuǎn)比這復(fù)雜得多,該如何做才能將請求數(shù)據(jù)包發(fā)送到目標(biāo)服務(wù)器呢?

首先我們需要明確的一點(diǎn)是在這個(gè)過程中客戶端的工作是由“操作系統(tǒng)”和“應(yīng)用程序”兩個(gè)部分共同完成的。而客戶端上網(wǎng)的這個(gè)過程就是先從“操作系統(tǒng)”開始的。

(1)首先我們使用的客戶端計(jì)算機(jī)位于一個(gè)局域網(wǎng)內(nèi)部,它所有的通信要分為局域網(wǎng)內(nèi)部通信和局域網(wǎng)外部通信兩種。當(dāng)我們在嘗試使用瀏覽器去訪問HTTP服務(wù)器的時(shí)候,第一個(gè)步驟就是要判斷這個(gè)訪問的服務(wù)器與我們所使用的主機(jī)是否在同一個(gè)局域網(wǎng)中。這個(gè)判斷需要由操作系統(tǒng)完成,本例中我們要訪問HTTP服務(wù)器的IP地址為192.168.4.100。

操作系統(tǒng)要先將自己的IP地址和子網(wǎng)掩碼轉(zhuǎn)換成二進(jìn)制,然后進(jìn)行“與”運(yùn)算。例如當(dāng)前主機(jī)的IP地址為192.168.1.10,子網(wǎng)掩碼為255.255.255.0。

計(jì)算的過程如下表所示:

1e1d165e-87d4-11ed-bfe3-dac502259ad0.png

將轉(zhuǎn)換為二進(jìn)制的11000000.10101000.00000001.00001010與11111111.11111111.11111111.00000000進(jìn)行與運(yùn)算之后,11000000.10101000.00000001.00000000就是客戶端所在的子網(wǎng),轉(zhuǎn)換成十進(jìn)制就是192.168.1.0。

同樣的方法計(jì)算目標(biāo)地址192.168.4.100所在的子網(wǎng)為192.168.4.0,二者不在同一子網(wǎng)。因此這個(gè)訪問的服務(wù)器與我們所使用的主機(jī)不在同一個(gè)局域網(wǎng)中。

(2)同一局域網(wǎng)的通信可以直接發(fā)送給目標(biāo),但是發(fā)往不同局域網(wǎng)的通信則要先交給網(wǎng)關(guān)。因?yàn)镠TTP服務(wù)器位于局域網(wǎng)的外部,所以現(xiàn)在客戶端計(jì)算機(jī)的第一個(gè)工作就是要找到網(wǎng)關(guān)。之前客戶端的設(shè)置中已經(jīng)將網(wǎng)關(guān)設(shè)置為“192.168.1.1”。在這次通信中所有的數(shù)據(jù)包都應(yīng)該由這個(gè)網(wǎng)關(guān)轉(zhuǎn)發(fā)。 但是在局域網(wǎng)內(nèi)部是無法使用IP地址進(jìn)行通信的,因?yàn)榫钟蚓W(wǎng)中的交換機(jī)只能識別MAC地址。

如果你僅僅告訴交換機(jī)IP地址,交換機(jī)是不能將其轉(zhuǎn)發(fā)到網(wǎng)關(guān)的。所以現(xiàn)在我們需要一種可以將IP地址轉(zhuǎn)換成MAC地址的機(jī)制,在網(wǎng)絡(luò)協(xié)議中就提供了一個(gè)專門完成這個(gè)任務(wù)的協(xié)議:ARP。

ARP是通過一個(gè)查找表(ARP緩存)來執(zhí)行這種轉(zhuǎn)換的。當(dāng)在ARP緩存中沒有找到地址時(shí),則向網(wǎng)絡(luò)發(fā)送一個(gè)廣播請求,網(wǎng)絡(luò)上所有的主機(jī)和路由器都接收和處理這個(gè)ARP請求,但是只有相同IP地址的接收到廣播請求的主機(jī)或路由器,發(fā)回一個(gè)ARP應(yīng)答分組,應(yīng)答中包含它的IP地址和物理地址,并保存在請求主機(jī)的ARP緩存中。其他主機(jī)或路由器都丟棄此分組。

(3)當(dāng)我們成功地找到網(wǎng)絡(luò)出口之后,接下來要做的就是客戶端和服務(wù)器建立一個(gè)連接。這個(gè)連接也正是通過TCP協(xié)議的三次握手實(shí)現(xiàn)的。

(4)當(dāng)連接成功建立之后,操作系統(tǒng)的工作就完成了,此時(shí)將會(huì)由應(yīng)用程序來構(gòu)造HTTP請求數(shù)據(jù)包。那么需要注意的是,TCP 3次握手的最后一個(gè)數(shù)據(jù)包是由客戶端的操作系統(tǒng)發(fā)出的,而HTTP請求數(shù)據(jù)包是由客戶端上的應(yīng)用程序所完成的。

一般情況下,操作系統(tǒng)在完成TCP操作時(shí)所消耗的時(shí)間可以忽略不計(jì)。但是應(yīng)用程序在構(gòu)造請求或者回應(yīng)時(shí)卻可能造成明顯的延遲。在這個(gè)階段,客戶端所發(fā)送的TCP數(shù)據(jù)包和HTTP之間的間隔就是應(yīng)用程序產(chǎn)生所花費(fèi)的時(shí)間。

(5)當(dāng)客戶端上應(yīng)用程序產(chǎn)生的請求發(fā)送出去之后,經(jīng)過路徑到達(dá)服務(wù)器之后,服務(wù)器會(huì)給出回應(yīng),這兩個(gè)數(shù)據(jù)包之間的時(shí)間就是數(shù)據(jù)包傳送的時(shí)間加上服務(wù)器上應(yīng)用程序的響應(yīng)時(shí)間。

3、Wireshark中時(shí)間顯示

在對數(shù)據(jù)包進(jìn)行分析的時(shí)候,時(shí)間是一個(gè)很重要的參考值。Wireshark會(huì)根據(jù)系統(tǒng)的時(shí)鐘來為捕獲到的每個(gè)數(shù)據(jù)包加上一個(gè)時(shí)間戳。Wireshark在保存文件的時(shí)候,也會(huì)將捕獲數(shù)據(jù)包的時(shí)間保存起來。當(dāng)你使用另外一臺(tái)設(shè)備來打開這個(gè)文件的時(shí)候,Wireshark會(huì)根據(jù)新設(shè)備所處的時(shí)區(qū)對時(shí)間進(jìn)行調(diào)整。我們在分析一些Wireshark官方的數(shù)據(jù)包時(shí),就會(huì)遇到這種情況。因?yàn)檫@些數(shù)據(jù)包往往是在美國產(chǎn)生的,而我們位于中國,看到數(shù)據(jù)包的時(shí)間會(huì)與當(dāng)時(shí)捕獲的時(shí)間有所不同。

我們平時(shí)使用的時(shí)間格式有兩種,一種是常用的某年某月某日,稱為絕對格式。另一種就是形如秒表上的顯示,這個(gè)示數(shù)表示的是經(jīng)過了多久,例如2分21秒,稱為相對格式。

默認(rèn)情況下,Wireshark中提供了一個(gè)顯示捕獲數(shù)據(jù)包時(shí)刻的“Time”列,如下圖所示。

1e3c40ce-87d4-11ed-bfe3-dac502259ad0.png

這個(gè)列中顯示的是相對值,捕獲到第一個(gè)數(shù)據(jù)包的時(shí)間定義為零點(diǎn),之后捕獲到數(shù)據(jù)包的時(shí)間值都是距離這個(gè)零點(diǎn)的時(shí)間間隔,單位為微秒。

Wireshark為了能夠更好地對數(shù)據(jù)包進(jìn)行分析,還提供了多種時(shí)間的顯示方式。如果要修改這些顯示方式的話,可以在菜單欄上依次單擊“視圖”→“時(shí)間顯示格式”,Wireshark中提供的包括如圖所示的選項(xiàng)。

1e7beb5c-87d4-11ed-bfe3-dac502259ad0.png

默認(rèn)情況下,Wireshark使用的“自捕獲開始經(jīng)過秒數(shù)”,那么第一個(gè)捕獲到數(shù)據(jù)包的時(shí)間值就是0.000000,所有其他的數(shù)據(jù)包都是參照第一個(gè)數(shù)據(jù)包定的,這樣就是顯示了從捕獲開始所經(jīng)過的時(shí)間。我們也可以使用其他的格式,從Wireshark這個(gè)菜單中提供的名稱上可以很清楚地了解到這些格式的意義。例如“自上一個(gè)捕獲分組經(jīng)過的秒數(shù)”就表示顯示當(dāng)前數(shù)據(jù)包和它前面時(shí)間數(shù)據(jù)包的間隔。而“自上一個(gè)顯示分組經(jīng)過的秒數(shù)”則表示在使用了顯示過濾器的情況下,當(dāng)前數(shù)據(jù)包和它前面數(shù)據(jù)包的間隔。

這個(gè)菜單的下半部分顯示了時(shí)間的精度,默認(rèn)為自動(dòng)。這里我們同樣可以對其進(jìn)行調(diào)整,這些精度可以設(shè)置為秒、十分之一秒、百分之一秒、毫秒、微秒、納秒等。大部分的設(shè)備都可以精確到毫秒級,但是如果要精確到納秒級別的話,就需要考慮網(wǎng)卡是否支持。如果使用一個(gè)不支持納秒的設(shè)備捕獲數(shù)據(jù)包的話,而我們又在這里設(shè)置了精度為納秒的話,最后面的3位就會(huì)顯示全部為0。 只使用某一種時(shí)間格式的話不太容易看出數(shù)據(jù)包之間的關(guān)聯(lián),但是來回切換時(shí)間格式又過于煩瑣。這時(shí)我們就可以選擇在原有時(shí)間列的基礎(chǔ)上再添加新的列,這個(gè)列用來顯示當(dāng)前包與前面包的時(shí)間間隔,具體的步驟如下。

(1)首先單擊菜單欄上的“編輯”→“首選項(xiàng)”,或者直接單擊工具欄上的“首選項(xiàng)”按鈕。

(2)然后在如下圖所示的首選項(xiàng)窗口左側(cè)選擇“外觀”→“列”。

1ea25e2c-87d4-11ed-bfe3-dac502259ad0.png

(3)這時(shí)首選項(xiàng)窗口的右側(cè)就會(huì)顯示出當(dāng)前數(shù)據(jù)包列表中的全部列,點(diǎn)擊左下方的“+”號就可以添加新的一列。

(4)這時(shí)在首選項(xiàng)窗口的右側(cè)就會(huì)添加新的一行,這一行分成兩個(gè)標(biāo)題和類型兩個(gè)部分,我們單擊標(biāo)題處為新添加的列起一個(gè)名字,這里我們?yōu)槠淦鹈麨閠cp.time_delta。

(5)在類型下面的Number下拉列表框處,選中我們需要的列內(nèi)容。

其中和時(shí)間有關(guān)的選項(xiàng)如圖所示:

1ee3522e-87d4-11ed-bfe3-dac502259ad0.png

“Absolute date,as YYYY-MM-DD,and time”:這個(gè)選項(xiàng)用來顯示捕獲設(shè)備所處時(shí)區(qū)的日期和時(shí)間,例如“2018-04-25 12:53:06.775724”。

“Absolute date,as YYYY/DOY,and time”:這個(gè)選項(xiàng)同樣是用來顯示捕獲設(shè)備所處時(shí)區(qū)的日期和時(shí)間。但是不顯示月和日,而是一年中的第多少天。例如2018年4月25日就是這一年的第115天,按照這個(gè)格式顯示就是“2018/115 12:53:06.775724”。

Relative time:這個(gè)選項(xiàng)用來顯示當(dāng)前數(shù)據(jù)包距離捕獲第一個(gè)數(shù)據(jù)包的時(shí)間間隔。

Delta time:這個(gè)選項(xiàng)用來顯示當(dāng)前數(shù)據(jù)包距離上一個(gè)數(shù)據(jù)包的時(shí)間間隔。

Delta time displayed:這個(gè)選項(xiàng)用來顯示當(dāng)前數(shù)據(jù)包距離上一個(gè)數(shù)據(jù)包(在使用了顯示過濾的情況下)的時(shí)間間隔。

Custom:雖然上面提供了很多可以使用的時(shí)間格式,但是我們可能還會(huì)需要進(jìn)行一些自定義的操作。例如在計(jì)算同一個(gè)會(huì)話中這些數(shù)據(jù)包之間的時(shí)間間隔,這時(shí)前面的格式就無法滿足這個(gè)需求了,于是Wireshark還提供了一個(gè)Custom(自定義)功能。

如圖所示,我們在類型里選擇使用Custom類型,在字段處輸入“tcp.time_delta”,最后在字段發(fā)生處添加一個(gè)“0”。

1f1369f0-87d4-11ed-bfe3-dac502259ad0.png

(6)單擊“OK”按鈕即可將這個(gè)列添加到數(shù)據(jù)包列表面板中。

在數(shù)據(jù)包列表面板中已經(jīng)多了一個(gè)名為“tcp.time_delta”的列,但是現(xiàn)在該列還不能正常工作。我們還需要完成如下的步驟。

在Wireshark首選項(xiàng)窗口中依次選擇“Protocols”→“TCP”。

勾選“Calculate conversation timestamps”,默認(rèn)這個(gè)選項(xiàng)是不被選中的。選中之后Wireshark會(huì)為TCP會(huì)話中的數(shù)據(jù)包再加上一個(gè)新的時(shí)間戳,用來表示該數(shù)據(jù)包在當(dāng)前會(huì)話的產(chǎn)生時(shí)間。

1f3c16d4-87d4-11ed-bfe3-dac502259ad0.png

單擊“OK”按鈕。這時(shí)再查看數(shù)據(jù)包列表面板就可以看到新的一列已經(jīng)起作用了。

Wireshark提供了這么多的時(shí)間格式,那么我們又該如何對它們進(jìn)行選擇呢?這個(gè)問題的答案其實(shí)很簡單,首先我們需要明確Wireshark分析的目的是什么,然后才能確定要使用的時(shí)間格式。比如我們需要知道捕獲數(shù)據(jù)包的具體日期和時(shí)間,或者需要找出與系統(tǒng)日志相關(guān)的數(shù)據(jù)包時(shí),就可以采用“Absolute date,as YYYY-MM-DD,and time”這種絕對時(shí)間格式。如果我們要研究在開始捕獲之后的一段特定時(shí)間內(nèi)發(fā)生的事件,就可以使用”“Relative time”這種相對時(shí)間格式。如果你希望對特定數(shù)據(jù)包(例如客戶端和服務(wù)器之間的請求和應(yīng)答)之間的時(shí)間間隔進(jìn)行研究,“Delta time”這種時(shí)間格式則是很好的選擇。

這里還必須提到一點(diǎn),在默認(rèn)情況下,Wireshark會(huì)以捕獲第一個(gè)數(shù)據(jù)包的時(shí)間作為原點(diǎn)。但是我們也可以自行將某一個(gè)數(shù)據(jù)包定義為原點(diǎn),具體的方法是在一個(gè)數(shù)據(jù)包上單擊鼠標(biāo)右鍵,在彈出的菜單上選中“設(shè)置/取消設(shè)置時(shí)間參考”,此時(shí)這個(gè)數(shù)據(jù)包的時(shí)間列就會(huì)顯示為“*REF*”。如果我們使用了相對時(shí)間格式的話,它之后的所有數(shù)據(jù)包都會(huì)將這個(gè)數(shù)據(jù)包的捕獲時(shí)間作為原點(diǎn)。

4、各位置延遲時(shí)間的計(jì)算

在整個(gè)上網(wǎng)過程中,一共可以分成4個(gè)階段,但是由于其中的ARP階段位于內(nèi)網(wǎng),而且速度非???,因此通常不會(huì)引起網(wǎng)絡(luò)延遲,這里只考慮后面的3個(gè)階段,分別是網(wǎng)絡(luò)傳輸延遲、客戶端應(yīng)用程序引起的延遲和服務(wù)器應(yīng)用程序引起的延遲。需要注意的一點(diǎn)是,這種延遲分類的方法是基于Wireshark捕獲數(shù)據(jù)包得出的。

下圖顯示了上網(wǎng)過程中捕獲到的數(shù)據(jù)包:

1f6f99c8-87d4-11ed-bfe3-dac502259ad0.png

這5個(gè)數(shù)據(jù)包的含義如下圖所示,其中①②③④⑤分別對應(yīng)著上圖中的第9、10、11、12、13這幾個(gè)數(shù)據(jù)包。

網(wǎng)絡(luò)拓?fù)鋱D:

1f79fcd8-87d4-11ed-bfe3-dac502259ad0.png

1. 網(wǎng)絡(luò)傳輸延遲的計(jì)算

當(dāng)發(fā)生網(wǎng)絡(luò)延遲時(shí),我們首先需要考慮的就是傳輸線路導(dǎo)致的延遲。如圖所示,我們首先來查看捕獲到的TCP 3次握手中的第2個(gè)數(shù)據(jù)包。

1f9c0e72-87d4-11ed-bfe3-dac502259ad0.png

它的tcp.time_delta值為0.062,這個(gè)值是由3個(gè)時(shí)間共同組成的:

從客戶端到服務(wù)端的時(shí)間;

服務(wù)端操作系統(tǒng)接收TCP 3次握手的syn請求,并回應(yīng)一個(gè)(syn,ack)回應(yīng);

從服務(wù)端到客戶端的時(shí)間。

考慮操作系統(tǒng)在處理TCP握手時(shí)的時(shí)間很短,這個(gè)值可以看作是由第一個(gè)和第3個(gè)時(shí)間組成的,也就是數(shù)據(jù)包在線路上傳輸所花費(fèi)的時(shí)間。如果這個(gè)值較大的話,則說明線路傳輸時(shí)出現(xiàn)了延時(shí),這個(gè)原因可能是由服務(wù)端和客戶端之間的設(shè)備造成的。

2. 客戶端延遲的計(jì)算

第2個(gè)網(wǎng)絡(luò)延遲的位置就位于客戶端,這是由于客戶端上的應(yīng)用程序造成的。我們平時(shí)所使用的瀏覽器就是一個(gè)典型的例子,當(dāng)你使用瀏覽器打開了太多的窗口時(shí),速度就會(huì)變得十分緩慢。另外,很多用來完成網(wǎng)絡(luò)操作的客戶端由于設(shè)計(jì)的缺陷也會(huì)消耗大量的時(shí)間。

這部分延遲時(shí)間的值可以通過查看第12個(gè)數(shù)據(jù)包的time_delta值得到。其中第11個(gè)數(shù)據(jù)包是由操作系統(tǒng)產(chǎn)生并發(fā)送出去的,這是因?yàn)榭蛻舳瞬僮飨到y(tǒng)在處理TCP連接時(shí)的時(shí)間很短,例如圖中這個(gè)值為0(實(shí)驗(yàn)環(huán)境,實(shí)際情況中要比這大一些)。

在客戶端操作系統(tǒng)向目標(biāo)發(fā)送了TCP 3次握手的最后一次握手包之后,客戶端的應(yīng)用程序還會(huì)繼續(xù)向目標(biāo)發(fā)送一個(gè)HTTP請求。這個(gè)請求所花費(fèi)的時(shí)間就是客戶端延遲的時(shí)間。

1fc81cba-87d4-11ed-bfe3-dac502259ad0.png

3.服務(wù)端延遲的計(jì)算

如果排除了前面兩個(gè)網(wǎng)絡(luò)延遲的可能性,那么延遲的位置就只能位于服務(wù)器。由于我們現(xiàn)在的觀察點(diǎn)位于客戶端,所以并不能直接獲得服務(wù)器產(chǎn)生HTTP回應(yīng)的時(shí)間。我們可以觀察第12個(gè)數(shù)據(jù)包(客戶端發(fā)出的HTTP請求)和第13個(gè)數(shù)據(jù)包(服務(wù)端發(fā)出的HTTP回應(yīng))之間的時(shí)間來計(jì)算這個(gè)時(shí)間。

如圖所示,這個(gè)0.109秒是由網(wǎng)絡(luò)傳輸和服務(wù)端產(chǎn)生回應(yīng)共同構(gòu)成的,所以我們可以大致估計(jì)服務(wù)端用來生成回應(yīng)的時(shí)間為0.109?0.062=0.047。

1ff03380-87d4-11ed-bfe3-dac502259ad0.png

如果網(wǎng)絡(luò)發(fā)生延遲的話,我們可以根據(jù)下面的方法來確定延遲發(fā)生的位置。

如果上面網(wǎng)絡(luò)拓?fù)鋱D中的②處數(shù)據(jù)包的延時(shí)較大的話,則可以確定延遲發(fā)生在傳輸?shù)穆窂缴稀?/p>

如果上面圖網(wǎng)絡(luò)拓?fù)鋱D中的④處數(shù)據(jù)包的延時(shí)較大的話,則可以確定延遲發(fā)生在客戶端處。

如果上面圖網(wǎng)絡(luò)拓?fù)鋱D中的⑤處數(shù)據(jù)包的延時(shí)較大的話,則可以確定延遲發(fā)生在服務(wù)器處。

十、網(wǎng)絡(luò)故障排查實(shí)戰(zhàn)

1、建立一個(gè)用于測試的仿真網(wǎng)絡(luò)

為了能夠更好地了解整個(gè)網(wǎng)絡(luò)的狀況,我們首先來構(gòu)建一個(gè)模擬的仿真網(wǎng)絡(luò),在這個(gè)網(wǎng)絡(luò)中存在著客戶端、服務(wù)器以及連接它們的各種設(shè)備。

構(gòu)建完成的仿真網(wǎng)絡(luò)如圖所示:

2019f670-87d4-11ed-bfe3-dac502259ad0.png

這個(gè)網(wǎng)絡(luò)結(jié)構(gòu)的配置和延遲的網(wǎng)絡(luò)拓?fù)鋱D基本一樣,只是在內(nèi)部網(wǎng)絡(luò)中多添加了PC1和PC2,其中PC1的配置如圖所示。

2042639e-87d4-11ed-bfe3-dac502259ad0.png

而PC2的IPv4配置中采用了DHCP方式,如圖所示。

20651146-87d4-11ed-bfe3-dac502259ad0.png

另外由于這個(gè)實(shí)驗(yàn)中我們還需要一臺(tái)DHCP服務(wù)器,這里為了精簡網(wǎng)絡(luò)結(jié)構(gòu),所以我們在原來的網(wǎng)關(guān)路由器上開啟了DHCP功能,開啟的命令如下所示:


interface GigabitEthernet0/0/0

ip address 192.168.1.1 255.255.255.0

2、導(dǎo)致不能上網(wǎng)的原因

在實(shí)際生活中導(dǎo)致計(jì)算機(jī)不能上網(wǎng)的原因有很多,正常情況下我們可以按照如下的步驟來進(jìn)行故障排除。

檢查用戶所用設(shè)備的網(wǎng)卡是否正常啟動(dòng)。

檢查用戶所用設(shè)備上每個(gè)網(wǎng)卡的IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)配置是否正確。

檢查用戶所在網(wǎng)絡(luò)的ARP協(xié)議是否正常工作,例如網(wǎng)關(guān)的MAC地址是否正確。

檢查用戶所在網(wǎng)絡(luò)的DNS協(xié)議是否正常工作。

檢查用戶所使用的具體網(wǎng)絡(luò)服務(wù)是否正常工作。

下面我們就按照這個(gè)順序來分別研究一下這些故障,其中前兩個(gè)故障的排除都屬于計(jì)算機(jī)的基本配置。

3、檢查計(jì)算機(jī)的網(wǎng)絡(luò)設(shè)置

1. 確保網(wǎng)卡正常啟動(dòng)

雖然在正常情況下設(shè)備的網(wǎng)卡都是啟用的,但是也有很多情況網(wǎng)絡(luò)故障確實(shí)是由于網(wǎng)卡沒有啟動(dòng)所造成的。在Windows操作系統(tǒng)中我們可以使用命令行中的ipconfig命令來查看網(wǎng)卡的狀態(tài)和基本信息(IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)等信息)。如果在Linux系統(tǒng)中的話,可以使用ifconfig命令。

如圖所示,這里面的①部分的“本地連接4”就是一個(gè)沒有啟動(dòng)的網(wǎng)卡,而②部分的“本地連接2”則是一個(gè)正常工作的網(wǎng)卡,我們需要確保當(dāng)前要使用的網(wǎng)卡已經(jīng)啟動(dòng)。

208805d4-87d4-11ed-bfe3-dac502259ad0.png

2. 檢查IP配置的正確性

一臺(tái)計(jì)算機(jī)如果需要正常上網(wǎng)的話,那么就需要配置如下信息:

IP地址;

子網(wǎng)掩碼;

網(wǎng)關(guān)地址;

DNS服務(wù)器地址。

通常一臺(tái)計(jì)算機(jī)的IP配置有兩種方法,一是手動(dòng)配置,二是使用DHCP分配的方式。這里面的網(wǎng)絡(luò)配置包括IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)和DNS服務(wù)器地址。當(dāng)你使用ipconfig命令查看之后,發(fā)現(xiàn)網(wǎng)卡雖然啟用,但是沒有顯示IP地址時(shí),就需要詢問網(wǎng)絡(luò)管理員,或者參考同一單位其他人的計(jì)算機(jī)來確定IP配置所使用的方法。如果該計(jì)算機(jī)所處網(wǎng)絡(luò)采用手動(dòng)配置的方法,那么就需要根據(jù)網(wǎng)絡(luò)的部署對其進(jìn)行配置。

下圖給出了Windows環(huán)境下對IP配置的方法:

20b91c78-87d4-11ed-bfe3-dac502259ad0.png

如果這個(gè)網(wǎng)絡(luò)要求采用DHCP動(dòng)態(tài)分配IP方法的話,那么我們就需要對其進(jìn)行分析了。

如圖所示,以內(nèi)部網(wǎng)絡(luò)的PC2為例,該主機(jī)采用DHCP動(dòng)態(tài)分配IP地址的方式。但是在工作中卻發(fā)現(xiàn)該主機(jī)無法上網(wǎng)。

20e7a8fe-87d4-11ed-bfe3-dac502259ad0.png

我們對這個(gè)主機(jī)進(jìn)行檢查,使用“ipconfig”命令查看這臺(tái)主機(jī)的網(wǎng)絡(luò)設(shè)置,發(fā)現(xiàn)并沒有得到IP地址等信息。

210b6230-87d4-11ed-bfe3-dac502259ad0.png

現(xiàn)在我們可以確定該計(jì)算機(jī)不能上網(wǎng)的原因在于沒有通過DHCP協(xié)議獲得IP地址等信息,但是究竟是由于本機(jī)受到病毒感染從而造成DHCP協(xié)議不能正常工作,還是DHCP服務(wù)器沒有正常工作,這還需要我們進(jìn)一步分析。

首先我們可以在PC2處使用Wireshark進(jìn)行抓包分析:

21320e44-87d4-11ed-bfe3-dac502259ad0.png

在Wireshark中使用“bootp”作為顯示過濾器,可以看到如下圖所示的數(shù)據(jù)包。

2153433e-87d4-11ed-bfe3-dac502259ad0.png

這里可以看到PC2在網(wǎng)絡(luò)中持續(xù)發(fā)送“DHCP Discover”數(shù)據(jù)包,這些數(shù)據(jù)包的目的地址為“255.255.255.255”,表示這是一個(gè)廣播數(shù)據(jù)包。而源IP地址為“0.0.0.0”則是因?yàn)樵撚?jì)算機(jī)現(xiàn)在還沒有得到IP地址,不過由于它本身具有MAC地址,所以可以在局域網(wǎng)內(nèi)部通信。

我們打開這個(gè)數(shù)據(jù)包的Ethernet部分可以看到它的MAC地址為“54:89:98:1c:67:fb”,如圖所示,這也正表明了該數(shù)據(jù)包來自于PC2。

21836226-87d4-11ed-bfe3-dac502259ad0.png

繼續(xù)向下移動(dòng)到Bootstrap位置,我們可以看到這個(gè)信息的類型為Boot Request (1)。

21a585cc-87d4-11ed-bfe3-dac502259ad0.png

DHCP的消息一共有8種,下表給出了DHCP協(xié)議中的8種類型。

21d52840-87d4-11ed-bfe3-dac502259ad0.png

21f53996-87d4-11ed-bfe3-dac502259ad0.png

按照DHCP協(xié)議的要求,客戶端會(huì)在網(wǎng)絡(luò)中廣播“DHCP Discover”請求,用來尋找DHCP服務(wù)器,而當(dāng)服務(wù)器收到這個(gè)請求之后,會(huì)用DHCP Offer來響應(yīng)DHCP DISCOVER報(bào)文,此報(bào)文攜帶了各種配置信息。但是在我們剛剛捕獲到的數(shù)據(jù)包中,卻沒有發(fā)現(xiàn)“DHCP Offer”報(bào)文,這說明在DHCP服務(wù)器端出現(xiàn)了問題。

通過排查,我們發(fā)現(xiàn)DHCP服務(wù)器已經(jīng)被關(guān)閉。我們隨后啟動(dòng)DHCP服務(wù)器,然后繼續(xù)使用Wireshark查看捕獲到的數(shù)據(jù)包。

22204474-87d4-11ed-bfe3-dac502259ad0.png

如果一臺(tái)機(jī)器正常啟動(dòng)的話,最先捕獲到的兩個(gè)數(shù)據(jù)包分別為DHCP Discover和DHCP Offer數(shù)據(jù)包,然后是DHCP Request和DHCP Acknowledgment數(shù)據(jù)包。

在DHCP Offer數(shù)據(jù)包中包含如下數(shù)據(jù):

你(客戶端)的IP地址:這是DHCP服務(wù)器提供可以使用的IP地址。

子網(wǎng)掩碼:這是DHCP服務(wù)器提供的可以在網(wǎng)絡(luò)上使用的子網(wǎng)掩碼。

域名服務(wù)器:這是DNS服務(wù)器的IP地址。

網(wǎng)關(guān):這是網(wǎng)關(guān)的IP地址。

這些信息是保證網(wǎng)絡(luò)通信最基本的內(nèi)容,正常情況下,用戶的設(shè)備會(huì)收到一個(gè)這樣的DHCP Offer數(shù)據(jù)包回應(yīng)。

下面我們給出了一個(gè)完整的DHCP Offer數(shù)據(jù)包的詳細(xì)內(nèi)容,如圖所示。

2253d69a-87d4-11ed-bfe3-dac502259ad0.png

當(dāng)網(wǎng)絡(luò)比較繁忙時(shí),我們也可以使用過濾器來只顯示出指定類型的DHCP數(shù)據(jù)包,例如只顯示DHCP Acknowledgement類型的數(shù)據(jù)包,這個(gè)過濾器表達(dá)式為:

bootp.option.dhcp==5

如果方便的話,可以將這個(gè)過濾器作為一個(gè)按鈕。另外我們也可以將顯示異常的DHCP過濾器字符串作為一個(gè)按鈕,例如當(dāng)網(wǎng)絡(luò)中出現(xiàn)第4類型、第6類型、第7類型的DHCP數(shù)據(jù)包都會(huì)導(dǎo)致用戶設(shè)備不能上網(wǎng),這個(gè)過濾器如下所示:

bootp.option.dhcp==4||bootp.option.dhcp==6||bootp.option.dhcp==7

可以單擊過濾表達(dá)式右側(cè)的“+”,然后在標(biāo)簽里輸入名稱DHCP Error,在過濾器中輸入上面的表達(dá)式,然后單擊“OK”按鈕。

22826c80-87d4-11ed-bfe3-dac502259ad0.png

以后如果你需要使用這個(gè)過濾器,只需要單擊右側(cè)的“DHCP Error”。

22a3f828-87d4-11ed-bfe3-dac502259ad0.png

4、檢查與網(wǎng)關(guān)的連接

當(dāng)客戶端獲得了IP地址、網(wǎng)關(guān)和DNS服務(wù)器信息之后,接下來要檢查的就是網(wǎng)關(guān)。因?yàn)榫W(wǎng)關(guān)充當(dāng)著整個(gè)網(wǎng)絡(luò)的出入口,所以客戶端必須要能夠連接到它。

如圖所示,我們可以使用“ping”命令來測試與網(wǎng)關(guān)的連接情形。

22c3d184-87d4-11ed-bfe3-dac502259ad0.png

如果ping不通的話,則說明與網(wǎng)關(guān)的連接出現(xiàn)了問題。如果線路沒有問題的話,則可能考慮兩種情況,一是網(wǎng)關(guān)已經(jīng)關(guān)閉,二是ARP協(xié)議出現(xiàn)了問題。

計(jì)算機(jī)需要使用ARP協(xié)議來解析位于同一網(wǎng)絡(luò)的網(wǎng)關(guān)的MAC地址。如果希望更好地對ARP數(shù)據(jù)包進(jìn)行觀察的話,可以使用過濾器來完成對ARP數(shù)據(jù)包的過濾,顯示過濾器的寫法為“arp”。

另外你也可以在用戶的設(shè)備上使用“arp-a”命令來查看系統(tǒng)緩存中的IP與MAC地址的對應(yīng)關(guān)系,如下圖所示。

230d9fda-87d4-11ed-bfe3-dac502259ad0.png

如果ARP緩存中網(wǎng)關(guān)的IP地址與MAC地址對應(yīng)沒有問題,就可以判斷ARP協(xié)議能夠正常工作。

5、檢查DNS協(xié)議

當(dāng)我們需要連接到互聯(lián)網(wǎng)的某個(gè)網(wǎng)站的時(shí)候,使用的往往是一個(gè)域名而不是IP地址,這個(gè)過程中需要連接到DNS服務(wù)器對其進(jìn)行查詢。

一個(gè)正常的DNS應(yīng)答數(shù)據(jù)包的格式如圖所示:

232febf8-87d4-11ed-bfe3-dac502259ad0.png

如果一個(gè)客戶機(jī)不能獲取Web服務(wù)器或者應(yīng)用服務(wù)器的IP地址,那么我們可以通過數(shù)據(jù)包分析的方法來分析這個(gè)故障,分析的目標(biāo)就是來自DNS服務(wù)器的響應(yīng)。

通過對比對失敗的DNS響應(yīng)與正常的DNS響應(yīng)之間的區(qū)別可以找出故障的根源。這種失敗可能由于DNS服務(wù)器配置的故障,或者由于你查詢時(shí)使用了錯(cuò)誤的URL和主機(jī)名。

6、檢查網(wǎng)絡(luò)傳輸路徑

好了,如果之前的檢查都沒有問題的話,那么從現(xiàn)在開始起,發(fā)出的數(shù)據(jù)包將遠(yuǎn)離我們,踏上去往目標(biāo)服務(wù)器的路上,雖然不到一秒,但是這個(gè)數(shù)據(jù)包可能已經(jīng)穿越了半個(gè)世界。

這里我們會(huì)使用Wireshark協(xié)議來分析離開網(wǎng)關(guān)之后的數(shù)據(jù)包。在這個(gè)分析過程中需要用到traceroute工具,它將顯示出一條從我們主機(jī)到目標(biāo)主機(jī)的通路。在Windows系統(tǒng)中,啟動(dòng)traceroute工具的命令為tracert。

下圖顯示了從本機(jī)到百度官方網(wǎng)站的路徑:

235c3834-87d4-11ed-bfe3-dac502259ad0.png

這個(gè)工具利用了數(shù)據(jù)包中TTL值的特性,這個(gè)值就是數(shù)據(jù)包的生存時(shí)間。雖然稱之為生存時(shí)間,但是這和我們平時(shí)所講到的時(shí)間并不相同,它的值只有在經(jīng)過一個(gè)路由器之后才會(huì)減少。當(dāng)一個(gè)路由器收到TTL值為0的數(shù)據(jù)包就會(huì)將其丟棄掉,并向這個(gè)數(shù)據(jù)包的源地址發(fā)回一個(gè)ICMP報(bào)文。

利用這個(gè)TTL的這個(gè)特性,traceroute程序會(huì)先向目標(biāo)發(fā)送一個(gè)數(shù)據(jù)包,但是這個(gè)數(shù)據(jù)包永遠(yuǎn)不會(huì)到達(dá)目標(biāo)。因?yàn)樗腡TL值被設(shè)置為1,所以它僅僅到達(dá)了第一個(gè)中轉(zhuǎn)站(路由器)就被丟棄,但是這個(gè)路由器需要向源地址發(fā)送一個(gè)ICMP數(shù)據(jù)包。這樣源主機(jī)就知道數(shù)據(jù)所經(jīng)過的第一個(gè)路由器了。

接著向目標(biāo)發(fā)送TTL值為2的數(shù)據(jù)包,收到應(yīng)答之后,再發(fā)送TTL值為3的數(shù)據(jù)包。這樣一直到數(shù)據(jù)包到達(dá)目標(biāo)為止,利用traceroute程序,我們就可以知道從源地址到達(dá)目標(biāo)地址之間所經(jīng)過的路由器。

這里推薦使用一個(gè)更好的工具PingPlotter,這個(gè)工具要遠(yuǎn)遠(yuǎn)比系統(tǒng)自帶的工具要強(qiáng)大,你可以從PingPlotter官網(wǎng)下載一個(gè)免費(fèi)的版本。這個(gè)工具相對traceroute最大的優(yōu)勢在于可以指定發(fā)送數(shù)據(jù)包的大小。

23b33e54-87d4-11ed-bfe3-dac502259ad0.png

首先我們啟動(dòng)Wireshark,然后PingPlotter中的對話框中輸入要目標(biāo)地址“www.baidu.com”。

244d10ba-87d4-11ed-bfe3-dac502259ad0.png

按下右側(cè)的三角形按鈕,這時(shí)就會(huì)開始向目標(biāo)發(fā)送數(shù)據(jù)包了。等數(shù)據(jù)包到達(dá)www.baidu.com時(shí),就可以在Wireshark中停止數(shù)據(jù)包的捕獲了,在此期間數(shù)據(jù)包經(jīng)過的路徑如圖所示。

247213e2-87d4-11ed-bfe3-dac502259ad0.png

在Wireshark找到并選中PingPlotter發(fā)出的第一個(gè)數(shù)據(jù)包,然后在數(shù)據(jù)包詳細(xì)信息面板中選中IP協(xié)議部分。

249c0634-87d4-11ed-bfe3-dac502259ad0.png

利用這個(gè)工具我們就可以查看在到達(dá)目標(biāo)網(wǎng)站之前,數(shù)據(jù)包都經(jīng)過了哪些路由器以及在哪個(gè)路由器出現(xiàn)了問題。

7、檢查目標(biāo)服務(wù)器

如果一個(gè)用戶到達(dá)目標(biāo)服務(wù)器的故障是功能性的,也就是說兩者的連接沒有問題,但是用戶卻不能正常使用目標(biāo)服務(wù)器上的應(yīng)用。

可能導(dǎo)致故障的原因如下:

用戶提供的URL或者端口是錯(cuò)誤的;

這個(gè)端口被防火墻所屏蔽;

應(yīng)用程序不再正常工作。

第一個(gè)原因往往是用戶錯(cuò)誤輸入造成的,另外兩個(gè)因素往往會(huì)導(dǎo)致所有人都無法訪問。我們還需要確定到底是目標(biāo)主機(jī)整體都無法訪問,還是僅僅是一個(gè)程序無法訪問。如果服務(wù)器無法訪問,那么顯示ICMP信息應(yīng)該為Destination Host is Unreachable或者Destination Port is Unreachable,如果目標(biāo)防火墻啟用了屏蔽,那么所有的ICMP數(shù)據(jù)包都得不到回應(yīng)。

如果服務(wù)器正常工作,但是應(yīng)用程序卻是無法訪問的,僅僅在客戶端進(jìn)行數(shù)據(jù)包捕獲獲取的信息可能并不足以找到故障的原因。但是通過查看TCP會(huì)話連接建立的數(shù)據(jù)包可以找到很多有用的信息。
如果用戶可以與目標(biāo)程序建立TCP連接,但是應(yīng)用程序卻不能正常工作。這時(shí)我們需要考慮的因素很多,最簡單的方法就是比較用戶與其他用戶連接目標(biāo)的數(shù)據(jù)包有什么不同。

如果排除了上面提到的這些可能性,下面列出的這些因素也可能會(huì)導(dǎo)致出現(xiàn)一個(gè)功能性的故障。

(1)用戶認(rèn)證:這種故障出現(xiàn)的主要原因是用戶缺少適當(dāng)?shù)恼J(rèn)證、授權(quán)、權(quán)限等。這是我們檢查用戶是否正常工作的第一個(gè)步驟。

(2)用戶自己計(jì)算機(jī)上的配置:很多應(yīng)用程序需要特定的配置,例如將特定文件放置在特定目錄中。還有一些應(yīng)用程序需要考慮特殊插件例如java、net framework等。通常,應(yīng)用程序會(huì)提供應(yīng)用程序配置的錯(cuò)誤故障。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7553

    瀏覽量

    88729
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84627
  • Wireshark
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    6513

原文標(biāo)題:【建議收藏】網(wǎng)絡(luò)延遲及故障分析方法指南匯總!

文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    容差模擬電路軟故障診斷的小波與量子神經(jīng)網(wǎng)絡(luò)方法設(shè)計(jì)

    中,從而減少故障識別的不確定度,提高模式識別的準(zhǔn)確性。文章提出了容差模擬電路軟故障診斷的小波與量子神經(jīng)網(wǎng)絡(luò)方法,利用MonteCarlo分析
    發(fā)表于 07-05 08:06

    矢量網(wǎng)絡(luò)分析儀維修故障方法總結(jié)

    維修實(shí)例來簡單分析一下矢量網(wǎng)絡(luò)分析儀出現(xiàn)故障的檢查思路和排除方法。實(shí)例1:開機(jī)后儀器自檢通過,測量反射(所用通道A/R)工作正常,測量傳輸(所用通道B/R)工作不正常,信號低30dBm
    發(fā)表于 05-27 15:56

    電源故障分析與處理方法

    電源故障分析與處理方法介紹
    發(fā)表于 06-05 09:51 ?23次下載

    網(wǎng)絡(luò)設(shè)備常見故障分析

    網(wǎng)絡(luò)設(shè)備常見故障分析 1.線材選擇不當(dāng),造成網(wǎng)絡(luò)不穩(wěn)定,時(shí)斷時(shí)通的故障分析及排除。 &nb
    發(fā)表于 08-01 11:28 ?1613次閱讀

    匯總多年儀表維修經(jīng)驗(yàn) 分享工業(yè)儀表故障分析判斷的10種方法

    儀表故障是我們工作中經(jīng)常會(huì)遇到的問題,那么判斷故障,找出問題都有哪些好方法呢?下面小編為大家整理了工業(yè)儀表故障分析判斷的10種
    的頭像 發(fā)表于 01-23 17:05 ?7364次閱讀

    工業(yè)儀表故障分析判斷的10種方法詳細(xì)資料概述

    儀表故障是我們工作中經(jīng)常會(huì)遇到的問題,那么判斷故障,找出問題都有哪些好方法呢?下面小編為大家整理了工業(yè)儀表故障分析判斷的10種
    的頭像 發(fā)表于 07-09 09:40 ?3379次閱讀

    判斷網(wǎng)絡(luò)故障方法介紹

    這是一個(gè)很復(fù)雜的東西。系統(tǒng):一般TCP/IP協(xié)議如果出現(xiàn)故障的話,網(wǎng)絡(luò)肯定是會(huì)出現(xiàn)問題了。還有可能就是對用戶管理出現(xiàn)了問題。有時(shí)候防火墻的設(shè)置也會(huì)影響網(wǎng)絡(luò)。網(wǎng)絡(luò)分析系統(tǒng)進(jìn)行
    的頭像 發(fā)表于 09-17 09:24 ?4116次閱讀

    如何檢查儀表故障工業(yè)儀表故障分析判斷十種方法

    儀表故障是我們工作中經(jīng)常會(huì)遇到的問題,那么判斷故障,找出問題都有哪些好方法呢?下面小編為大家整理了工業(yè)儀表故障分析判斷的10種
    的頭像 發(fā)表于 11-17 10:22 ?5018次閱讀

    直流接地故障檢測原理分析及接地故障種類 查找方法

    直流接地故障檢測原理分析及接地故障種類 查找方法(lg純平電視開關(guān)電源)-本資料是直流接地故障檢測原理
    發(fā)表于 07-26 12:13 ?19次下載
    直流接地<b class='flag-5'>故障</b>檢測原理<b class='flag-5'>分析</b>及接地<b class='flag-5'>故障</b>種類 查找<b class='flag-5'>方法</b>

    時(shí)間敏感網(wǎng)絡(luò)TSN流量捕獲方法匯總

    時(shí)間敏感網(wǎng)絡(luò)TSN流量捕獲方法匯總
    發(fā)表于 10-13 17:33 ?7次下載

    網(wǎng)絡(luò)分析儀維修-故障分析匯總

    儀使用率的提高,儀器不可避免地會(huì)出現(xiàn)故障。那么,如何判斷網(wǎng)分出現(xiàn)故障了呢,今天西安安泰網(wǎng)絡(luò)分析儀維修工程師就給大家分享一下。
    的頭像 發(fā)表于 11-03 15:17 ?1453次閱讀

    Linux網(wǎng)絡(luò)延遲排查方法 如何分析增加的網(wǎng)絡(luò)延遲

    談到網(wǎng)絡(luò)延遲(Network Latency),人們通常認(rèn)為它是指網(wǎng)絡(luò)數(shù)據(jù)傳輸所需的時(shí)間。但是,這里的“時(shí)間”是指雙向流量,即數(shù)據(jù)從源發(fā)送到目的地,然后從目的地地址返回響應(yīng)的往返時(shí)間:RTT(Round-Trip Time)。
    發(fā)表于 04-08 10:01 ?2134次閱讀

    光模塊對網(wǎng)絡(luò)延遲的影響如何?

    隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,越來越多的企業(yè)、機(jī)構(gòu)、個(gè)人都離不開網(wǎng)絡(luò)。而光模塊作為網(wǎng)絡(luò)中重要的組成部分,對網(wǎng)絡(luò)延遲有著至關(guān)重要的影響。本文旨在從理
    的頭像 發(fā)表于 10-16 12:12 ?1062次閱讀

    安捷倫網(wǎng)絡(luò)分析儀常見故障以及處理方法

    安捷倫網(wǎng)絡(luò)分析儀常見故障以及處理方法
    的頭像 發(fā)表于 11-24 10:14 ?1791次閱讀

    VLAN 故障排除方法

    監(jiān)控工具或進(jìn)行Ping測試、Traceroute追蹤等方法來實(shí)現(xiàn)。 分析故障 一旦定位到故障位置,就需要對故障進(jìn)行深入
    的頭像 發(fā)表于 11-19 09:38 ?428次閱讀
    RM新时代网站-首页