如果你是一位網路應用開發人員,你在開發過程中肯定會使用到網路通訊協定分析器(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***… 了
這樣我們就可以方便的將我們需要檢測的某個特別的網路指令過濾出來。
比如我在幫某硬體編寫上位機程式的時候,指令總是以固定格式發送的,很容易我們就能過濾掉煩人的無用的資訊,大大的提升了工作效率。