Ethereal網路協定

Ethereal網路協定

Ethereal起初由Gerald Combs開發,隨後由一個鬆散的etheral團隊組織進行維護開發.它目前所提供的強大的協定分析功能完全可以媲美商業的網路分析系統,自從1998年發布最早的0.2版本至今,大量的志願者為ethereal添加新的協定解析器,如今ethereal已經支持七百多種協定解析.\\n其是一個開放源碼的網路分析系統,也是是目前最好的開放源碼的網路協定分析器,支持Linux和windows平台。

簡介

Ethereal是一個開放源碼的網路分析系統,也是是目前最好的開放源碼的網路協定分析器,支持Linux和windows平台。

Ethereal

Ethereal起初由Gerald Combs開發,隨後由一個鬆散的Etheral團隊組織進行維護開發。它目前所提供的強大的協定分析功能完全可以媲美商業的網路分析系統,自從1998年發布最早的0.2版本至今,大量的志願者為Ethereal添加新的協定解析器,如今Ethereal已經支持五百多種協定解析。很難想像如此多的人開發的代碼可以很好的融入系統中;並且在系統中加入一個新的協定解析器很簡單,一個不了解系統的結構的新手也可以根據留出的接口進行自己的協定開發。這都歸功於Ehereal良好的設計結構。事實上由於網路上各種協定種類繁多,各種新的協定層出不窮。一個好的協定分析器必需有很好的可擴展性和結構。這樣才能適應網路發展的需要不斷加入新的協定解析器。

使用方法

層次化的數據包協定分析方法取得捕包函式捕回的數據包後就需要進行協定分析和協定還原工作了。由於OSI的7層協定模型,協定數據是從上到下封裝後傳送的。對於協定分析需要從下至上進行。首先對網路層的協定識別後進行組包還原然後脫去網路層協定頭。將裡面的數據交給傳輸層分析,這樣一直進行下去直到套用層
Ip
| \
Tcp udp
| \
HTTP TFTP
由於網路協定種類很多,就Ethereal所識別的500多種協定來說,為了使協定和協定間層次關係明顯。從而對數據流里的各個層次的協定能夠逐層處理。Ethereal系統採用了協定樹的方式。上圖就是一個簡單的協定樹。如果協定A的所有數據都是封裝在協定B里的,那么這個協定A就是協定B是另外一個協定的兒子節點。我們將最低層的無結構數據流作為根接點。那么具有相同父節點的協定成為兄弟節點。那么這些擁有同樣父協定兄弟節點協定如何互相區分了?Ethereal系統採用協定的特徵字來識別。每個協定會註冊自己的特徵字。這些特徵字給自己的子節點協定提供可以互相區分開來的標識。比如tcp 協定的port欄位註冊後。 Tcp.port=21就可以認為是ftp協定,特徵字可以是協定規範定義的任何一個欄位。比如ip協定就可以定義proto欄位為一個特徵字。
在Ethereal中註冊一個協定解析器首先要指出它的父協定是什麼。另外還要指出自己區別於父節點下的兄弟接點協定的特徵。比如ftp協定。在Ethereal中他的父接點是tcp協定,它的特徵就是tcp協定的port欄位為21。
這樣當一個連線埠為21的tcp數據流來到時。首先由tcp協定註冊的解析模組處理,處理完之後通過查找協定樹找到自己協定下面的子協定,判斷應該由那個子協定來執行,找到正確的子協定後,就轉交給ftp註冊的解析模組處理。這樣由根節點開始一層層解析下去。
由於採用了協定樹加特徵字的設計,這個系統在協定解析上由了很強的擴展性,增加一個協定解析器只需要將解析函式掛到協定樹的相應節點上即可。

相關詞條

相關搜尋

熱門詞條

聯絡我們