很多時候,開發或者產品不一定能給出很規範的接口或者相關文檔,搞不好有些都只是通過口頭傳遞信息,此時,我們就需要掌握獨立抓包分析請求的方法,避免被動的等待,像我工作中就遇到過,請求時基於soap協議的,是一個硬件網關設備和平臺的交換,一個事件就包含多次的交互,我就是利用抓包進行分析和模擬請求的。
1、核心思路
服務基本上都是部署在Linux上,在Linux下,當我們需要抓取網絡數據包分析時,通常是使用tcpdump抓取網絡raw數據包存到一個文件,然後下載到本地使用wireshark界面網絡分析工具進行網絡包分析。
2、tcpdump使用
tcpdump是一款非常強大的網絡抓包工具,可以在網絡問題的分析中提供很多有用的信息,適用場景豐富。tcpdump的使用簡單易上手,它的命令格式如下:
tcpdump [-adeflnNOpqStvx][-c<數據包數目>][-dd][-ddd][-F<表達文件>]
[-i<網絡界面>][-r<數據包文件>][-s<數據包大小>][-tt][-T<數據包類型>]
[-vv][-w<數據包文件>][輸出數據欄位]
其他常用參數的說明:
-c:指定要抓取的包數量。
-i:interface:指定tcpdump需要監聽的接口。
-n:對地址以數字方式顯式,否則顯式爲主機名,也就是說-n選項不做主機名解析。
-nn:除了-n的作用外,還把端口顯示爲數值,否則顯示端口服務名。
-s: <數據包大小> 設置每個數據包的大小。
-N:不打印出host的域名部分。
-P:指定要抓取的包是流入還是流出的包。可以給定的值爲"in"、"out"和"inout",
默認爲"inout"。
-s len:設置tcpdump的數據包抓取長度爲len,如果不設置默認將會是65535字節。
對於要抓取的數據包較大時,長度設置不夠可能會產生包截斷。
-e:輸出的每行中都將包括數據鏈路層頭部信息,例如源MAC和目標MAC。
-q:快速打印輸出。即打印很少的協議相關信息,從而輸出行都比較簡短。
-X:輸出包的頭部數據,會以16進制和ASCII兩種方式同時輸出。
-XX:輸出包的頭部數據,會以16進制和ASCII兩種方式同時輸出,更詳細。
-v:當分析和打印的時候,產生詳細的輸出。
-vv:產生比-v更詳細的輸出。
-vvv:產生比-vv更詳細的輸出。
-w<數據包文件> 把數據包數據寫入指定的文件。
常用關鍵字說明:
host(缺省類型): 指明一臺主機
net: 指明一個網絡地址
port: 指明端口號
src: 指定網絡源地址
dst: 指定目標網絡地址;
3、常見例子
下面舉幾個常見對例子,供大家參考。
1、對網卡eth0進行抓包,並且只抓所有進入和離開網絡地址59.111.243.17的包。
tcpdump -i eth0 net 59.111.243.17
2、對網卡eth0進行抓包,並且只抓所有進入和離開網絡地址59.111.243.17的包,且源端口號爲80。
tcpdump –i eth0 net 59.111.243.17 and srcport 80
3、對網卡eth0進行抓包,並且只抓所有進入和離開網絡地址59.111.243.17的包,抓包個數指定爲10000個,並寫入temp.pcap。
tcpdump -i eth0 net 59.111.243.17 -c 10000 -w temp.pcap
4、Sql語句是通過網絡以文本方式傳輸到mysql服務器端的。因此我們完全也可以通過tcpdump這個工具把所有的sql語句捕獲到。
tcpdump -i eth0 -A -s 3000 port 3306 -w sql.log
5、想要截獲所有210.27.48.1的主機收到的和發出的所有的數據包,使用命令。
tcpdump host 210.27.48.1
6、想要截獲主機 210.27.48.1 和主機210.27.48.2 或210.27.48.3的通信,使用命令。
tcpdump host 210.27.48.1 and (210.27.48.2 or 210.27.48.3)
7、如果想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令。
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
8、如果想要獲取主機210.27.48.1接收或發出的telnet包,使用命令。
tcpdump tcp port 23 host 210.27.48.1
9、後臺抓包, 控制檯退出也不會影響,使用命令。
nohup tcpdump -i eth1 port 110 -w /tmp/xxx.cap &
最後,只需要把導出來對cap包,放到Wireshark中分析即可,本文不做講解。
更多其他測試內容都在公衆號大話性能可以參考鏈接文末更多測試好文章