999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于WinCE的網(wǎng)絡(luò)數(shù)據(jù)包的捕獲和解析

2010-05-09 06:00:14馬俊功高曉華
關(guān)鍵詞:分析系統(tǒng)

馬俊功 高曉華

北京航空航天大學(xué)自動(dòng)化科學(xué)與電氣工程學(xué)院 北京 100191

0 引言

隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)已成為生活中的必備工具。網(wǎng)絡(luò)需求縱深延展,網(wǎng)絡(luò)規(guī)模持續(xù)擴(kuò)大,使得保持網(wǎng)絡(luò)高性能運(yùn)轉(zhuǎn)變得越來(lái)越難。網(wǎng)絡(luò)癱瘓成為用戶們不得不面對(duì)的問(wèn)題。這就需要一種測(cè)試工具捕獲與解析網(wǎng)絡(luò)數(shù)據(jù)包,對(duì)網(wǎng)絡(luò)的運(yùn)行狀況進(jìn)行監(jiān)測(cè),快速定位和解決故障,從而保證網(wǎng)絡(luò)高效有序的運(yùn)行。

1 軟件結(jié)構(gòu)整體設(shè)計(jì)

1.1 操作系統(tǒng)的選用與定制

系統(tǒng)選用了Windows CE面向移動(dòng)計(jì)算和嵌入式應(yīng)用的32位高性能操作系統(tǒng)。它具有一個(gè)簡(jiǎn)潔、高效、完全搶先式的多任務(wù)內(nèi)核,支持強(qiáng)大的圖形GUI,具備嵌入式系統(tǒng)的模塊化、可定制、完備性、實(shí)時(shí)性的優(yōu)點(diǎn)。與其他常見的嵌入式操作系統(tǒng)相比,WinCE開發(fā)相對(duì)較容易,開發(fā)周期短,內(nèi)核完善,因此本系統(tǒng)的操作系統(tǒng)選用的是WinCE5.0,它采用模塊化設(shè)計(jì),允許用戶針對(duì)硬件設(shè)備進(jìn)行定制。Platform Buider(PB)是微軟公司提供的內(nèi)核定制工具,利用PB并根據(jù)硬件平臺(tái)的配置對(duì)WinCE操作系統(tǒng)進(jìn)行定制,同時(shí)使用PB導(dǎo)出在該硬件平臺(tái)上開發(fā)應(yīng)用程序所需要的SDK,供嵌入式應(yīng)用程序開發(fā)使用。

1.2 Winpcap移植的研究

Winpcap是基于Win32平臺(tái)的開放源代碼網(wǎng)絡(luò)數(shù)據(jù)包截獲和分析的系統(tǒng)。該系統(tǒng)性能穩(wěn)定而且效率極高,利用Winpcap提供的豐富且功能強(qiáng)大的網(wǎng)絡(luò)數(shù)據(jù)包處理函數(shù),將大大方便系統(tǒng)的開發(fā),節(jié)省系統(tǒng)開發(fā)的時(shí)間和人力。

Winpcap包括三部分:虛擬設(shè)備驅(qū)動(dòng)文件NPF,動(dòng)態(tài)函數(shù)庫(kù)Packet.dll、Winpcap.dll。NPF實(shí)現(xiàn)了抓包系統(tǒng)繞過(guò)操作系統(tǒng)的協(xié)議棧來(lái)訪問(wèn)在網(wǎng)絡(luò)上傳輸?shù)脑紨?shù)據(jù)包,運(yùn)行在操作系統(tǒng)核心內(nèi)部,直接與網(wǎng)絡(luò)接口驅(qū)動(dòng)交互。packet.dll為Win32平臺(tái)提供了一個(gè)公共的接口。它提供了一個(gè)底層API,這些API可以直接用來(lái)訪問(wèn)驅(qū)動(dòng)的函數(shù);模塊Wpcap.dll是不依賴于操作系統(tǒng)的。它提供了更加高層、抽象的函數(shù)。Wpcap.dll的函數(shù)調(diào)用會(huì)自動(dòng)調(diào)用Pactet.dll中的低級(jí)函數(shù),并且可能被轉(zhuǎn)換成若干個(gè)NPF系統(tǒng)調(diào)用。PacketCE3.0是目前基于WinCE的Winpcap的最高版本,但它只適用于WinCE3.0以下的版本,不能直接運(yùn)行在操作系統(tǒng)WinCE5.0上,因此需要修改源代碼。

1.3 系統(tǒng)軟件結(jié)構(gòu)的設(shè)計(jì)

系統(tǒng)的軟件功能結(jié)構(gòu)如圖1所示,主要采用了功能模塊化的設(shè)計(jì)方法,功能模塊之間相互獨(dú)立,方便了功能的修改及擴(kuò)展,模塊之間依靠消息機(jī)制來(lái)完成通信。接口模塊設(shè)計(jì)的目的是將各個(gè)功能模塊和界面顯示模塊分離,當(dāng)系統(tǒng)移植后或界面更改后,只要修改接口模塊中的變量及函數(shù)即可,方便了整個(gè)系統(tǒng)的移植、維護(hù)及升級(jí)。

各個(gè)功能模塊的作用如下:

(1)自動(dòng)測(cè)試模塊

測(cè)試電纜的連通性,長(zhǎng)度、線序和網(wǎng)絡(luò)接口的可用性等。該模塊實(shí)現(xiàn)了對(duì)物理硬件設(shè)備的監(jiān)測(cè),幫助用戶診斷網(wǎng)絡(luò)故障。

(2)連通性測(cè)試模塊

測(cè)試網(wǎng)絡(luò)連通性及路由信息,該模塊實(shí)現(xiàn)了判斷網(wǎng)絡(luò)以及相關(guān)設(shè)備是否正常工作。當(dāng)網(wǎng)絡(luò)出現(xiàn)故障時(shí),測(cè)定從源主機(jī)到目的主機(jī)的路徑信息,確定故障出現(xiàn)的位置。

(3)過(guò)濾器模塊

設(shè)置過(guò)濾條件,實(shí)現(xiàn)只捕獲或查看符合設(shè)定條件的數(shù)據(jù)包,不僅節(jié)省了系統(tǒng)的內(nèi)存。而且使問(wèn)題的分析更具有針對(duì)性。

(4)數(shù)據(jù)包捕獲模塊

實(shí)現(xiàn)數(shù)據(jù)包的捕獲,是協(xié)議解析和流量分析功能實(shí)現(xiàn)的基礎(chǔ),主要包括網(wǎng)卡信息的讀取、打開,開始抓包功能及停止抓包功能。

(5)數(shù)據(jù)包協(xié)議解析模塊

實(shí)現(xiàn)數(shù)據(jù)包協(xié)議解析,并以一定的格式將解碼后的信息顯示出來(lái)。主要以三種形式顯示:概要信息顯示:顯示一個(gè)幀所包含的最高級(jí)協(xié)議的概略性介紹,以及捕獲時(shí)間、來(lái)源與目的地址;詳細(xì)信息顯示:提供幀中各層次的詳細(xì)說(shuō)明;原信息內(nèi)容顯示:以十六進(jìn)制形式顯示捕獲的原始數(shù)據(jù)。

圖1 系統(tǒng)功能模塊圖

(6)數(shù)據(jù)包流量分析統(tǒng)計(jì)模塊

實(shí)現(xiàn)整體流量的分析統(tǒng)計(jì),本測(cè)試儀主要從不同類別協(xié)議的報(bào)文個(gè)數(shù)、不同主機(jī)的數(shù)據(jù)流量進(jìn)行統(tǒng)計(jì)。通過(guò)流量分析的結(jié)果,用戶可以得知多少的通信量屬于哪個(gè)協(xié)議,占主要通信協(xié)議的主機(jī)是哪一臺(tái),大多數(shù)通信目的地是哪臺(tái)主機(jī)等,從而了解了整個(gè)網(wǎng)絡(luò)的運(yùn)行情況。

(7)系統(tǒng)自身設(shè)置模塊

實(shí)現(xiàn)系統(tǒng)自身參數(shù)的設(shè)置,比如IP地址的設(shè)置、時(shí)間日期設(shè)置、背景亮度設(shè)置等。

2 系統(tǒng)功能流程的設(shè)計(jì)

系統(tǒng)功能流程圖如圖2所示,開啟系統(tǒng)后,由界面創(chuàng)建一個(gè)線程,該線程實(shí)現(xiàn)初始化及系統(tǒng)消息調(diào)用機(jī)制。該系統(tǒng)的消息機(jī)制的設(shè)計(jì)參考了Windows系統(tǒng)消息調(diào)用機(jī)制,用來(lái)實(shí)現(xiàn)模塊間的通信,完成系統(tǒng)的功能調(diào)用。

在該線程中,首先各個(gè)任務(wù)模塊依次完成初始化,在初始化完成后,由抓包模塊完成網(wǎng)卡信息的獲取,并將讀取結(jié)果反饋給接口模塊,進(jìn)而反饋給界面模塊,此時(shí)系統(tǒng)已讀取到了網(wǎng)卡的基本信息,最后彈出主界面。

圖2 系統(tǒng)整體功能流程圖

由抓包模塊完成打開網(wǎng)卡接口。然后可以設(shè)置過(guò)濾器,由界面模塊將過(guò)濾條件發(fā)送給接口模塊,再由接口模塊發(fā)向包分析模塊,在包分析模塊中做相應(yīng)的處理后,再將消息發(fā)向抓包模塊,最后由抓包模塊完成設(shè)置過(guò)濾器的功能。

點(diǎn)擊界面中的抓包按鈕,主界面首先將消息發(fā)送到接口模塊,然后由接口模塊發(fā)送到包分析模塊,最后由包分析模塊將消息傳遞給抓包模塊,那么抓包模塊開始抓包,并存儲(chǔ)包信息,此時(shí)包協(xié)議解析模塊便可以向抓包模塊請(qǐng)求包信息,進(jìn)而進(jìn)行分析、解析、統(tǒng)計(jì)等。抓包或包分析、統(tǒng)計(jì)結(jié)果依次發(fā)送到接口模塊,然后由接口模塊將此結(jié)果發(fā)送到界面。

上述便是整個(gè)系統(tǒng)基本功能的運(yùn)行流程。

3 系統(tǒng)的關(guān)鍵技術(shù)及實(shí)現(xiàn)方案

3.1 PacketCE3.0向Windows CE5.0的移植

PacketCE源碼主要包含的C文件有Packet.c 、packet32.c、filter.c、read.c openclose.c,其中從OpenClose.c、Packet.c包含的函數(shù)可以判斷,PacketCE是一個(gè)流驅(qū)動(dòng)。分析PacketCE源碼可知,在動(dòng)態(tài)函數(shù)庫(kù)被加載后,第一個(gè)調(diào)用的函數(shù)是DWORD PKT_Init(DWORD dwContext),它用來(lái)完成初始化硬件的工作,不一樣的硬件平臺(tái),該函數(shù)的實(shí)現(xiàn)是不同的。分析它的內(nèi)部實(shí)現(xiàn),首先定義了NDIS_PROTOCOL_CHARACTERISTICS類型的結(jié)構(gòu)體變量ProtocolChar,然后給該變量賦值,最后向系統(tǒng)注冊(cè)該協(xié)議結(jié)構(gòu)體。經(jīng)分析知該結(jié)構(gòu)體的類型為3.0,而本系統(tǒng)該結(jié)構(gòu)體的類型是5.0,因此,不能成功注冊(cè)。參考本系統(tǒng)5.0的結(jié)構(gòu),找出增加的變量,編寫相應(yīng)的函數(shù),給這些量賦值,并修改版本號(hào)。重新編譯靜態(tài)庫(kù)Packet.lib,wpcap.lib,最后將該驅(qū)動(dòng)加載到WinCE操作系統(tǒng)上即可,在配置好環(huán)境后,應(yīng)用程序可直接調(diào)用Winpcap的庫(kù)函數(shù)。

3.2 資源共享問(wèn)題

在該系統(tǒng)中存在主線程、消息調(diào)用線程、抓包線程等多個(gè)線程,因此系統(tǒng)開發(fā)中多線程的互斥是一個(gè)關(guān)鍵的問(wèn)題,某一時(shí)刻,可能主界面和其他功能模塊同時(shí)向消息列表發(fā)送消息,那么系統(tǒng)會(huì)同時(shí)將這兩個(gè)消息插入到同一個(gè)消息列鏈表中,此時(shí)便引起了資源的訪問(wèn)沖突問(wèn)題,這里采用的解決方案是在每一個(gè)鏈表操作函數(shù)中引入了關(guān)鍵區(qū)域的建立和釋放,這樣防止了共享資源的訪問(wèn)沖突問(wèn)題。

3.3 網(wǎng)絡(luò)數(shù)據(jù)包的捕獲

通過(guò)pacp_findalldevs()函數(shù)來(lái)實(shí)現(xiàn)網(wǎng)卡信息的獲取,它返回一個(gè)pcap_if結(jié)構(gòu)的鏈表,每個(gè)pcap_if結(jié)構(gòu)含有一個(gè)網(wǎng)卡適配器的信息。創(chuàng)建過(guò)濾規(guī)則,系統(tǒng)將其編譯成BPF代碼,然后存在一個(gè)名為bpf_program的結(jié)構(gòu)中,pcap_compile()將一個(gè)高層的布爾過(guò)濾表達(dá)式編譯成一個(gè)能夠被過(guò)濾引擎所解釋的低層的字節(jié)碼,最后利用pcap_setfilter()來(lái)加載,所有的符合要求的數(shù)據(jù)包將會(huì)復(fù)制給應(yīng)用程序。使用pcap_loop()函數(shù)進(jìn)行數(shù)據(jù)包的捕獲。有一個(gè)回調(diào)參數(shù)packet_handle指向一個(gè)可以接收數(shù)據(jù)包的函數(shù)。每收到一個(gè)新的數(shù)據(jù)包就會(huì)去調(diào)用這個(gè)函數(shù)實(shí)現(xiàn)特定的功能。

在該系統(tǒng)中,在捕獲到數(shù)據(jù)后,要將數(shù)據(jù)包存儲(chǔ)在數(shù)據(jù)包鏈表中。如果在此時(shí)要查看或分析數(shù)據(jù)包信息,便出現(xiàn)了數(shù)據(jù)包存儲(chǔ)與查看的沖突,本設(shè)計(jì)采取了建立兩個(gè)數(shù)據(jù)包列表,及數(shù)據(jù)包列表操作標(biāo)志位,保證了同一時(shí)刻,查看和存儲(chǔ)的不是同一個(gè)數(shù)據(jù)包鏈表。

3.4 數(shù)據(jù)包協(xié)議的解析

基于WinPcap的包捕獲過(guò)程:首先獲取網(wǎng)卡設(shè)備列表并選擇要監(jiān)聽的一塊網(wǎng)卡,將其設(shè)置為混雜模式,還要設(shè)置好過(guò)濾器等參數(shù);然后把網(wǎng)卡上的數(shù)據(jù)包復(fù)制到內(nèi)核緩沖區(qū)中;最后通過(guò)上層的調(diào)用,把內(nèi)核緩沖區(qū)中的數(shù)據(jù)包拷貝到用戶緩沖區(qū)中,再交給應(yīng)用程序?qū)?shù)據(jù)進(jìn)行加工提取出有用的信息。利用WinPcap驅(qū)動(dòng)捕獲的數(shù)據(jù)幀其實(shí)是經(jīng)過(guò)傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層的封裝而生成的以太網(wǎng)數(shù)據(jù)幀,因此可以需要對(duì)數(shù)據(jù)幀作進(jìn)一步解析才能得到有用信息。協(xié)議分析依次要分析數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層。

具體的解決方法是根據(jù)數(shù)據(jù)包解析原理的分析,及各種協(xié)議數(shù)據(jù)包包頭的結(jié)構(gòu),通過(guò)讀取數(shù)據(jù)包的包頭,解析出該協(xié)議,依據(jù)包頭規(guī)定的結(jié)構(gòu),分析出該協(xié)議的各個(gè)字段,進(jìn)而做一些統(tǒng)計(jì)、顯示、存儲(chǔ)等。以太網(wǎng)協(xié)議解析的實(shí)現(xiàn)過(guò)程主要是接收到數(shù)據(jù)幀后,首先判斷其幀類型,如果數(shù)據(jù)幀中源MAC地址和目的MAC地址后面的兩位十六進(jìn)制數(shù)字大于0x0600,則該字段代表類型,即其封裝格式為Ethernet II類型,否則該字段代表長(zhǎng)度,其封裝格式為Ethernet 802.3 SNAP類型。判斷完幀類型后,記錄其長(zhǎng)度。接下來(lái)判斷數(shù)據(jù)幀中攜帶數(shù)據(jù)包的類型,主要有IP數(shù)據(jù)包、ARP以及RARP數(shù)據(jù)包、ICMP數(shù)據(jù)包。如果數(shù)據(jù)幀中攜帶的是IP數(shù)據(jù)包,還要對(duì)IP數(shù)據(jù)包中的上層數(shù)據(jù)進(jìn)行分析。IP數(shù)據(jù)包主要攜帶TCP數(shù)據(jù)包以及UDP數(shù)據(jù)包,TCP協(xié)議的上層協(xié)議主要為FTP協(xié)議以及HTTP協(xié)議。

4 結(jié)論

該系統(tǒng)可以實(shí)現(xiàn)實(shí)時(shí)的監(jiān)控網(wǎng)絡(luò)的運(yùn)行狀況,捕獲數(shù)據(jù)包,對(duì)數(shù)據(jù)包進(jìn)行協(xié)議分析及數(shù)據(jù)統(tǒng)計(jì)。可用于網(wǎng)絡(luò)管理、網(wǎng)絡(luò)規(guī)劃、網(wǎng)絡(luò)維修等場(chǎng)合。本項(xiàng)目的設(shè)計(jì)方案在操作系統(tǒng)上選擇模塊化和方便剪裁的系統(tǒng)結(jié)構(gòu)。在不損失功能的前提下,力求整體系統(tǒng)的簡(jiǎn)捷和緊湊,并且留有升級(jí)擴(kuò)展的空間,因此是一種較優(yōu)化的選擇。

[1]譚思亮.監(jiān)聽與隱藏[M].北京:人民郵電出版社.2002.

[2]費(fèi)紹敏,龔曉峰.基于Winpcap的網(wǎng)絡(luò)監(jiān)控系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].通信技術(shù).2009.

[3]閆國(guó)英,郭寶增.WindowsCE.NET及其在嵌入式系統(tǒng)中的應(yīng)用.微機(jī)發(fā)展.2005.

[4]胡曉元,史浩山.Winpcap包截獲系統(tǒng)的分析及其應(yīng)用[J].計(jì)算機(jī)工程.2005.

[5]張偉,潘艷輝.基于Winpcap的數(shù)據(jù)包的捕獲及應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì).2008.

[6]徐勇.Windows設(shè)備驅(qū)動(dòng)程序技術(shù)內(nèi)幕[M].北京:清華大學(xué)出版社.2000.

[7]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)(4版)[M].北京:電子工業(yè)出版社.2003.

猜你喜歡
分析系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
隱蔽失效適航要求符合性驗(yàn)證分析
ZC系列無(wú)人機(jī)遙感系統(tǒng)
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
電力系統(tǒng)不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
電力系統(tǒng)及其自動(dòng)化發(fā)展趨勢(shì)分析
中西醫(yī)結(jié)合治療抑郁癥100例分析
主站蜘蛛池模板: 久久国产精品影院| 欧美日韩一区二区三区在线视频| 午夜视频免费试看| 欧美成人区| 欧美日本激情| 久久人人97超碰人人澡爱香蕉| 99性视频| 久久香蕉国产线看精品| 欧美精品v日韩精品v国产精品| 国产性生大片免费观看性欧美| 极品性荡少妇一区二区色欲| 天天躁狠狠躁| 国产精选小视频在线观看| 91网址在线播放| www.日韩三级| 国产在线小视频| www.99精品视频在线播放| 色九九视频| 亚洲国产精品VA在线看黑人| 无码高潮喷水在线观看| 久草网视频在线| 蜜芽一区二区国产精品| 亚洲首页在线观看| 欧美精品黑人粗大| 成人av手机在线观看| 欧美成在线视频| 专干老肥熟女视频网站| AV天堂资源福利在线观看| 亚洲综合激情另类专区| 亚洲精品少妇熟女| 久久精品无码中文字幕| 在线永久免费观看的毛片| 日韩av手机在线| 亚洲最大福利网站| 日韩中文字幕亚洲无线码| 在线va视频| 国产www网站| 夜夜拍夜夜爽| 亚洲伦理一区二区| 欧美性色综合网| 伊人精品视频免费在线| 最新国产成人剧情在线播放| 欧美日韩亚洲国产| 日韩资源站| 2021最新国产精品网站| 久久狠狠色噜噜狠狠狠狠97视色| 国产成人一区二区| 精品欧美一区二区三区在线| 欧美人人干| 国产第一页亚洲| 亚洲成人黄色在线| 国产视频久久久久| 青青久久91| 99久久精品无码专区免费| 88av在线| 日韩在线观看网站| 99精品在线视频观看| 日本三区视频| 久久性妇女精品免费| 亚洲欧美日韩中文字幕一区二区三区| 欧美一级视频免费| 中国毛片网| 最新亚洲人成无码网站欣赏网| 免费观看欧美性一级| 夜夜拍夜夜爽| 国产男女XX00免费观看| 精品人妻AV区| 免费观看亚洲人成网站| 欧美亚洲中文精品三区| 中文成人在线| 国产97视频在线观看| 亚洲福利一区二区三区| 亚洲国产日韩欧美在线| 91精品啪在线观看国产60岁| 秋霞一区二区三区| 日本午夜影院| 2021国产精品自产拍在线| 欧美a在线看| 91无码人妻精品一区| 欧美激情综合| 亚洲天堂网在线播放| 亚洲国产中文综合专区在|