wireshark 入門培訓

幾年前寫的一個wireshark基礎培訓,當時主要是面向技術支持人員,使其在工地現場可以使用wireshark做一些問題的初步分析。



WireShark基礎培訓

什麼是WireShark

WireShark是一個網絡協議分析器。主要作用是捕獲網絡包,顯示包詳細信息。

使用WireShark的目的:

通過各種方法的靈活組合,加上對業務流程的瞭解,可以幫助大家很好的分析、定位問題。

WireShark初步使用

以下以wireshark1.6.1版本爲例說明使用。軟件路徑

\\10.1.2.172\e$\組織標準工作環境\開發工具\wireshark-win32-1.6.1.exe

開始截包

1 打開軟件

2 點擊菜單“Capture”->“Interfaces”。出現如下圖:

3 選擇要進行截包的網絡接口,然後點擊其右側的Start。出現如下圖

注意:當存在多個網卡,或安裝了虛擬機存在虛擬網絡接口,要正確選擇捕獲的網絡接口。

 

停止捕獲

點擊菜單“Capture”->“Stop”  或  點擊工具欄的按鈕。

保存截包

點擊菜單“File”->“Save As”出現如下框

注意:

這裏有兩個選項:Captured和Displayed。

Captured指捕獲的所有包。

Displayed指過濾後顯示出來的包。

如果Captured包的個數太大,只關心顯示出來的內容,則選擇Displayed。

 

包過濾

包過濾是過濾出你所關心的包。可以在截包的過程中執行,也可以在停止截包後執行。

操作步驟:

在Filter框中輸入過濾語句,點擊Apply。如下圖

常用的過濾語句

ip.addr==

如:ip.addr==10.14.1.53。意思是隻顯示IP地址爲10.14.1.53的包,包括源地址是10.14.1.53的包,或目的地址是10.14.1.53的包。

ip.src==

如:ip.src==10.14.1.53。意思是隻顯示源地址是10.14.1.53的包,即只顯示10.14.1.53發送的包。

ip.dst==

如:ip.dst==10.14.1.53。意思是隻顯示目的地址是10.14.1.53的包,即只顯示發送到10.14.1.53的包。

udp.port==

tcp.port==

如:udp.port==51390。意思是值顯示發送或接收端口爲51390的包。

類似命令如udp.srcport, udp.dstport, tcp.srcport, tcp.dstport。

rtsp

如在filter框中輸入rtsp,則顯示rtsp協議的包。

rtp

如在filter框中輸入rtp,則顯示rtp協議的包。

tcp contains ” ”

如tcp contains “source”,表示顯示出tcp包且包中內容存在字符串”source”。

同理udp contains “”。

udp contains

如 udp contains 7c:05,表示顯示出udp包且包中內容存在二進制序列7c:05。

同理tcp contains。

注意:

過濾命令可邏輯組合。邏輯組合命令包括

&&,||,!

如ip.addr==10.14.1.53&&!tcp.port==554

表示過濾出ip地址爲10.14.1.53並且tcp源或目的端口不是554的包。

以上只列出工作中常用的過濾命令,更多命令可查看“Expression”中的值(如圖)。

 

閱讀包內容

包內容

以下對一個包內容進行個簡單的閱讀分析。

選中任何一個包,如下圖。看藍圈內的內容。

如上圖中顯示

Frame,Ethernet對應TCP/IP分層模型中的網路接口層。

網路接口層內包含了IP數據包,IP數據包數據中包含了UDP數據包,UDP數據包中包含了RTP數據包。

展開Frame與Ethernet

這裏可以看到,這個包的總大小爲1514字節。

這個數據包要發送到了物理地址爲44:37:e6:1f:23:3f。這個包從物理地址爲00:09:b6:17:c2:80的機器中發出,這個機器可能是一個路由。

 

展開Internet Protocol與User Datagram Protocol

這裏可以看到:包數據來源的IP爲10.14.1.53,包數據的目的IP爲10.1.10.64。

包數據的來源端口號爲2030。包數據的目的端口號爲59754。從UserDatagram Protocol中可以知道這個包爲UDP包。

 

展開RTP包,這裏包括RTP包頭,Payload爲RTP包數據。如下圖

 

列屬性

以下對各列進行個簡單說明:如下圖

No指包號。從截包開始時計數,每截到一個包,NO+1。

Time指時間。從截包開始時計時。如2.44表示距開始截包過了2.44秒。

Source表示源地址。

Destination表示目的地址。

Protocol表示協議。

Length表示包大小。

Info表示包的一些描述信息。幫助更直觀的看到包內容。

簡易閱讀方法

Follow TCP Stream,FollowUDP Stream

由於通過一個一個的看包的內容,不方便,Wireshark提供了Follow TCP Stream可以幫助更好的閱讀某個TCP交互的所有內容。同理Follow UDP Stream用於幫助更方便的閱讀某個UDP交互內容。

以下以RTSP交互爲例,描述操作步驟。

步驟一:開始截包

步驟二:使用rtsp過濾包

步驟三:選中任意一個包,右鍵菜單,點擊“Follow TCP Stream”。

內容顯示如下圖

通過上圖可以很方便的看出rtsp交互過程的所有內容。

同時可以很清晰地看到此次TCP 交互的所有步驟。

 

Linux下截包

由於linux下常常是命令行操作,沒有Wireshark這麼直觀的界面工具。但linux下的tcpdump工具能完成與Wireshark同樣的功能。

操作步驟

步驟一:通過SSH登錄linux系統,執行tcpdump命令。

如tcpdump -i eth0 –s 65535 –w 1.cap

表示截eth0接口的包,將包內容保存到根目錄的1.cap文件。

步驟二:等待一定時間,進行截包。

步驟三:ctrl+c停止命令。

步驟四:將1.cap文件拷貝到Windows下用Wireshark打開。

 

 

 

tcpdump常用命令參數解釋

-i指定接口。如-ieth0表示截eth0的包;-i lo表示截本機到本機的包。

-w 指定保存文件。如-w /home/1.cap,表示將截包的內容保存到/home/1.cap

-s 指定包數據截斷大小。指定爲一個足夠大的數防止包內容丟失。

src 表示過濾源IP地址。

dst 表示過濾目標IP地址。

port表示過濾端口。

以上命令參數也可通過and,or,!進行組合。

and表示並,or表示或,!表示非。

 

例子:

tcpdump -i eth0src 10.1.10.185

tcpdump -i eth0dst 10.1.10.158 and tcp and port! 22

tcpdump -i eth0dst or src 10.1.10.158 and tcp and port! 22

tcpdump -i eth0dst 10.1.10.158 and udp

tcpdump -i eth0tcp and port 554

tcpdump -i eth0-w 1.cap

tcpdump -i lo -w1.cap

tcpdump -s 65535-w /home/1.cap

舉例

DVC心跳

下圖爲DVC心跳原理

 

 

常見問題解答

有時接收了RTP包,但在WireShark上看不到RTP包只能看到UDP包,怎麼辦?

答:

選中此UDP包,右鍵菜單中,點擊“Decode As…”。如下圖

點“Apply”。這個操作的意思是將源端口號爲4160的UDP包內容按照RTP協議來分析。

這樣再過濾rtp就能過濾出rtp數據了。

 

如何查看音視頻丟包率?

答:

由於公司目前的音視頻數據都是RTP包,所以看RTP包的丟包率來反映音視頻數據的丟包率。

操作步驟如下。

點擊菜單的Telephony->RTP->Show All Streams,如下圖

據經驗,當視頻數據丟包率爲1%時就會出現卡。

 

上圖中出現了兩個RTP流,怎麼判斷哪個是視頻哪個是音頻呢?

答:

判斷方法如下:

步驟一:使用Follow TCP Stream 查看rtsp數據

步驟二:查看DESCRIBE返回的數據。如下圖

從劃線處可以得到

audio對應rtsp://10.14.1.53/1/trackID=0

video對應rtsp://10.14.1.53/1/trackID=1

步驟三:查看SETUP返回的數據,如下圖

劃線處及步驟二結論可以得到以下結論:

播放器客戶端將使用端口54114接收服務器端口2004發送來的audio數據

使用端口54116端口接收服務器端口2006發送來的video數據。

至此,就能知道那個是視頻,按個是音頻了。

 

Wiresharkwindows下截包時不能截本機發給本機的包,如何才能截到?

答:

方法:將本機路由到網關再路由回來。這樣就能截到了。

操作方法:

在cmd中輸入以下命令:

route add10.1.10.158 mask 255.255.255.255 10.1.10.254

其中10.1.10.158爲本機的IP。10.1.10.254爲網關IP。

 

有時Portal中的播放器,播放不出來,如何驗證不是播放器的問題?

驗證方法:

用VLC播放,如果VLC能播出來,播放器播不出來,則說明很可能是播放器問題。

以下描述如何用Wireshark查看播放地址。

步驟如下:

步驟一:

打開Wireshark,輸入過濾語句rtsp。這時應該沒有包。

步驟二:

從portal中點出播放器進行播放。Wireshark顯示rtsp包。

如果沒有顯示rtsp包,則要進行其他判斷,這裏不詳述。

步驟三:

對包執行Follow TCP Stream,下圖中的rtsp://10.14.1.201/DD2F4253_A317_AF1D_16C6_0BB485CEE444.sdp即爲播放地址。

 





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章