如果你是一位網絡應用開發者,你在開發過程中肯定會使用到網絡協議分析器(network protocol analyzer), 我們也可以稱之為“嗅探器”。eEye 公司有一款很不錯的網絡協議分析器產品 “Iris”, 我一直使用它的 4.07 版本,由于其功能完備,一直沒有太多的關注其他同類軟件,但此版本不能工作在 Windows Vista 上,也不能對無線網絡適配器進行分析,而我恰好要在 Vista 上做很多開發工作,又經常使用無線網絡連接的筆記本電腦,Iris 4.07 無法滿足我的工作需求了。
幸運的是,Wireshark(線鯊)一款基于 winpcap/tcpdump 的開源網絡協議分析軟件對vista和無線網絡的兼容都很好。他的前身就是Ethereal。他具備了和 Iris 同樣強大的 Decode 能力,甚至線性截包的能力超過 iris。要用好分析器很重要的一點就是設置好 Filter(過濾器),在這一點上 Wireshark 的過濾表達式更顯強大。
我們來看個幾個簡單的過濾器例子:
“ip.dst==211.244.254.1” (所有目標地址是211.244.254.1的ip包)
“tcp.port==80″ (所有tcp端口是80的包)
你可以把上述表達式用 and 連接起來
“(ip.dst==211.244.254.1) and (tcp.port==80)”
或者再稍加變換
“(ip.dst==211.244.254.1) and !(tcp.port==80)” (所有目的ip是211.244.254.1非 80 端口)
使用表達式設置過濾器比之在界面上選擇/填空更加快捷靈活,如果你不熟悉這些表達式,Wireshark 也提供了設置界面,并且最終生成表達式,這樣也方便了使用者學習。
Wireshark 還提供了更高級的表達式特性,請看如下表達式
(tcp.port==80) and (ip.dst==211.244.254.1) and (http[5:2]==7075)
對象 http 就是 wireshark 解碼以后的 http 數據部分 http[5:2] 就是指從 下標 5 開始的兩個字節,請思考一下這樣的http 請求
GET /pu*****
怎么樣,如果你在瀏覽器中訪問 http://www.google.com/pu 或者 http://www.google.com/put 或者 http://www.google.com/pub 都會被記錄下來,匹配 *****pu***… 了
這樣我們就可以方便的將我們需要檢測的某個特別的網絡指令過濾出來。
比如我在幫某硬件編寫上位機程序的時候,指令總是以固定格式發送的,很容易我們就能過濾掉煩人的無用的信息,大大的提升了工作效率。
轉自cp62的專欄,http://blog.csdn.net/cp62/archive/2008/12/25/3603372.aspx