Ethereal是一個開放源碼的Linux網絡流量分析系統,也是目前最好的開放源碼的網絡協議分析器,支持Linux和windows平台。Ethereal起初由GeraldCombs開發,隨后由一個鬆散的etheral團隊組織進行維護開發。它目前所提供的強大的協議分析功能完全可以媲美商業的Linux網絡流量分析系統,自從1998年發布最早的0.2版本至今,大量的志願者為ethereal添加新的協議解析器,如今ethereal已經支持五百多種協議解析。
另外,網絡分析系統首先依賴於一套捕捉網絡數據包的函數庫。這套函數庫工作在網絡分析系統模塊的最底層。作用是從網卡取得數據包或者根據過濾規則取出數據包的子集,再轉交給上層分析模塊。從協議上說,這套函數庫將一個數據包從鏈路層接收,至少將其還原至傳輸層以上,以供上層分析。6月8號,Ethereal的作者GeraldCoombs宣布了離開NIS的消息,因而Ethereal現改名為Wireshark。
Linux網絡流量分析系統首先依賴於一套捕捉網絡數據包的函數庫。這套函數庫工作在在網絡分析系統模塊的最底層。作用是從網卡取得數據包或者根據過濾規則取出數據包的子集,再轉交給上層分析模塊。從協議上說,這套函數庫將一個數據包從鏈路層接收,至少將其還原至傳輸層以上,以供上層分析。
在Linux系統中,1992年LawrenceBerkeleyLab的StevenMcCanne和VanJacobson提出了包過濾器的一種的實現,BPF(BSDPacketFilter)。Libpcap是一個基於BPF的開放源碼的捕包函數庫。現有的大部分Linux捕包系統都是基於這套函數庫或者是在它基礎上做一些針對性的改進。在window系統中,意大利人FulvioRisso和LorisDegioanni提出並實現了Winpcap函數庫,作者稱之為NPF。由於NPF的主要思想就是來源於BPF,它的設計目標就是為windows系統提供一個功能強大的開發式數據包捕獲平台,希望在Linux系統中的網絡分析工具經過簡單編譯以后也可以移植到windows中,因此這兩種捕包架構是非常現實的。就實現來說提供的函數調用接口也是一致的。Ethereal網絡分析系統也需要一個底層的抓包平台,在Linux中是採用Libpcap函數庫抓包,在windows系統中採用winpcap函數庫抓包。
取得捕包函數捕回的數據包后就需要進行協議分析和協議還原工作了。由於OSI的7層協議模型,協議數據是從上到下封裝后發送的。對於協議分析需要從下至上進行。首先對網絡層的協議識別后進行組包還原然后脫去網絡層協議頭。將裡面的數據交給傳輸層分析,這樣一直進行下去直到應用層。由於網絡協議種類很多,就Ethereal所識別的500多種協議來說,為了使協議和協議間層次關系明顯。從而對數據流裡的各個層次的協議能夠逐層處理。Ethereal系統採用了協議樹的方式。
如果協議A的所有數據都是封裝在協議B裡的,那麼這個協議A就是協議B是另外一個協議的兒子節點(比如圖中的TCP和UDP協議就是IP協議的兒子節點)。我們將最低層的無結構數據流作為根接點。那麼具有相同父節點的協議成為兄弟節點。那麼這些擁有同樣父協議兄弟節點協議如何互相區分了?Ethereal系統採用協議的特征字來識別。每個協議會注冊自己的特征字。這些特征字給自己的子節點協議提供可以互相區分開來的標識。比如tcp協議的port字段注冊后。Tcp.port=21就可以認為是ftp協議,特征字可以是協議規范定義的任何一個字段。比如ip協議就可以定義proto字段為一個特征字。
在Ethereal中注冊一個協議解析器首先要指出它的父協議是什麼。另外還要指出自己區別於父節點下的兄弟接點協議的特征。比如ftp協議。在Ethereal中他的父接點是tcp協議,它的特征就是tcp協議的port字段為21。這樣當一個端口為21的tcp數據流來到時。首先由tcp協議注冊的解析模塊處理,處理完之后通過查找協議樹找到自己協議下面的子協議,判斷應該由那個子協議來執行,找到正確的子協議后,就轉交給ftp注冊的解析模塊處理。這樣由根節點開始一層層解析下去。
由於採用了協議樹加特征字的設計,這個系統在協議解析上由了很強的擴展性,增加一個協議解析器隻需要將解析函數挂到協議樹的相應節點上即可。
所謂插件技術,就是在程序的設計開發過程中,把整個應用程序分成宿主程序和插件兩個部分,宿主程序與插件能夠相互通信,並且,在宿主程序不變的情況下,可以通過增減插件或修改插件來調整應用程序的功能。運用插件技術可以開發出伸縮性良好、便於維護的應用程序。它著名的應用實例有:媒體播放器winamp、微軟的網絡瀏覽器IE等。
由於現在網絡協議種類繁多,為了可以隨時增加新的協議分析器,一般的協議分析器都採用插件技術,這樣如果需要對一個新的協議分析隻需要開發編寫這個協議分析器並調用注冊函數在系統注冊就可以使用了。通過增加插件使程序有很強的可擴展性,各個功能模塊內聚。
該軟件有極其方便和友好的圖形用戶界面,並且能夠使得用戶通過圖形界面的配置和選擇,針對多塊網卡、多個協議進行顯示,效果非常好。目前最新版本為:Wireshark1.0.3。安裝該軟件請按照如下步驟進行:
另外,同Tcpdump一樣,在編譯Ethereal之前應先確定已經安裝pcap庫(libpcap),這是編譯Wireshark時所必需的。如果該庫已經安裝,就可以執行下面的命令來編譯並安裝Wireshark:

