利用wireshark測試網(wǎng)絡(luò)性能

最近學(xué)習(xí)了wireshark抓包軟件,利用它簡單測試了一下網(wǎng)絡(luò)的性能,希望有想學(xué)習(xí)的程序猿們做個參考

Wireshark(前稱Ethereal)是一個網(wǎng)絡(luò)封包分析軟件。網(wǎng)絡(luò)封包分析軟件的功能是擷取網(wǎng)絡(luò)封包,并盡可能顯示出最為詳細的網(wǎng)絡(luò)封包資料。Wireshark使用WinPCAP作為接口,直接與網(wǎng)卡進行數(shù)據(jù)報文交換。
網(wǎng)絡(luò)封包分析軟件的功能可想像成 "電工技師使用電表來量測電流、電壓、電阻" 的工作 - 只是將場景移植到網(wǎng)絡(luò)上,并將電線替換成網(wǎng)絡(luò)線。在過去,網(wǎng)絡(luò)封包分析軟件是非常昂貴的,或是專門屬于盈利用的軟件。Ethereal的出現(xiàn)改變了這一切。在GNUGPL通用許可證的保障范圍底下,使用者可以以免費的代價取得軟件與其源代碼,并擁有針對其源代碼修改及客制化的權(quán)利。Ethereal是目前全世界最廣泛的網(wǎng)絡(luò)封包分析軟件之一。

啟動軟件

啟動桌面軟件圖標,我使用的是Wireshark 2.4.3 64bit版本

捕獲報文基本分析實驗

  1. 打開程序后,選擇Capture(捕獲)—Start(開始),或者使用Ctrl +E鍵。
  2. 一小段時間過后,再次進入Capture(捕獲)菜單,然后選擇Stop(停止)或者Ctrl+E鍵。
  3. 停止捕獲后,在對話框下可以看到緩沖器中的所有實際“數(shù)據(jù)”。分析該卷標結(jié)構(gòu)及其內(nèi)容。如圖3.1所示


    3.1 解碼窗口

    看出解碼窗口分為三部分,最上面是捕獲的報文,中間是報文的解碼,最下面是報文的二進制碼,即發(fā)送的最原始內(nèi)容。我們可以看出捕獲到的報文有UDP,SSL,TCP等協(xié)議,解碼表對應(yīng)每一個層次的協(xié)議進行解碼分析。

數(shù)據(jù)包的分析

IP數(shù)據(jù)包協(xié)議分析:如圖3.2所示

IP協(xié)議報頭

打開IP的標簽,可以看到有IP協(xié)議報頭的詳細解碼,其中IP協(xié)議報頭長度為20個字節(jié)。其中從上圖得到的數(shù)據(jù)分析如下:
第一部分,Version=4,表示IP協(xié)議的版本號為4,即IPV4,占4位,Header Length=20 Bytes,表示IP包頭的總長度為20個字節(jié),該部分占4個位。所以第一行合起來就是一個字節(jié)。
第二部分Differentiated Services Field=OX00,表示服務(wù)類型為0。用來描述數(shù)據(jù)報所要求的服務(wù)質(zhì)量。Total Length=78Bytes,表示該IP包的總長度為78個字節(jié)。該部分占兩字節(jié)。Identification=11736,表示IP包識別號為11736。該部分占兩個字節(jié)。
第三部分Flags,表示片標志,占3個位。各位含義分別為:第一個“0”不用,第二位為不可分片位標志位,此處值為“x”表示該數(shù)據(jù)表不允許分片。第三位為是否最后一段標志位,此處“0”表示最后一段。Fragment Offset=0,表示片偏移為0個字節(jié)。該部分占13位。 Time to Live=64,表示生存時間TTL值為64,占1字節(jié)。Proctol=17(UDP),表示協(xié)議類型為UDP,協(xié)議代碼是6,占1字節(jié)。
第四部分Header Checksun=0XC926(validation disabled),表示IP包頭校驗和為C926,括號內(nèi)的validation disabled表示此IP數(shù)據(jù)包禁止校驗。該部分占兩字節(jié)。Source Address=[192.168.1.39],表示IP數(shù)據(jù)包源地址為:172.168.1.39,占四字節(jié)。Destination Address=[192.168.1.41],表示IP數(shù)據(jù)包目的地址為:192.168.1.41,占四字節(jié)。

捕獲并分析地址解析協(xié)議(ARP)

1)選擇Capture(捕獲)――Options (選項)。
2)在Options (選項中,選擇)Capture Filter(定義過濾器)。
3)從協(xié)議列表中選擇Ethernet type 0x0806 (ARP)。
4)已經(jīng)定義了過濾器,可以按Start來捕獲流量。
5)停止捕獲并打開代碼窗口??吹讲东@到的幀
6)分析捕獲到的結(jié)果(即解釋數(shù)據(jù)包的內(nèi)容和協(xié)議具體實現(xiàn)過程)。
第一個ARP數(shù)據(jù)包詳情

從如圖3.3所示可以看出,可以分析ARP的工作過程:首先,在本局域網(wǎng)上的所有主機上運行的ARP進程都收到本機發(fā)送的ARP請求分組(從目標地址為Broadcast可以看出)。其次,從摘要中,PA=[192.168.1.39],可以看出ARP請求地址為192.168.1.39,而此IP地址的網(wǎng)絡(luò)設(shè)備在ARP請求分組中見到自己的IP地址,就向本機發(fā)送ARP響應(yīng)分組,并寫于自己的硬件地址。至于在此ARP分組的其余的所有主機都不會理睬這個ARP請求分組。從以上可以分析,ARP請求分組是廣播的,但ARP響應(yīng)分組是單一的,即一對一。
一下對第一個ARP包進行分析。
Destination,6個字節(jié),可以看出ARP包是采取廣播方式。
Source,6個字節(jié),值為4437e6d3959b,這個MAC地址為發(fā)起該ARP的主機接口的MAC地址,即源MAC地址。
Ethertype,2個字節(jié),是協(xié)議類型,0806代表ARP類型,表示該幀是ARP幀。
Hardware type,2字節(jié),是硬件類型。我們用的是標準以太網(wǎng),值為1H(0001)。
Protocol type,長度2字節(jié),是協(xié)議類型,我們用的是IP協(xié)議,IP對應(yīng)的值為800,所以顯示值為0800.
Hardware size,1字節(jié),記錄硬件地址長度,這個值告訴處理該幀的程序,讀取硬件地址時讀到哪里結(jié)束。因為使用到網(wǎng)卡的MAC地址,而MAC地址的長度為6字節(jié),所以這里顯示長度為6。
Protocol size,1字節(jié),為協(xié)議長度,這個值告訴處理該幀的程序,讀取協(xié)議地址時讀到哪里結(jié)束。這次通信使用IPV4協(xié)議,而IPV4為4字節(jié),所以該字段的值就是4。
Opcode,2字節(jié),為操作類型,ARP請求為1,ARP響應(yīng)為2,圖中是0001,所以這是一個ARP請求。
Sender MAC address,6字節(jié),用來定義發(fā)送者站的物理地址長度,這里為發(fā)送者MAC地址,該地址用來告訴本次操作的對方,是哪個MAC地址對它進行了操作。
Sender IP address,4字節(jié),用來定義發(fā)送站的邏輯地址長度,這里為發(fā)送者IP地址,該地址用來告訴本次操作的對方,是哪個IP地址對它進行了操作。
Target MAC address,6字節(jié),用來定義目標的物理地址長度,這里為接收者MAC地址,用來告訴本次操作的對方,是哪個MAC地址應(yīng)該接收并處理該幀。
Target IP address,4字節(jié),用來定義目標的邏輯地址,這里為接收者IP地址,用來告訴本次操作的對方,是哪個MAC地址應(yīng)該接收并處理該幀。

網(wǎng)絡(luò)數(shù)據(jù)流量的分析

圖形化數(shù)據(jù)分析 IO Graphs

操作界面

測試結(jié)果曲線圖

這里是分析一個實時視頻上傳服務(wù)的抓包數(shù)據(jù),過濾條件:tcp.analysis.flags,表示設(shè)備和服務(wù)器之間的數(shù)據(jù)鏈路。連接時間12:57:20,斷開時間13:04:00。而這中間可以明顯看到13:00:00-13:01:20數(shù)據(jù)包的傳輸最多,具體原因查看具體時間段內(nèi)的數(shù)據(jù)交互。

圖形化數(shù)據(jù)分析 Time/Sequence Graph

操作界面

測試結(jié)果曲線圖

橫坐標代表了時間偏移量,縱坐標代表著tcp數(shù)據(jù)包中的seq值得變化,途中可以明顯發(fā)現(xiàn)0-18s的數(shù)據(jù)seq沒有任何變化,代表數(shù)據(jù)從192.168.1.41:54753 到 61.135.169.121:443在此時間段內(nèi)沒有任何數(shù)據(jù),但是發(fā)現(xiàn)18-20s內(nèi)突然接收大量數(shù)據(jù)。

異常數(shù)據(jù)統(tǒng)計分析

測試結(jié)果

測試結(jié)果

同樣是對剛剛的數(shù)據(jù)包進行分析,可也統(tǒng)計得出警告數(shù)據(jù)包,不僅可以得到注意數(shù)據(jù)包統(tǒng)計,還有聊天數(shù)據(jù)包,這里也是幫助我們進行數(shù)據(jù)性能分析的重要工具。

網(wǎng)絡(luò)存在的問題

在線一段時間觀看電影,并用wireshark測試網(wǎng)絡(luò)中的流量情況。
經(jīng)過測試,得到以下結(jié)果。如圖5.1和5.2所示


測試結(jié)果界面

測試結(jié)果曲線圖

通過圖5.1我們不難發(fā)現(xiàn),在數(shù)據(jù)傳輸?shù)倪^程中Wireshark抓取的數(shù)據(jù)包全部TCP的數(shù)據(jù)包,而其他的數(shù)據(jù)包均沒有抓取到。再通過圖5.2的曲線圖,我們可以更加清楚的看到,TCP數(shù)據(jù)包的曲線以及和總數(shù)據(jù)包的曲線重疊在一起,而其它的數(shù)據(jù)包的曲線未零。這表明,TCP的數(shù)據(jù)包以及幾乎占用了整個帶寬,這就使的其它的數(shù)據(jù)因為堵塞,而無法通過,造成了網(wǎng)絡(luò)性能的急劇下降。于此同時,實驗室其他同學(xué)的網(wǎng)速也會變得非常緩慢。

作者有話說:看似很難很難的網(wǎng)絡(luò)性能分析其實用軟件分析起來也變得不難理解,但是,要說網(wǎng)絡(luò)拓撲圖,交換機之類的概念我還是一個懵逼的狀態(tài)(=_=)希望這篇文章對有需求的程序猿有幫助~

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

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

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