Tips
如果說對于網(wǎng)絡(luò)編程,有什么工具是必會的,我覺得抓包肯定是其中之一了。作為GB/T 28181調(diào)試過程中最重要的手段,我覺得如果你真對他有興趣,或者系統(tǒng)遇到問題可以最快的得到解決,那么抓包你就一定要學會了。
一、抓包工具的選擇
1. Wireshark
在具備圖形界面的系統(tǒng)上,比如windows,linux發(fā)行版ubuntu,opensuse等,我一般直接使用Wireshark直接進行抓包,也方便進行內(nèi)容的查看。
2. Tcpdump
在使用命令行的系統(tǒng),比如linux服務(wù)器,我一般使用Tcpdump進行抓包,無需額外安裝,系統(tǒng)一般自帶,抓包的到的文件,可以使用Wireshark打開,在圖形界面下方便查看內(nèi)容。
3. 工具安裝
Wireshark的安裝很簡單,根據(jù)提示一步步點擊就好了,在linux需要解決權(quán)限的問題,如果和我一樣使用圖形界面的linux發(fā)行版的話,可以參看如下步驟; windows的小伙伴直接略過即可
# 1. 添加wireshark用戶組
sudo groupadd wireshark
# 2. 將dumpcap更改為wireshark用戶組
sudo chgrp wireshark /usr/bin/dumpcap
# 3. 讓wireshark用戶組有root權(quán)限使用dumpcap
sudo chmod 4755 /usr/bin/dumpcap
# 4. 將需要使用的用戶名加入wireshark用戶組
sudo gpasswd -a $USER wireshark
tcpdump一般linux都是自帶,無需安裝,可以這樣驗證;顯示版本信息即是已安裝
tcpdump --version
二、開始抓包
1.使用Wireshark
在28181中一般只關(guān)注sip包和rtp包,所以我一般是直接過濾sip和rtp,可以輸入框輸入 sip or rtp
這樣即可,如果設(shè)備來源比較多還可以加上ip和端口號的過濾(sip or rtp )and udp.port==5061
詳細的過濾規(guī)則可以自行百度,我可以提供一些常用的給大家參考
- 只過濾SIP:
sip
- 只獲取rtp數(shù)據(jù):
rtp
- 默認方式:
sip or rtp
- 過濾IP:
sip and ip.addr==192.168.x.x
*過濾端口:
sip and udp.port==5061
輸入命令開啟抓包后,此時可以進行操作,比如點播,錄像回放等,操作完成回到Wireshark點擊紅色的停止即可,需要保存文件可以點擊文件->導(dǎo)出特定分組
導(dǎo)出過濾后的數(shù)據(jù),也可以直接文件->另存為
保存未過濾的數(shù)據(jù)。
2.使用tcpdump
對于服務(wù)器抓包,為了得到足夠完整的數(shù)據(jù),我一般會要求直接抓取網(wǎng)卡數(shù)據(jù)而不過濾,如下: 抓取網(wǎng)卡首先需要獲取網(wǎng)卡名,在linux我一般使用ifconfig
或者ip addr
獲取網(wǎng)卡信息,如下所示:

sudo tcpdump -i eth0 -w sip.pcap

命令行會停留在這個位置,此時可以進行操作,比如點播,錄像回放等,操作完成回到命令行使用Ctrl+C
結(jié)束命令行,在當前目錄下得到sip.pcap,將這個文件下載到圖形界面操作系統(tǒng)里,即可使用Wireshark查看了 更多的操作可以參考:
高級過濾>>