成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

全面掌握Ethereal網(wǎng)絡(luò)協(xié)議

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
這篇文章中,我們詳細(xì)講解了Ethereal網(wǎng)絡(luò)協(xié)議的內(nèi)容。首先我們了解一下它的概念,然后針對它的一些具體內(nèi)容再做介紹。

在網(wǎng)絡(luò)協(xié)議中,不知道大家是否知道Ethereal網(wǎng)絡(luò)協(xié)議。那么Ethereal網(wǎng)絡(luò)協(xié)議是一個開放源碼的網(wǎng)絡(luò)分析系統(tǒng),也是是目前最好的開放源碼的網(wǎng)絡(luò)協(xié)議分析器,支持Linux和windows平臺。Ethereal起初由Gerald Combs開發(fā),隨后由一個松散的Etheral團隊組織進行維護開發(fā)。它目前所提供的強大的協(xié)議分析功能完全可以媲美商業(yè)的網(wǎng)絡(luò)分析系統(tǒng),自從1998年發(fā)布最早的0.2版本至今,大量的志愿者為Ethereal添加新的協(xié)議解析器,如今Ethereal已經(jīng)支持五百多種協(xié)議解析。很難想象如此多的人開發(fā)的代碼可以很好的融入系統(tǒng)中;并且在系統(tǒng)中加入一個新的協(xié)議解析器很簡單,一個不了解系統(tǒng)的結(jié)構(gòu)的新手也可以根據(jù)留出的接口進行自己的協(xié)議開發(fā)。這都?xì)w功于Ehereal良好的設(shè)計結(jié)構(gòu)。事實上由于網(wǎng)絡(luò)上各種協(xié)議種類繁多,各種新的協(xié)議層出不窮。一個好的協(xié)議分析器必需有很好的可擴展性和結(jié)構(gòu)。這樣才能適應(yīng)網(wǎng)絡(luò)發(fā)展的需要不斷加入新的協(xié)議解析器。

1 Ethereal的捕包平臺

網(wǎng)絡(luò)分析系統(tǒng)首先依賴于一套捕捉網(wǎng)絡(luò)數(shù)據(jù)包的函數(shù)庫。這套函數(shù)庫工作在在網(wǎng)絡(luò)分析系統(tǒng)模塊的最底層。作用是從網(wǎng)卡取得數(shù)據(jù)包或者根據(jù)過濾規(guī)則取出數(shù)據(jù)包的子集,再轉(zhuǎn)交給上層分析模塊。從協(xié)議上說,這套函數(shù)庫將一個數(shù)據(jù)包從鏈路層接收,至少將其還原至傳輸層以上,以供上層分析。

在Linux系統(tǒng)中, 1992年Lawrence Berkeley Lab的Steven McCanne和Van Jacobson提出了包過濾器的一種的實現(xiàn),BPF(BSD Packet Filter)。Libpcap是一個基于BPF的開放源碼的捕包函數(shù)庫。現(xiàn)有的大部分Linux捕包系統(tǒng)都是基于這套函數(shù)庫或者是在它基礎(chǔ)上做一些針對性的改進在window系統(tǒng)中,意大利人Fulvio Risso和Loris Degioanni提出并實現(xiàn)了Winpcap函數(shù)庫,作者稱之為NPF。由于NPF的主要思想就是來源于BPF,它的設(shè)計目標(biāo)就是為windows系統(tǒng)提供一個功能強大的開發(fā)式數(shù)據(jù)包捕獲平臺,希望在Linux系統(tǒng)中的網(wǎng)絡(luò)分析工具經(jīng)過簡單編譯以后也可以移植到windows中,因此這兩種捕包架構(gòu)是非常現(xiàn)實的。就實現(xiàn)來說提供的函數(shù)調(diào)用接口也是一致的。Ethereal網(wǎng)絡(luò)協(xié)議分析系統(tǒng)也需要一個底層的抓包平臺,在Linux中是采用Libpcap函數(shù)庫抓包,在windows系統(tǒng)中采用winpcap函數(shù)庫抓包

2層次化的數(shù)據(jù)包協(xié)議分析方法

取得捕包函數(shù)捕回的數(shù)據(jù)包后就需要進行協(xié)議分析和協(xié)議還原工作了。由于OSI的7層協(xié)議模型,協(xié)議數(shù)據(jù)是從上到下封裝后發(fā)送的。對于協(xié)議分析需要從下至上進行。首先對網(wǎng)絡(luò)層的協(xié)議識別后進行組包還原然后脫去網(wǎng)絡(luò)層協(xié)議頭。將里面的數(shù)據(jù)交給傳輸層分析,這樣一直進行下去直到應(yīng)用層

Ip
| \
Tcp udp
| \
HTTP TFTP

由于網(wǎng)絡(luò)協(xié)議種類很多,就Ethereal所識別的500多種協(xié)議來說,為了使協(xié)議和協(xié)議間層次關(guān)系明顯。從而對數(shù)據(jù)流里的各個層次的協(xié)議能夠逐層處理。Ethereal系統(tǒng)采用了協(xié)議樹的方式。上圖就是一個簡單的協(xié)議樹。如果協(xié)議A的所有數(shù)據(jù)都是封裝在協(xié)議B里的,那么這個協(xié)議A就是協(xié)議B是另外一個協(xié)議的兒子節(jié)點。我們將最低層的無結(jié)構(gòu)數(shù)據(jù)流作為根接點。那么具有相同父節(jié)點的協(xié)議成為兄弟節(jié)點。那么這些擁有同樣父協(xié)議兄弟節(jié)點協(xié)議如何互相區(qū)分了?Ethereal系統(tǒng)采用協(xié)議的特征字來識別。每個協(xié)議會注冊自己的特征字。這些特征字給自己的子節(jié)點協(xié)議提供可以互相區(qū)分開來的標(biāo)識。比如tcp協(xié)議的port字段注冊后。 Tcp.port=21就可以認(rèn)為是ftp協(xié)議, 特征字可以是協(xié)議規(guī)范定義的任何一個字段。比如ip協(xié)議就可以定義proto字段為一個特征字。在Ethereal中注冊一個協(xié)議解析器首先要指出它的父協(xié)議是什么。另外還要指出自己區(qū)別于父節(jié)點下的兄弟接點協(xié)議的特征。比如ftp協(xié)議。在Ethereal網(wǎng)絡(luò)協(xié)議中他的父接點是tcp協(xié)議,它的特征就是tcp協(xié)議的port字段為21。

這樣當(dāng)一個端口為21的tcp數(shù)據(jù)流來到時。首先由tcp協(xié)議注冊的解析模塊處理,處理完之后通過查找協(xié)議樹找到自己協(xié)議下面的子協(xié)議,判斷應(yīng)該由那個子協(xié)議來執(zhí)行,找到正確的子協(xié)議后,就轉(zhuǎn)交給ftp注冊的解析模塊處理。這樣由根節(jié)點開始一層層解析下去。由于采用了協(xié)議樹加特征字的設(shè)計,這個系統(tǒng)在協(xié)議解析上由了很強的擴展性,增加一個協(xié)議解析器只需要將解析函數(shù)掛到協(xié)議樹的相應(yīng)節(jié)點上即可。

3 基于插件技術(shù)的協(xié)議分析器

所謂插件技術(shù),就是在程序的設(shè)計開發(fā)過程中,把整個應(yīng)用程序分成宿主程序和插件兩個部分,宿主程序與插件能夠相互通信,并且,在宿主程序不變的情況下,可以通過增減插件或修改插件來調(diào)整應(yīng)用程序的功能。運用插件技術(shù)可以開發(fā)出伸縮性良好、便于維護的應(yīng)用程序。它著名的應(yīng)用實例有:媒體播放器winamp、微軟的網(wǎng)絡(luò)瀏覽器ie等。

由于現(xiàn)在網(wǎng)絡(luò)協(xié)議種類繁多,為了可以隨時增加新的協(xié)議分析器,一般的協(xié)議分析器都采用插件技術(shù),這樣如果需要對一個新的協(xié)議分析只需要開發(fā)編寫這個協(xié)議分析器并調(diào)用注冊函數(shù)在系統(tǒng)注冊就可以使用了。通過增加插件使程序有很強的可擴展性,各個功能模塊內(nèi)聚。

在協(xié)議分析器中新增加一個協(xié)議插件一般需要插件安裝或者注冊,插件初始化,插件處理3個步驟,下面以Ethereal為例進行分析如何利用插件技術(shù)新增加一個協(xié)議分析模塊。

Ethereal網(wǎng)絡(luò)協(xié)議由于采用插件技術(shù),一個新加入開發(fā)的程序員開發(fā)一種新的協(xié)議分析模塊的時候不需要了解所有的代碼,他只需要寫好這個協(xié)議模塊的函數(shù)后,寫一個格式為proto_reg_handoff_XXX的函數(shù),在函數(shù)內(nèi)調(diào)用注冊函數(shù)告訴系統(tǒng)在什么時候需要調(diào)用這個協(xié)議模塊。比如你事先寫好了一個名為dissect_myprot的協(xié)議解析模塊,它是用來解析tcp協(xié)議端口為250的數(shù)據(jù)。可以利用這些語句來將這個解析器注冊到系統(tǒng)中

  1. proto_reg_handoff_myprot(void){dissector_handle_t myprot_handle;
  2. myprot_handle = create_dissector_handle(dissect_myprot,proto_myprot);
  3. dissector_add("tcp.port", 250, myprot_handle);}    

這段代碼告訴系統(tǒng)當(dāng)tcp協(xié)議數(shù)據(jù)流端口為250的時候要調(diào)用dissect_myprot這個函數(shù)模塊。在Ethereal中有一個角本專門來發(fā)現(xiàn)開發(fā)者定義的類式proto_reg_handoff_xxx這樣的注冊函數(shù)名,然后自動生成調(diào)用這些注冊函數(shù)的代碼。這樣開發(fā)者不需要知道自己的注冊函數(shù)如何被調(diào)用的。這樣一個新的協(xié)議分析模塊就加入到系統(tǒng)中了。

由于采用了插件方式,Ethereal良好的結(jié)構(gòu)設(shè)計讓開發(fā)者只需要關(guān)系自己開發(fā)的協(xié)議模塊,不需要關(guān)心整個系統(tǒng)結(jié)構(gòu),需要將模塊整合進系統(tǒng)只需要寫一個注冊函數(shù)即可,連初始化時調(diào)用這個注冊函數(shù)都由腳本自動完成了。正是因為有很好的體系結(jié)構(gòu),這個系統(tǒng)才能夠開發(fā)出如此多的協(xié)議解析器

盡管Ethereal是目前最好的開放源碼的網(wǎng)絡(luò)分析系統(tǒng),但Ethereal仍然有一些可以改進的地方,一個優(yōu)秀的網(wǎng)絡(luò)分析器,盡可能的正確分析出數(shù)據(jù)協(xié)議和高效的處理數(shù)據(jù)是兩個重要的指標(biāo)。在協(xié)議識別方面Ethereal大多采用端口識別,有少量協(xié)議采用內(nèi)容識別。這就讓一些非標(biāo)準(zhǔn)端口的協(xié)議數(shù)據(jù)沒有正確解析出來。比如ftp協(xié)議如果不是21端口的話,Ethereal網(wǎng)絡(luò)協(xié)議就無法識別出來,只能作為tcp數(shù)據(jù)處理。另外對于內(nèi)容識別式。Ethereal是將所以內(nèi)容識別的函數(shù)組成一張入口表。每次協(xié)議數(shù)據(jù)需要內(nèi)容識別時,按字母順序逐個調(diào)用表里的每個識別函數(shù)。比如對于識別yahoo massanger協(xié)議。主要是看數(shù)據(jù)前幾個字節(jié)是不是’ymsg’.由于協(xié)議名為y開頭。所以當(dāng)識別出協(xié)議時已經(jīng)把所有內(nèi)容識別函數(shù)調(diào)用了一遍。這些都是由于Ethereal沒有實現(xiàn)tcp協(xié)議棧,無法做到流級別的識別。導(dǎo)致在協(xié)議識別方面有點缺陷。
 

責(zé)任編輯:佟健 來源: hi.baidu.com
相關(guān)推薦

2010-09-17 14:49:18

Ethereal網(wǎng)絡(luò)協(xié)

2010-09-09 15:30:45

ethereal網(wǎng)絡(luò)協(xié)議分析軟件

2009-09-17 17:14:54

EtherealLinuxwindows

2010-07-01 15:48:37

VoIP網(wǎng)絡(luò)協(xié)議

2010-09-10 12:13:07

網(wǎng)絡(luò)協(xié)議學(xué)習(xí)

2018-11-30 14:47:13

2010-07-06 16:13:13

HART協(xié)議

2010-06-24 15:35:04

IPx協(xié)議

2023-06-28 11:49:56

Linux命令

2010-07-07 17:27:00

互聯(lián)網(wǎng)協(xié)議

2010-06-10 12:00:53

IPv6網(wǎng)絡(luò)協(xié)議

2024-08-13 08:30:13

2010-06-21 15:33:47

路由信息協(xié)議

2010-07-01 16:55:03

UDP協(xié)議

2015-05-27 23:26:29

福祿克網(wǎng)絡(luò)/網(wǎng)絡(luò)測試

2010-06-09 12:07:59

路由選擇協(xié)議

2010-07-01 16:52:19

CAN總線協(xié)議

2009-11-11 17:02:44

MPLS路由協(xié)議

2010-06-11 14:51:34

IS-IS路由協(xié)議

2022-04-14 10:10:59

Nginx開源Linux
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美久久久久久 | 国产成人av在线 | 久久精品97 | 婷婷开心激情综合五月天 | 亚洲a网 | 国产高清精品在线 | 精品一二区 | 日韩毛片网 | 亚洲一区二区久久 | 国产精品亚洲精品日韩已方 | 国产91亚洲精品 | 欧美日韩亚洲系列 | 五月天天丁香婷婷在线中 | 米奇成人网 | 亚洲成人在线网 | 久久青草av| 日日夜夜天天综合 | 三级视频在线观看 | 日韩免费av | 成人久久久 | 二区精品 | 亚洲一区二区三区在线播放 | 精品国产一二三区 | 亚洲国产一区在线 | 亚洲在线一区 | 国产精品久久久久久久一区探花 | 天天色天天色 | 国产精品久久久久久吹潮 | 久久精品一 | 国产色网站 | 国产色网 | 999热视频 | 91精品国产综合久久香蕉922 | 日韩1区| 成人久久18免费网站麻豆 | a在线免费观看视频 | 巨大黑人极品videos精品 | 在线观看av网站永久 | 暴草美女 | 天天综合成人网 | 天天干狠狠操 |