網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、PAGE 網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn)摘 要互聯(lián)網(wǎng)迅速發(fā)展的同時(shí),網(wǎng)絡(luò)安全問題日益成為人們關(guān)注的焦點(diǎn),病毒、惡意攻擊、非法訪問等都容易影響網(wǎng)絡(luò)的正常運(yùn)行,多種網(wǎng)絡(luò)防御技術(shù)被綜合應(yīng)用到網(wǎng)絡(luò)安全管理體系中,流量監(jiān)控系統(tǒng)便是其中一種分析網(wǎng)絡(luò)狀況的有效方法,它從數(shù)據(jù)包流量分析角度,通過(guò)實(shí)時(shí)地收集和監(jiān)視網(wǎng)絡(luò)數(shù)據(jù)包信息,來(lái)檢查是否有違反安全策略的行為和網(wǎng)絡(luò)工作異常的跡象。在研究網(wǎng)絡(luò)數(shù)據(jù)包捕獲、 TCP/IP原理的基礎(chǔ)上,采用面向?qū)ο蟮姆椒ㄟM(jìn)行了需求分析與功能設(shè)計(jì)。該系統(tǒng)在VisualC+6.0環(huán)境下進(jìn)行開發(fā),綜合采用了Socket-Raw、注冊(cè)表編程和IP助手API等VC編程技術(shù),在系統(tǒng)需求分析的基

2、礎(chǔ)上,對(duì)主要功能的實(shí)現(xiàn)方案和技術(shù)細(xì)節(jié)進(jìn)行了詳細(xì)分析與設(shè)計(jì),并通過(guò)測(cè)試,最終實(shí)現(xiàn)了數(shù)據(jù)包捕獲、流量監(jiān)視與統(tǒng)計(jì)主要功能,達(dá)到了預(yù)定要求,為網(wǎng)絡(luò)管理員了解網(wǎng)絡(luò)運(yùn)行狀態(tài)提供了參考。關(guān)鍵詞:網(wǎng)絡(luò)管理;數(shù)據(jù)采集;流量統(tǒng)計(jì);Winsock2目 錄論文總頁(yè)數(shù):22頁(yè) TOC o 1-3 h z u HYPERLINK l _Toc169285245 1引言 PAGEREF _Toc169285245 h 1 HYPERLINK l _Toc169285246 1.1課題背景 PAGEREF _Toc169285246 h 1 HYPERLINK l _Toc169285247 1.2網(wǎng)絡(luò)安全管理的現(xiàn)狀與需求

3、PAGEREF _Toc169285247 h 1 HYPERLINK l _Toc169285248 1.3網(wǎng)絡(luò)流量監(jiān)控的引入 PAGEREF _Toc169285248 h 1 HYPERLINK l _Toc169285249 1.4本文的目的與任務(wù) PAGEREF _Toc169285249 h 2 HYPERLINK l _Toc169285250 1.5論文結(jié)構(gòu)安排 PAGEREF _Toc169285250 h 2 HYPERLINK l _Toc169285251 2相關(guān)的概念與技術(shù) PAGEREF _Toc169285251 h 2 HYPERLINK l _Toc16928

4、5252 2.1OSI參考模型與TCP/IP體系結(jié)構(gòu) PAGEREF _Toc169285252 h 2 HYPERLINK l _Toc169285253 2.1.1OSI參考模型 PAGEREF _Toc169285253 h 2 HYPERLINK l _Toc169285254 2.1.2TCP/IP體系結(jié)構(gòu) PAGEREF _Toc169285254 h 3 HYPERLINK l _Toc169285255 2.1.3OSI模型與TCP/IP體系結(jié)構(gòu)的區(qū)別 PAGEREF _Toc169285255 h 4 HYPERLINK l _Toc169285256 2.2傳輸層的編程接口

5、Windows套接字編程技術(shù) PAGEREF _Toc169285256 h 4 HYPERLINK l _Toc169285257 2.2.1Windows套接字的概念 PAGEREF _Toc169285257 h 4 HYPERLINK l _Toc169285258 2.2.2套接字類型 PAGEREF _Toc169285258 h 5 HYPERLINK l _Toc169285259 2.2.3涉及的幾個(gè)基本概念 PAGEREF _Toc169285259 h 5 HYPERLINK l _Toc169285260 2.3原始套接字 PAGEREF _Toc169285260 h

6、 5 HYPERLINK l _Toc169285261 3網(wǎng)絡(luò)數(shù)據(jù)的采集技術(shù)分析 PAGEREF _Toc169285261 h 6 HYPERLINK l _Toc169285262 3.1Windows下原始數(shù)據(jù)包捕獲的實(shí)現(xiàn) PAGEREF _Toc169285262 h 6 HYPERLINK l _Toc169285263 3.2原始數(shù)據(jù)包捕獲的關(guān)鍵函數(shù) PAGEREF _Toc169285263 h 7 HYPERLINK l _Toc169285264 4網(wǎng)絡(luò)流量監(jiān)控系統(tǒng)各模塊的設(shè)計(jì)與實(shí)現(xiàn) PAGEREF _Toc169285264 h 9 HYPERLINK l _Toc169

7、285265 4.1開發(fā)背景介紹 PAGEREF _Toc169285265 h 9 HYPERLINK l _Toc169285266 4.2總體結(jié)構(gòu)設(shè)計(jì) PAGEREF _Toc169285266 h 9 HYPERLINK l _Toc169285267 4.3流程圖設(shè)計(jì) PAGEREF _Toc169285267 h 10 HYPERLINK l _Toc169285268 4.4各模塊功能概述與實(shí)現(xiàn) PAGEREF _Toc169285268 h 11 HYPERLINK l _Toc169285269 4.4.1數(shù)據(jù)包采集中各類的關(guān)系 PAGEREF _Toc169285269 h

8、 11 HYPERLINK l _Toc169285270 4.4.2數(shù)據(jù)包捕獲與分析模塊 PAGEREF _Toc169285270 h 11 HYPERLINK l _Toc169285271 4.4.3流量獲取模塊 PAGEREF _Toc169285271 h 13 HYPERLINK l _Toc169285273 4.4.4數(shù)據(jù)統(tǒng)計(jì)模塊 PAGEREF _Toc169285273 h 17 HYPERLINK l _Toc169285275 4.4.5常見攻擊分析功能 PAGEREF _Toc169285275 h 18 HYPERLINK l _Toc169285276 5系統(tǒng)測(cè)

9、試 PAGEREF _Toc169285276 h 19 HYPERLINK l _Toc169285277 5.1測(cè)試環(huán)境 PAGEREF _Toc169285277 h 19 HYPERLINK l _Toc169285278 5.1.1硬件環(huán)境 PAGEREF _Toc169285278 h 19 HYPERLINK l _Toc169285279 5.1.2操作系統(tǒng)及軟件運(yùn)行環(huán)境 PAGEREF _Toc169285279 h 19 HYPERLINK l _Toc169285280 5.2測(cè)試步驟 PAGEREF _Toc169285280 h 19 HYPERLINK l _Toc

10、169285281 5.3測(cè)試結(jié)果評(píng)價(jià) PAGEREF _Toc169285281 h 19 HYPERLINK l _Toc169285282 結(jié) 論 PAGEREF _Toc169285282 h 19 HYPERLINK l _Toc169285283 參考文獻(xiàn) PAGEREF _Toc169285283 h 20 HYPERLINK l _Toc169285284 致 謝 PAGEREF _Toc169285284 h 21 HYPERLINK l _Toc169285285 聲 明 PAGEREF _Toc169285285 h 22第32頁(yè) 共 22 頁(yè)引言 課題背景隨著構(gòu)建網(wǎng)絡(luò)基

11、礎(chǔ)技術(shù)和網(wǎng)絡(luò)應(yīng)用的迅速發(fā)展以及用戶對(duì)網(wǎng)絡(luò)性能要求的提高,使得網(wǎng)絡(luò)管理成為迫切需要解決的問題,有效的網(wǎng)絡(luò)管理能夠保證網(wǎng)絡(luò)的穩(wěn)定運(yùn)行和持續(xù)發(fā)展,更重要的是,隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大和黑客技術(shù)的發(fā)展,入侵和攻擊的案例日益增多,對(duì)穩(wěn)定的網(wǎng)絡(luò)服務(wù)、信息安全、互聯(lián)網(wǎng)秩序都提出了嚴(yán)峻的挑戰(zhàn),網(wǎng)絡(luò)安全管理在整個(gè)網(wǎng)絡(luò)管理系統(tǒng)里扮演起更為重要的角色。 網(wǎng)絡(luò)安全管理的現(xiàn)狀與需求目前,在網(wǎng)絡(luò)應(yīng)用不斷深入和技術(shù)頻繁升級(jí)的同時(shí),非法訪問、惡意攻擊等安全威脅也在不斷推陳出新,愈演愈烈。防火墻、VPN、IDS、防病毒、身份認(rèn)證、數(shù)據(jù)加密、安全審計(jì)等安全防護(hù)和管理系統(tǒng)在網(wǎng)絡(luò)中得到了廣泛應(yīng)用。從網(wǎng)絡(luò)安全專業(yè)管理人員的角度來(lái)說(shuō),最直接的

12、需求就是根據(jù)分類在統(tǒng)一的界面中監(jiān)視網(wǎng)絡(luò)中各種運(yùn)行性能狀態(tài),獲取相關(guān)數(shù)據(jù)信息、日志信息和報(bào)警信息等,并進(jìn)行分類匯總、分析和審計(jì);同時(shí)完成攻擊事件報(bào)警、響應(yīng)等功能。因此,用戶的網(wǎng)絡(luò)管理需要不斷健全整體網(wǎng)絡(luò)安全管理解決方案,從統(tǒng)一安全管理平臺(tái)總體調(diào)控配置到多層面、分布式的安全系統(tǒng),實(shí)現(xiàn)對(duì)各種網(wǎng)絡(luò)安全資源的集中監(jiān)控、策略管理、審計(jì)及多種安全功能模塊之間的互動(dòng),從而有效簡(jiǎn)化網(wǎng)絡(luò)安全管理工作,提升網(wǎng)絡(luò)的安全水平和可用性、可控制性、可管理性。 網(wǎng)絡(luò)流量監(jiān)控的引入網(wǎng)絡(luò)安全管理體系中,流量監(jiān)控和統(tǒng)計(jì)分析是整個(gè)管理的基礎(chǔ)。流量檢測(cè)主要目的是通過(guò)對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行實(shí)時(shí)連續(xù)的采集監(jiān)測(cè)網(wǎng)絡(luò)流量,對(duì)獲得的流量數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算

13、,從而得到網(wǎng)絡(luò)主要成分的性能指標(biāo)。網(wǎng)絡(luò)管理員根據(jù)流量數(shù)據(jù)就可以對(duì)網(wǎng)絡(luò)主要成分進(jìn)行性能分析管理,發(fā)現(xiàn)性能變化趨勢(shì),并分析出影響網(wǎng)絡(luò)性能的因素及問題所在。此外,在網(wǎng)絡(luò)流量異常的情況下,通過(guò)擴(kuò)展的流量檢測(cè)報(bào)警系統(tǒng)還可以向管理人員報(bào)警,及時(shí)發(fā)現(xiàn)故障加以處理。在網(wǎng)絡(luò)流量檢測(cè)的基礎(chǔ)上,管理員還可對(duì)感興趣的網(wǎng)絡(luò)管理對(duì)象設(shè)置審查值范圍及配置網(wǎng)絡(luò)性能對(duì)象,監(jiān)控實(shí)時(shí)輪詢網(wǎng)絡(luò)獲取定義對(duì)象的當(dāng)前值,若超出審查值的正常預(yù)定值則報(bào)警,協(xié)助管理員發(fā)現(xiàn)網(wǎng)絡(luò)瓶頸,這樣就能實(shí)現(xiàn)一定程度上的故障管理。而網(wǎng)絡(luò)流量檢測(cè)本身也涉及到安全管理方面的內(nèi)容。由此可見,對(duì)于一個(gè)有效的網(wǎng)絡(luò)安全管理系統(tǒng)來(lái)說(shuō),功能的實(shí)現(xiàn)都或多或少的依賴于流量信息的獲

14、取。因此網(wǎng)絡(luò)流量信息的采集可以說(shuō)是網(wǎng)絡(luò)安全管理系統(tǒng)得以實(shí)現(xiàn)的核心基石。它的應(yīng)用可以在一定程度上檢測(cè)到入侵攻擊,可以有效地幫助管理人員進(jìn)行網(wǎng)絡(luò)性能管理,并利用報(bào)警機(jī)制協(xié)助網(wǎng)管人員采取對(duì)應(yīng)的安全策略與防護(hù)措施,從而減少入侵攻擊所造成的損失。 本文的目的與任務(wù)該網(wǎng)絡(luò)流量監(jiān)控及分析工具主要用途是通過(guò)實(shí)時(shí)連續(xù)地采集網(wǎng)絡(luò)數(shù)據(jù)并對(duì)其進(jìn)行統(tǒng)計(jì),得到主要成分性能指標(biāo),結(jié)合網(wǎng)絡(luò)流量的理論,通過(guò)統(tǒng)計(jì)出的性能指數(shù)觀察網(wǎng)絡(luò)狀態(tài),分析出網(wǎng)絡(luò)變化趨勢(shì),找出影響網(wǎng)絡(luò)性能的因素。本設(shè)計(jì)題目是教師自擬項(xiàng)目,前期任務(wù)主要是設(shè)計(jì)并完成系統(tǒng)的初步框架,實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的捕獲,并解決相應(yīng)問題,后期主要是通過(guò)一些API函數(shù)完成對(duì)各類數(shù)據(jù)信息的

15、統(tǒng)計(jì)。本系統(tǒng)實(shí)現(xiàn)以下功能:(1)采用Winsock編寫原始套接字Socket-Raw對(duì)數(shù)據(jù)包進(jìn)行采集捕獲,并可實(shí)現(xiàn)分類及自定義范圍進(jìn)行捕獲;(2)對(duì)捕獲的數(shù)據(jù)包進(jìn)行一定的解析;(3)訪問操作系統(tǒng)提供的網(wǎng)絡(luò)性能參數(shù)接口,得到網(wǎng)卡總流量、輸入流量和輸出流量;(4)系統(tǒng)提供了多種方式顯示結(jié)果,如曲線圖、列表等;(5)使用IP幫助API獲取網(wǎng)絡(luò)統(tǒng)計(jì)信息;(6)實(shí)現(xiàn)對(duì)部分常見威脅的預(yù)警,可繼續(xù)開發(fā)擴(kuò)展其報(bào)警功能。 論文結(jié)構(gòu)安排本論文圍繞Winsock標(biāo)準(zhǔn)套接字網(wǎng)絡(luò)編程的各項(xiàng)實(shí)踐內(nèi)容展開。具體內(nèi)容安排如下:第一章是引言,簡(jiǎn)要介紹開發(fā)背景、設(shè)計(jì)任務(wù)和論文結(jié)構(gòu)安排;第二章介紹網(wǎng)絡(luò)基礎(chǔ)理論研究、數(shù)據(jù)包捕獲與流量

16、檢測(cè)的技術(shù)原理;第三章介紹如何使用原始套接字實(shí)現(xiàn)數(shù)據(jù)捕獲;第四章重點(diǎn)介紹網(wǎng)絡(luò)流量監(jiān)測(cè)工具的設(shè)計(jì)與實(shí)現(xiàn)過(guò)程,并且詳細(xì)闡述了從系統(tǒng)功能總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、具體實(shí)現(xiàn)的全部過(guò)程;第五章介紹了軟件測(cè)試情況。相關(guān)的概念與技術(shù)OSI參考模型與TCP/IP體系結(jié)構(gòu)OSI參考模型開放系統(tǒng)互聯(lián)參考模型OSI是由國(guó)際標(biāo)準(zhǔn)化組織ISO制定的標(biāo)準(zhǔn)化開放式的計(jì)算機(jī)網(wǎng)絡(luò)層次結(jié)構(gòu)模型,其結(jié)構(gòu)如圖1所示??梢钥闯?,該結(jié)構(gòu)共有七層,各層主要實(shí)現(xiàn)如下功能:(1)物理層,利用傳輸介質(zhì)實(shí)現(xiàn)相鄰節(jié)點(diǎn)間的物理連接,主要對(duì)機(jī)械、電氣、功能和規(guī)程四個(gè)方面及信號(hào)傳輸速率方面進(jìn)行規(guī)定;(2)數(shù)據(jù)鏈路層,完成管理數(shù)據(jù)的傳輸,提供差錯(cuò)檢測(cè)和恢復(fù),并且

17、提供流量控制,最終實(shí)現(xiàn)向上一層提供無(wú)差錯(cuò)、高可靠性的傳輸鏈路;(3)網(wǎng)絡(luò)層,執(zhí)行路由算法和流量控制算法,完成數(shù)據(jù)分組傳輸,它是通信子網(wǎng)的最高層;(4)傳輸層,提供端到端的無(wú)差錯(cuò)傳輸,同時(shí),它也提供屬于局通信網(wǎng)絡(luò)接口,比如SOCKET;(5)會(huì)話層,完成用戶之間會(huì)話的組織、協(xié)調(diào)、分配用戶名等;(6)表示層,解決數(shù)據(jù)格式問題,規(guī)定編碼方式;(7)應(yīng)用層,OSI的最高層,利用應(yīng)用進(jìn)程提供網(wǎng)絡(luò)訪問手段。圖圖1 OSI參考模型TCP/IP體系結(jié)構(gòu)由于TCP/IP比其之前的OSI模型更具體實(shí)現(xiàn),隨著互聯(lián)網(wǎng)的不斷發(fā)展,遵循TCP/IP結(jié)構(gòu)的網(wǎng)絡(luò)不斷普及,因此現(xiàn)在通常采用TCP/IP代表Internet體系結(jié)

18、構(gòu)。TCP/IP的目的是在網(wǎng)絡(luò)標(biāo)準(zhǔn)不同的情況下解決互聯(lián)問題,可以說(shuō),網(wǎng)絡(luò)互聯(lián)是TCP/IP的核心。TCP/IP的體系結(jié)構(gòu)如圖2所示。圖圖2 OSI參考模型與TCP/IP結(jié)構(gòu)TCP/IP在設(shè)計(jì)時(shí)重點(diǎn)并沒有放在具體通信的實(shí)現(xiàn)上,所以對(duì)最后兩層沒有做出具體規(guī)定,同時(shí)表明它允許不同類型的通信網(wǎng)絡(luò)參與通信。它的四個(gè)層次功能如下。(1)應(yīng)用層,提供常用的應(yīng)用程序及自定義的應(yīng)用程序,數(shù)據(jù)傳輸時(shí)用TCP/IP協(xié)議來(lái)進(jìn)行;(2)傳輸層,提供端到端的應(yīng)用程序之間的通信,可以使用傳輸控制協(xié)議TCP(Transmission Control Protocol)或用戶數(shù)據(jù)報(bào)協(xié)議UDP(User Datagram Pro

19、tocol)協(xié)議,前者提供可靠傳輸,傳送單位是報(bào)文段,后者提供不可靠服務(wù),傳輸單位是數(shù)據(jù)報(bào),即分組。此外,傳輸層另外一個(gè)功能就是區(qū)別應(yīng)用程序;(3)網(wǎng)際層,負(fù)責(zé)計(jì)算機(jī)之間的通信,采用的協(xié)議是IP協(xié)議,數(shù)據(jù)傳送單位是分組,向上提供不可靠的傳輸服務(wù);(4)網(wǎng)絡(luò)接口層,負(fù)責(zé)接收數(shù)據(jù)報(bào),并實(shí)現(xiàn)發(fā)送,或者接收幀,提取IP數(shù)據(jù)報(bào),交給互聯(lián)網(wǎng)層。OSI模型與TCP/IP體系結(jié)構(gòu)的區(qū)別從前面的分析可以看出OSI模型和TCP/IP體系有許多不同之處,主要體現(xiàn)在問題的處理上面,例如:(1)TCP/IP一開始就考慮的是異構(gòu)網(wǎng)絡(luò)的互聯(lián)問題,并將IP看作是整個(gè)體系的重要組成部分,而ISO并沒有認(rèn)識(shí)到網(wǎng)際協(xié)議IP的重要性

20、,導(dǎo)致最后只能單獨(dú)劃分一個(gè)子層來(lái)完成IP的作用;(2)OSI最開始只注意到了面向連接的服務(wù),而TCP/IP一開始就注意了面向連接和無(wú)連接的并重。相比起來(lái),TCP/IP更注重了數(shù)據(jù)傳輸?shù)男?,而OSI則注重了傳輸?shù)目煽啃裕唬?)TCP/IP雖然分層,但是調(diào)用關(guān)系并不像OSI那樣嚴(yán)格,減少了不必要的開銷,提高了傳輸效率。傳輸層的編程接口Windows套接字編程技術(shù)Windows套接字的概念Windows套接字SOCKET,是為Windows系統(tǒng)開發(fā)的一套標(biāo)準(zhǔn)通用支持網(wǎng)絡(luò)協(xié)議數(shù)據(jù)通信的API,它是網(wǎng)絡(luò)通信的基礎(chǔ),即TCP/IP的網(wǎng)絡(luò)編程接口,1994年被定為網(wǎng)絡(luò)編程標(biāo)準(zhǔn)后,主要經(jīng)歷了Winsock1

21、.1和Winsock2.0兩種版本,它產(chǎn)生最終目的是可以適應(yīng)應(yīng)用程序開發(fā)者、網(wǎng)絡(luò)服務(wù)商的需求,進(jìn)程通過(guò)套接字的通信域來(lái)完成通信。需要指出的是,套接字主要負(fù)責(zé)控制數(shù)據(jù)的輸入與輸出,主要在傳輸層和網(wǎng)絡(luò)層,屏蔽了數(shù)據(jù)鏈路層和物理層2。套接字類型根據(jù)通信性質(zhì)把套接字主要分為流式套接字和數(shù)據(jù)報(bào)套接字兩種。它們的區(qū)別在于流式套接字提供雙向、有序、無(wú)重復(fù)的數(shù)據(jù)流服務(wù),但相對(duì)于數(shù)據(jù)報(bào)套接字來(lái)說(shuō)系統(tǒng)開銷較大。數(shù)據(jù)報(bào)套接字也支持雙向數(shù)據(jù)流,但并不注重傳輸可靠性、無(wú)重復(fù)性和有序性,但它保留了記錄邊界,由于數(shù)據(jù)報(bào)傳輸效率較高,所以還是得到了比較廣泛的應(yīng)用。涉及的幾個(gè)基本概念(1)字節(jié)順序,不同的計(jì)算機(jī)采用不同的自己順

22、序存儲(chǔ)數(shù)據(jù),所以在這些數(shù)據(jù)進(jìn)行通信時(shí)需要進(jìn)行字節(jié)順序的轉(zhuǎn)換,所有傳送給網(wǎng)絡(luò)上套接字函數(shù)的IP地址和端口號(hào)均按照網(wǎng)絡(luò)順序安排,主要由sockaddr_in這個(gè)結(jié)構(gòu)規(guī)范。特別要注意的是,應(yīng)用程序建立地址結(jié)構(gòu)之前,用戶輸入需要將主機(jī)序列轉(zhuǎn)換為網(wǎng)絡(luò)序列(使用htons函數(shù),反之使用ntohs函數(shù))。(2)阻塞與非阻塞,套接字有同步阻塞和異步非阻塞兩種方法,阻塞模式時(shí),套接字需要等待操作全部完成才結(jié)束,而當(dāng)套接字處于非阻塞模式時(shí),套接字以是否有新數(shù)據(jù)到達(dá)作為阻塞的標(biāo)志。阻塞方式套接字簡(jiǎn)單、方便,但是效率比較低,而非阻塞模式使用復(fù)雜點(diǎn),但效率很高。但是仍需強(qiáng)調(diào)一點(diǎn),Winsock提供了幾種I/O模型來(lái)解決

23、異步問題,如“選擇”、“重疊”、“事件選擇”、“異步選擇”等3。原始套接字從用戶的角度來(lái)看,標(biāo)準(zhǔn)的流式套接字和數(shù)據(jù)報(bào)套接字這兩類套接字似乎涵蓋了TCP/IP應(yīng)用的全部,因?yàn)榛赥CP/IP的應(yīng)用,從協(xié)議棧的層次(如圖3所示)上講,在傳輸層的確只可能建立于TCP或UDP協(xié)議之上,而流式套接字和數(shù)據(jù)報(bào)套接字又分別對(duì)應(yīng)于TCP和UDP,所以幾乎所有的應(yīng)用都可以用這兩類套接字實(shí)現(xiàn)。但是,當(dāng)需要自定義數(shù)據(jù)包發(fā)送時(shí)或者需要分析所有經(jīng)過(guò)網(wǎng)絡(luò)的數(shù)據(jù)包的時(shí)候,就必須面臨一種不同于前兩者的方式Raw Socket,即原始套接字,程序員可以用它來(lái)發(fā)送和接收 IP 層以上的原始數(shù)據(jù)包, 如 ICMP,TCP, UDP

24、等,不僅這樣,它還可以實(shí)現(xiàn)如偽裝本地IP、發(fā)送ICMP包等功能。圖 圖 3 協(xié)議棧層次Raw Socket廣泛應(yīng)用于高級(jí)網(wǎng)絡(luò)編程,也是一種廣泛的黑客手段。著名的網(wǎng)絡(luò)sniffer、拒絕服務(wù)攻擊(DOS)、IP欺騙等都可以以Raw Socket實(shí)現(xiàn)。Raw Socket與標(biāo)準(zhǔn)套接字(SOCK_STREAM、SOCK_DGRAM)的區(qū)別在于前者直接置根于操作系統(tǒng)網(wǎng)絡(luò)核心(Network Core),而SOCK_STREAM、SOCK_DGRAM則“懸浮”于TCP和UDP協(xié)議的外圍,如圖4所示。圖 圖 4 標(biāo)準(zhǔn)套接與原始套接字的關(guān)系網(wǎng)絡(luò)數(shù)據(jù)的采集技術(shù)分析Windows下原始數(shù)據(jù)包捕獲的實(shí)現(xiàn)網(wǎng)絡(luò)上的數(shù)

25、據(jù)包捕獲機(jī)制主要依賴于所使用的操作系統(tǒng),不同的操作系統(tǒng)下有不同的實(shí)現(xiàn)途徑。在Windows環(huán)境下,可通過(guò)網(wǎng)絡(luò)驅(qū)動(dòng)程序接口規(guī)范(NDIS),WinSock的SOCK_RAW或虛擬設(shè)備驅(qū)動(dòng)技術(shù)(VxD)等技術(shù)實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲功能。前面已經(jīng)介紹到了,使用原始套接字可以繞過(guò)Socket提供的功能,對(duì)底層的協(xié)議進(jìn)行使用與開發(fā),可以根據(jù)自己的需要生成想要的數(shù)據(jù)報(bào)文等,下面開始介紹使用原始套接字對(duì)數(shù)據(jù)包捕獲進(jìn)行開發(fā)的相關(guān)技術(shù)知識(shí)。第一,使用套接字前,需要了解網(wǎng)卡接收數(shù)據(jù)的工作原理:在正常情況下,網(wǎng)絡(luò)接口只響應(yīng)兩種數(shù)據(jù)幀,一種是與自己的硬件相匹配的數(shù)據(jù)幀,另一種四向所有計(jì)算機(jī)廣播的數(shù)據(jù)幀。在系統(tǒng)中,數(shù)據(jù)幀

26、的收發(fā)由網(wǎng)卡完成,網(wǎng)卡程序接收從網(wǎng)絡(luò)發(fā)來(lái)的數(shù)據(jù)包,根據(jù)其硬件地址去判斷是否與本機(jī)的硬件地址匹配,若匹配就通知CPU產(chǎn)生中斷進(jìn)行響應(yīng),然后調(diào)用驅(qū)動(dòng)程序設(shè)置的網(wǎng)卡中斷程序地址調(diào)用驅(qū)動(dòng)程序接收數(shù)據(jù),然后放入堆棧進(jìn)行系統(tǒng)相關(guān)處理,若不匹配則直接丟棄該數(shù)據(jù)包3。對(duì)于網(wǎng)絡(luò)接口,它一般具有4種數(shù)據(jù)接收模式:廣播、組播、直接和混雜模式,只有當(dāng)把接口設(shè)置為混雜模式時(shí),網(wǎng)絡(luò)接口才能接收所有的數(shù)據(jù),無(wú)論地址是否匹配,所以在做本設(shè)計(jì)的時(shí)候一定要設(shè)置為混雜模式才能實(shí)現(xiàn)數(shù)據(jù)的采集。第二,需要了解套接字的工作程序和使用方法:一般來(lái)說(shuō),采用套接字開發(fā)網(wǎng)絡(luò)程序需要經(jīng)歷以下幾個(gè)基本步驟:?jiǎn)?dòng)、創(chuàng)建、綁定、監(jiān)聽(接受連接)、連接、

27、發(fā)送/接收數(shù)據(jù)、關(guān)閉、卸載等。第三,具體到Windows下利用原始套接字捕獲網(wǎng)絡(luò)數(shù)據(jù)可以這樣設(shè)計(jì):(1)啟動(dòng)套接字;(2)創(chuàng)建一個(gè)原始套接字;(3)將套接字與本地地址綁定;(4)設(shè)置操作參數(shù);(5)設(shè)置網(wǎng)絡(luò)接口為混雜模式;(6)啟動(dòng)監(jiān)聽線程,開始接收數(shù)據(jù);(7)退出關(guān)閉套接字。原始數(shù)據(jù)包捕獲的關(guān)鍵函數(shù)(1)啟動(dòng)函數(shù)WSAStartupint PASCAL FAR WSAStartup (DWORD wVersionRequested , LPWSADATA lpWSAData);每一個(gè)套接字應(yīng)用程序都必須調(diào)用該函數(shù)進(jìn)行一系列初始化工作,并且只有調(diào)用成功返回后,才能開始使用套接字,其中參數(shù)wVe

28、rsionRequested是版本號(hào),高字節(jié)是次版本號(hào)、低字節(jié)是主版本號(hào),參數(shù)lpWSAData是指向WSADATA結(jié)構(gòu)的指針。(2)套接字創(chuàng)建函數(shù)socketSOCKET socket (int af , int type , int protocol);所有的通信在建立之前都必須創(chuàng)建一個(gè)套接字,socket函數(shù)的功能就是創(chuàng)建套接字,其中參數(shù)af指協(xié)議地址族(address family),當(dāng)建立的套接字是依賴于UDP或TCP的話,需要設(shè)置af為AF_INET,表示采用IP協(xié)議。參數(shù)type是指協(xié)議的套接字類型,采用流式套接字時(shí)用SOCK_STREAM,采用數(shù)據(jù)報(bào)套接字時(shí)用SOCK_DGRA

29、M,采用原始套接字時(shí)用SOCK_RAW。參數(shù)protocol是協(xié)議字段,默認(rèn)情況下可直接設(shè)置為0。(3)綁定函數(shù)bindint bind ( SOCKET s , struct sockaddr_in* name , int namelen);成功創(chuàng)建套接字后的下一步工作就是將本地網(wǎng)絡(luò)接口與套接字進(jìn)行綁定,其中參數(shù)s是創(chuàng)建的套接字,參數(shù)name是需要綁定的通信對(duì)象的信息結(jié)構(gòu)體指針,namelen是該結(jié)構(gòu)的長(zhǎng)度。需要注意的是sockaddr_in結(jié)構(gòu):struct sockaddr_inshort sin_family; /地址族,設(shè)置為AF_INETunsigned short sin_por

30、t; /指定的端口號(hào)struct in_addr sin_addr; /IP地址char sin_zero8;由于主機(jī)序列與網(wǎng)絡(luò)序列的關(guān)系,在程序中需要使用htons等函數(shù)進(jìn)行轉(zhuǎn)換工作。(4)設(shè)置接口模式函數(shù)WSAIoctlint WSAAPI WSAIoctl(SOCKET s, DWORD dwIoControlCode, LPVOID lpvInBuffer, DWORD cbInBuffer, LPVOID lpvOutBuffer, DWORD cbOutBuffer, LPDWORD lpcbBytesReturned, LPWSAOVERLAPPED lpOverlapped,

31、LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);其中,s為一個(gè)套接口的句柄,dwIoControlCode為操作控制代碼,lpvInBuffer為輸入緩沖區(qū)的地址,cbInBuffer為輸入緩沖區(qū)的大小,lpvOutBuffer為輸出緩沖區(qū)的地址,cbOutBuffer為輸出緩沖區(qū)的大小,lpcbBytesReturned為輸出實(shí)際字節(jié)數(shù)的地址,lpOverlapped為WSAOVERLAPPED結(jié)構(gòu)的地址,lpCompletionRoutine為一個(gè)指向操作結(jié)束后調(diào)用的例程指針。調(diào)用成功后,WSAIoctl 函數(shù)返回0,否則的話

32、,將返回INVALID_SOCKET錯(cuò)誤,應(yīng)用程序可通過(guò)WSAGetLastError來(lái)獲取錯(cuò)誤代碼。(5)數(shù)據(jù)接收函數(shù)recvint recv (SOCKET s , char* buf ,int len , int flags);網(wǎng)絡(luò)流量監(jiān)控系統(tǒng)各模塊的設(shè)計(jì)與實(shí)現(xiàn)開發(fā)背景介紹本設(shè)計(jì)開發(fā)平臺(tái)采用Microsoft Visualstudio6.0,它是目前使用比較廣泛的Winsock開發(fā)平臺(tái),因此具有較強(qiáng)的適應(yīng)性,能夠在很多的操作系統(tǒng)平臺(tái)上運(yùn)行,設(shè)計(jì)后具有直觀的簡(jiǎn)潔的操作界面,穩(wěn)定性也比較高。總體結(jié)構(gòu)設(shè)計(jì)通過(guò)收集與分析簡(jiǎn)單網(wǎng)絡(luò)流量監(jiān)控軟件的用戶需求,總結(jié)出以下特征:(1)需要實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)接口數(shù)據(jù)

33、包的盡可能多的捕獲,將網(wǎng)卡設(shè)置為混雜模式,然后進(jìn)行數(shù)據(jù)包的采集;(2)數(shù)據(jù)包的內(nèi)容要進(jìn)行一定的解析,對(duì)數(shù)據(jù)包的協(xié)議類型、源目地址、數(shù)據(jù)包截獲時(shí)間、數(shù)據(jù)包內(nèi)容需要進(jìn)行分析;(3)根據(jù)用戶不同的要求能夠依照特定地址范圍、特定協(xié)議類型相關(guān)包等條件進(jìn)行自定義監(jiān)視;(4)監(jiān)視結(jié)果輸出有實(shí)時(shí)流量圖、列表等顯示;(5)實(shí)現(xiàn)日志記錄,便于日后分析;(6)對(duì)某些常見的攻擊進(jìn)行發(fā)現(xiàn)分析??偤弦陨舷到y(tǒng)要求與綜合分析,本系統(tǒng)總體設(shè)計(jì)如下,采用VC+6.0編寫,系統(tǒng)具有三個(gè)主要功能部分:數(shù)據(jù)捕獲與顯示模塊、流量信息統(tǒng)計(jì)模塊、流量繪制模塊,如圖5所示。流量監(jiān)控分析系統(tǒng)流量監(jiān)控分析系統(tǒng)數(shù)據(jù)采集模塊信息統(tǒng)計(jì)模塊流量繪制模塊圖

34、 圖 5 系統(tǒng)總體設(shè)計(jì)結(jié)構(gòu)圖數(shù)據(jù)采集模塊:完成網(wǎng)絡(luò)接口數(shù)據(jù)的捕獲、解析和顯示,可以根據(jù)用戶定義條件組合來(lái)進(jìn)行捕獲,如只監(jiān)視采用TCP或UDP協(xié)議的數(shù)據(jù)包,也可以監(jiān)視用戶希望關(guān)注的相關(guān)IP地址的數(shù)據(jù)包,同時(shí)完成數(shù)據(jù)封包日志記錄,提高了系統(tǒng)的靈活性。同時(shí),在對(duì)數(shù)據(jù)包的解析過(guò)程中對(duì)一些常見入侵攻擊特征進(jìn)行判斷,發(fā)出預(yù)警。該模塊采用編寫原始套接字開發(fā)。信息統(tǒng)計(jì)模塊:完成統(tǒng)計(jì)功能,如統(tǒng)計(jì)IP要實(shí)現(xiàn)統(tǒng)計(jì)接收到的數(shù)據(jù)報(bào)數(shù)量、接收到的數(shù)據(jù)中協(xié)議出錯(cuò)的數(shù)量、正在請(qǐng)求傳輸?shù)臄?shù)量、路由表中可用路由數(shù)量、丟棄的數(shù)量、需要重組/成功重組的數(shù)量等,統(tǒng)計(jì)ICMP需要完成發(fā)送/接收的消息數(shù)量、滿足超過(guò)TTL的數(shù)量、重定向數(shù)量

35、、時(shí)間戳請(qǐng)求/應(yīng)答數(shù)量等;采用IP助手函數(shù)完成。流量繪制模塊:完成總流量、輸入流量、輸出流量、瞬時(shí)流量值、最高流量值的顯示;采用訪問注冊(cè)表網(wǎng)絡(luò)性能數(shù)據(jù)完成有關(guān)數(shù)據(jù)的獲取,通過(guò)流量圖顯示。流程圖設(shè)計(jì)根據(jù)上面對(duì)各個(gè)功能模塊的劃分,進(jìn)行更進(jìn)一步的分析和設(shè)計(jì),得到數(shù)據(jù)采集、注冊(cè)表網(wǎng)絡(luò)性能塊訪問大致的工作流程圖,如圖6與圖7所示。圖 圖 6 數(shù)據(jù)捕獲處理流程圖 圖 7 網(wǎng)絡(luò)性能數(shù)據(jù)塊訪問流程各模塊功能概述與實(shí)現(xiàn)數(shù)據(jù)包采集中各類的關(guān)系經(jīng)過(guò)上面的分析與設(shè)計(jì),得到該系統(tǒng)的總體功能結(jié)構(gòu)、工作流程,也確定了從編寫套接字到最后捕獲數(shù)據(jù),要經(jīng)過(guò)創(chuàng)建、綁定、設(shè)置工作模式、啟動(dòng)線程、接收數(shù)據(jù)等一系列的處理操作。為了實(shí)現(xiàn)處

36、理中的每一步操作,設(shè)計(jì)了數(shù)據(jù)捕獲的類關(guān)系,如圖8所示。圖 8 數(shù)據(jù)包采集中各類的關(guān)系圖 8 數(shù)據(jù)包采集中各類的關(guān)系在上圖中CSockSupport,CSockHelper ,CPackInterDlg,CBinDataDlg等是封裝了各部分主要處理功能的類。且這些類中封裝了和這些類的操作相關(guān)的方法。將在后面對(duì)這些類的功能和實(shí)現(xiàn)進(jìn)行詳細(xì)介紹。數(shù)據(jù)包捕獲與分析模塊(1)功能實(shí)現(xiàn)說(shuō)明該功能模塊主要由封裝的CSockSupport,CsockHelper ,CpackInterDlg,CbinDataDlg四個(gè)類完成,下面將對(duì)這些類進(jìn)行詳細(xì)說(shuō)明。CsockSupport類:主要負(fù)責(zé)檢查Socket是否

37、支持2.0版本,在該類中封裝了WSAStartup完成Socket的啟動(dòng);CsockHelper類:主要實(shí)現(xiàn)了從獲取本機(jī)信息結(jié)構(gòu)、Socket創(chuàng)建、綁定、設(shè)置、啟動(dòng)線程、數(shù)據(jù)接收到協(xié)議分析的全部方法,詳細(xì)處理流程見圖9所示。圖 9 CSockHelper類處理流程GetLocalIP實(shí)現(xiàn)獲取本機(jī)地址操作的方法,LPHOSTENT lphp是定義一個(gè)主機(jī)信息結(jié)構(gòu),獲取過(guò)程由gethostname(szLocname,MAX_HOSTNAME_LAN)與gethostbyname(szLocname)完成;第一個(gè)參數(shù)是用于放置本機(jī)名稱的緩沖,第二個(gè)參數(shù)是緩沖區(qū)長(zhǎng)度,最后利用inet_ntoa將IP

38、地址轉(zhuǎn)化為“圖 9 CSockHelper類處理流程StartCapture方法完成套接字的創(chuàng)建、綁定、設(shè)置操作方式和啟動(dòng)線程;具體完成如下:m_sockCap = socket(AF_INET , SOCK_RAW , IPPROTO_IP);/創(chuàng)建套接字bind(m_sockCap, (PSOCKADDR)&sa, sizeof(sa);/綁定setsockopt(m_sockCap, SOL_SOCKET, SO_REUSEADDR, (char*)&bopt, sizeof(bopt) ;/設(shè)置操作setsockopt(m_sockCap, IPPROTO_IP, IP_HDRINCL

39、, (char*)&bopt, sizeof(bopt) ;/設(shè)置操作WSAIoctl(m_sockCap,SIO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL);/混雜模式m_hCapThread = CreateThread(NULL, 0, CaptureThread, this, 0, NULL);/啟動(dòng)線程線程函數(shù)CaptureThread主要完成數(shù)據(jù)的接收。數(shù)據(jù)接收后,將緩沖區(qū)數(shù)據(jù)轉(zhuǎn)化為IP數(shù)據(jù)格式后即可以開始解析過(guò)程,協(xié)議

40、名稱獲取如下:for(int i=0; ih_lenver & 0 xf) /獲取數(shù)據(jù)包長(zhǎng)度協(xié)議解析:switch(iProtocol)case IPPROTO_TCP :case IPPROTO_UDP :case IPPROTO_ICMP :default : StopCapture完成關(guān)閉線程和套接字操作:if(m_hCapThread)TerminateThread(m_hCapThread, 0); /中斷進(jìn)程CloseHandle(m_hCapThread); /關(guān)閉句柄m_hCapThread = NULL;if(m_sockCap)closesocket(m_sockCap);

41、 /關(guān)閉套接字CbinDataDlg類主要完成對(duì)已捕獲數(shù)據(jù)的存儲(chǔ)和顯示方法;CpackInterDlg類通過(guò)建立CbinDataDlg類和CsockHelper類對(duì)象實(shí)現(xiàn)數(shù)據(jù)捕獲、解析、顯示、存儲(chǔ)等,同時(shí)它完成對(duì)捕獲條件設(shè)置控件、日志記錄控件的編寫,在這里就不做詳細(xì)介紹了。(2)界面設(shè)計(jì)(見圖10)圖 圖 10 數(shù)據(jù)捕獲模塊界面流量獲取模塊(1)設(shè)計(jì)說(shuō)明設(shè)計(jì)思路:實(shí)際編程時(shí),Windows系統(tǒng)內(nèi)提供了一個(gè)系統(tǒng)性能的接口,只需要訪問這個(gè)接口就可以得到網(wǎng)絡(luò)性能相關(guān)的數(shù)據(jù),如流量;根據(jù)這個(gè)想法,設(shè)計(jì)出了本功能模塊的子功能模塊如下:訪問性能數(shù)據(jù)子模塊:負(fù)責(zé)對(duì)注冊(cè)表進(jìn)行訪問,獲取流量數(shù)據(jù);顯示子模塊:負(fù)

42、責(zé)將數(shù)據(jù)繪制在窗口中;框架子模塊:負(fù)責(zé)消息映射和消息處理;本模塊中,將使用到一個(gè)注冊(cè)表訪問函數(shù)RegQueryValueEx,它根據(jù)開放的注冊(cè)表鍵值與名字查找相關(guān)的類型和數(shù)據(jù)。它的函數(shù)原型如下:LONG RegQueryValueEx(HKEY hKey , LPCTSTR lpValueName , LPDWORD lpReserved , LPDWORD lpType , LPBYTE lpData , LPDWORD lpcbData);參數(shù)說(shuō)明:hKey為預(yù)定的注冊(cè)表系統(tǒng)鍵值;lpValueName為需要查詢的目標(biāo)鍵值的名字;lpReserved保留,但是必須為NULL;lpType為

43、鍵值類型;lpData輸入/輸出接收鍵值的數(shù)據(jù);lpcbData輸入/輸出接收鍵值的緩沖大小標(biāo)志。在WindowsNT下,當(dāng)調(diào)用RegQueryValueEx時(shí),若hKey被設(shè)置為HKEY_PERFORMANCE_DATA返回的數(shù)據(jù)并不是直接顯示被請(qǐng)求的數(shù)據(jù)對(duì)象。所以程序需要遍歷整個(gè)數(shù)據(jù)塊,數(shù)據(jù)塊中的邏輯結(jié)構(gòu)如圖11所示。圖 圖 11 注冊(cè)表網(wǎng)絡(luò)性能數(shù)據(jù)塊邏輯結(jié)構(gòu)參照?qǐng)D4-6可以很容易地確定性能數(shù)據(jù)塊的查詢過(guò)程,從數(shù)據(jù)塊的性能數(shù)據(jù)結(jié)構(gòu)PERF_DATA_BLOCK開始,然后索引到PERF_OBJECT_TYPE結(jié)構(gòu),而PERF_COUNTER_DEFINITION結(jié)構(gòu)可以通過(guò)PERF_OBJE

44、CT_TYPE的成員HeaderByteLength找到位置偏移,每一個(gè)PERF_OBJECT_TYPE的成員DefinitionLength都能確定一個(gè)對(duì)應(yīng)的PERF_INSTANCE_DEFINITION結(jié)構(gòu),PERF_INSTANCE_DEFINITION結(jié)構(gòu)決定著PERF_COUNTER_BLOCK結(jié)構(gòu)3。下面列出了獲得網(wǎng)絡(luò)接口流量的部分關(guān)鍵代碼:/得到當(dāng)前的接口名字InterfaceName = Interfaces.GetAt(pos);/開辟性能數(shù)據(jù)緩沖unsigned char *data = new unsigned char DEFAULT_BUFFER_SIZE;/從Re

45、gQueryValueEx返回的值:本例中忽略改變量/從網(wǎng)絡(luò)對(duì)象(索引是510)查詢性能數(shù)據(jù)RegQueryValueEx(HKEY_PERFORMANCE_DATA, 510, NULL, &type, data, &size)PERF_DATA_BLOCK *dataBlockPtr = (PERF_DATA_BLOCK *)data;下面詳細(xì)說(shuō)明,注冊(cè)表數(shù)據(jù)性能塊訪問過(guò)程的實(shí)現(xiàn):/枚舉鏈表中第一個(gè)對(duì)象PERF_OBJECT_TYPE *objectPtr = FirstObject(dataBlockPtr);/遍歷鏈表 for(int a=0 ; aNumObjectTypes ; a

46、+) char nameBuffer255;/判斷是否是網(wǎng)絡(luò)對(duì)象索引號(hào)是510if(objectPtr-ObjectNameTitleIndex = 510) /偏移變量DWORD processIdOffset = ULONG_MAX;/找到第一個(gè)計(jì)數(shù)器PERF_COUNTER_DEFINITION *counterPtr = FirstCounter(objectPtr);/遍歷鏈表for(int b=0 ; bNumCounters ; b+) /判斷接收的數(shù)據(jù)類型是否是我們需要的if(int)counterPtr-CounterNameTitleIndex= CurrentTraffi

47、cType) processIdOffset = counterPtr-CounterOffset; /下一個(gè)計(jì)數(shù)器counterPtr = NextCounter(counterPtr);/數(shù)據(jù)類型不是我們需要的if(processIdOffset = ULONG_MAX) delete data;return 1;/找到第一個(gè)實(shí)例(instance)PERF_INSTANCE_DEFINITION *instancePtr = FirstInstance(objectPtr);/遍歷整個(gè)實(shí)例for(b=0 ; bNumInstances ; b+) wchar_t *namePtr = (

48、wchar_t *) (BYTE *)instancePtr + instancePtr-NameOffset);/得到這個(gè)實(shí)例的PERF_COUNTER_BLOCKPERF_COUNTER_BLOCK *counterBlockPtr = GetCounterBlock(instancePtr);/現(xiàn)在得到了接口的名字char *pName = WideToMulti(namePtr, nameBuffer, sizeof(nameBuffer);POSITION pos = TotalTraffics.FindIndex(b);if(pos!=NULL)fullTraffic = *(DW

49、ORD *) (BYTE *)counterBlockPtr + processIdOffset);TotalTraffics.SetAt(pos,fullTraffic);/如果當(dāng)前的接口就是我們選擇的接口if(InterfaceName = iName) traffic = *(DWORD *) (BYTE *)counterBlockPtr + processIdOffset); /判斷處理的接口是否是新的if(CurrentInterface != interfaceNumber) lasttraffic = acttraffic; trafficdelta = 0.0;Current

50、Interface = interfaceNumber; else trafficdelta = acttraffic - lasttraffic;lasttraffic = acttraffic;delete data;return(trafficdelta); /下一個(gè)實(shí)例instancePtr = NextInstance(instancePtr); /下一個(gè)對(duì)象objectPtr = NextObject(objectPtr);delete data;return 0;catch(.)return 0;(2)界面設(shè)計(jì)(見圖12)圖 12 流量監(jiān)視模塊界面圖 12 流量監(jiān)視模塊界面數(shù)據(jù)統(tǒng)

51、計(jì)模塊(1)可以利用微軟的IP助手中的API函數(shù)實(shí)現(xiàn)IP的統(tǒng)計(jì),網(wǎng)絡(luò)管理員通過(guò)統(tǒng)計(jì)的數(shù)據(jù)可以在一定程度上發(fā)現(xiàn)網(wǎng)絡(luò)性能瓶頸。涉及到的函數(shù)有GetUdpStatistic,GetTcpStatistic,GetIcmpStatistic,GetIStatistic,需要注意的是工程中要加載IPHelpapi.lib庫(kù)。函數(shù)調(diào)用結(jié)果通過(guò)列表可以直觀顯示出來(lái),網(wǎng)絡(luò)管理人員可以通過(guò)其中統(tǒng)計(jì)數(shù)量的變化監(jiān)視網(wǎng)絡(luò)性能。(2)界面設(shè)計(jì)(見圖13)圖 13 統(tǒng)計(jì)模塊界面圖 13 統(tǒng)計(jì)模塊界面常見攻擊分析功能本設(shè)計(jì)中對(duì)部分常見的攻擊行為進(jìn)行了分析,在類CsockHelper中包解析過(guò)程中加入了常見攻擊行為數(shù)據(jù)包的判

52、斷和報(bào)警,比如Land、Ping of Death等攻擊,部分實(shí)現(xiàn)代碼如下:if(pIpheader-sourceIP=pIpheader-destIP)pd=1;else if(pIpheader-total_len65535)pd=2;switch(pd)case 1:AfxMessageBox(數(shù)據(jù)包源目的地址相同,疑是Land攻擊);sprintf(sLandErrIP,請(qǐng)注意監(jiān)控該IP的數(shù)據(jù):%s,szSourceIP);AfxMessageBox(sLandErrIP);break;case 2:AfxMessageBox(受到疑似ping拒絕服務(wù)攻擊);sprintf(sLand

53、ErrIP,注意監(jiān)控源IP的數(shù)據(jù):%s,szSourceIP);AfxMessageBox(sLandErrIP);break;default:pd=0;break;根據(jù)以后的開發(fā)需要,可設(shè)計(jì)更加豐富的規(guī)則對(duì)比庫(kù)進(jìn)行更多報(bào)警分析。實(shí)現(xiàn)更為完善的攻擊分析服務(wù)。系統(tǒng)測(cè)試測(cè)試環(huán)境硬件環(huán)境(1) 處理器P4 2.0 G Mhz以上;(2) 內(nèi)存512M以上;(3) 多臺(tái)普通搭載網(wǎng)卡的PC、經(jīng)過(guò)路由器或交換機(jī)互聯(lián)。操作系統(tǒng)及軟件運(yùn)行環(huán)境(1) 操作系統(tǒng)Win2000/NT等;(2) VC+6.0。測(cè)試步驟(1) 首先,用多臺(tái)PC搭建局域網(wǎng)絡(luò)。(2) 其次,選定一臺(tái)PC進(jìn)行測(cè)試:數(shù)據(jù)包捕獲(含設(shè)定條件)、

54、封包日志保存、流量峰值、數(shù)據(jù)統(tǒng)計(jì)。(3) 確定每個(gè)功能模塊的測(cè)試要求。(4) 對(duì)每個(gè)功能模塊進(jìn)行數(shù)據(jù)合法性檢查、數(shù)據(jù)一致性檢查。(5) 進(jìn)行各模塊的功能測(cè)試后,對(duì)關(guān)鍵模塊進(jìn)行回歸測(cè)試。測(cè)試結(jié)果評(píng)價(jià)本設(shè)計(jì)在Win2000/NT環(huán)境試運(yùn)行下,編碼后經(jīng)過(guò)多次測(cè)試并將發(fā)現(xiàn)的錯(cuò)誤及時(shí)修改,系統(tǒng)運(yùn)行正常,基本達(dá)到設(shè)計(jì)目標(biāo),運(yùn)行結(jié)果比較良好。結(jié) 論互聯(lián)網(wǎng)的迅猛發(fā)展,流量檢測(cè)和統(tǒng)計(jì)分析成為整個(gè)網(wǎng)絡(luò)安全管理系統(tǒng)的基礎(chǔ)部分。網(wǎng)絡(luò)管理員可以根據(jù)數(shù)據(jù)流量的變化規(guī)律,發(fā)現(xiàn)網(wǎng)絡(luò)故障與攻擊行為,及時(shí)采取措施,減少損失。網(wǎng)絡(luò)流量分析系統(tǒng)是一個(gè)比較復(fù)雜的系統(tǒng),由于時(shí)間關(guān)系,本設(shè)計(jì)只完成了大概框架,通過(guò)編寫套接字、訪問注冊(cè)表等方

55、法實(shí)現(xiàn)了部分主要功能,并沒有完全完成詳細(xì)指標(biāo),比如只提供了局域網(wǎng)內(nèi)流量實(shí)時(shí)監(jiān)測(cè)、數(shù)據(jù)包解析、簡(jiǎn)單統(tǒng)計(jì)等功能,這些都有待于進(jìn)一步改進(jìn)、深入與完善,下一步工作的重點(diǎn)將是提供更多監(jiān)控功能,對(duì)網(wǎng)絡(luò)行為進(jìn)行更深入的分析。在整個(gè)設(shè)計(jì)過(guò)程中,重點(diǎn)放在了數(shù)據(jù)捕獲與流量實(shí)時(shí)監(jiān)控兩個(gè)功能上,進(jìn)而描述了采用套接字開發(fā)流量監(jiān)控系統(tǒng)中的思路和關(guān)鍵事項(xiàng),闡述了開發(fā)過(guò)程中碰到的一些技術(shù)問題,對(duì)功能需求與細(xì)節(jié)實(shí)現(xiàn)進(jìn)行了詳細(xì)分析與設(shè)計(jì)。通過(guò)這次開發(fā)過(guò)程,提高了我獨(dú)立地分析、解決問題的能力,而且掌握了從需求分析、整體設(shè)計(jì)、詳細(xì)設(shè)計(jì)到代碼實(shí)現(xiàn)的軟件開發(fā)流程,使我對(duì)軟件工程中的理論有了更深入的認(rèn)識(shí)。 HYPERLINK 論文格式摸板

56、(2007).doc 參考文獻(xiàn)1 陳伯成,范閩,李英杰. 利用網(wǎng)絡(luò)監(jiān)聽維護(hù)子網(wǎng)系統(tǒng)安全的一種方法J.計(jì)算機(jī)工程與應(yīng)用.2000,(10):133-135。2 李凌. Winsock網(wǎng)絡(luò)編程實(shí)用教程M. 北京:清華大學(xué)出版社,2003.11:9-35。3 曹衍龍,劉海英. Visual C+網(wǎng)絡(luò)通信編程實(shí)用案例精選(第二版)M. 北京:人民郵電出版社,2006.5:425-437。4 孫賢淑. IP網(wǎng)絡(luò)流量測(cè)量的研究與應(yīng)用D. 北京:北京郵電大學(xué)碩士論文, 2005。5 HYPERLINK javascript:submitMyform(%22%22劉欣然%22/(380)%22) 劉欣然. 支

57、持高精度告警的網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)D. 北京:北京郵電大學(xué)碩士論文, 2005。6 HYPERLINK javascript:submitMyform(%22%22許勇%22/(380)%22) 許勇, HYPERLINK javascript:submitMyform(%22%22吳忠堂%22/(380)%22) 吳忠堂. 網(wǎng)絡(luò)流量采集與分析系統(tǒng)中數(shù)據(jù)采集的研究與實(shí)現(xiàn)D. 廣州:華南理工大學(xué)碩士論文, 2004。7 IP助手函數(shù)OL. HYPERLINK ,2007-05-14。致 謝本文是在秦智老師的熱情關(guān)心和指導(dǎo)下完成的,他豐富的知識(shí)和嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對(duì)順利完成本課題

58、起到了極大的作用,特別是在網(wǎng)絡(luò)編程技術(shù)、網(wǎng)絡(luò)數(shù)據(jù)包的分析、流量統(tǒng)計(jì)方法等方面得到了很大幫助。在此向他表示我最衷心的感謝!在論文完成過(guò)程中,本人在程序設(shè)計(jì)、網(wǎng)絡(luò)編程調(diào)試方面,還得到了金虎老師和賀增杰等很多同學(xué)的熱心幫助,本人向他們表示深深的謝意!最后向在百忙之中評(píng)審本文的各位專家、老師表示衷心的感謝!作者簡(jiǎn)介姓 名: 馮躍 性別: 男出生年月: 1983-12-13 民族: 漢E-mail:fengyue-asdf聲 明本論文的工作是 2007年 2 月至2007年 6月在成都信息工程學(xué)院 網(wǎng)絡(luò)工程系 完成的。文中除了特別加以標(biāo)注地方外,不包含他人已經(jīng)發(fā)表或撰寫過(guò)的研究成果,也不包含為獲得成都信

59、息工程學(xué)院或其他教學(xué)機(jī)構(gòu)的學(xué)位或證書而使用過(guò)的材料。除非另有說(shuō)明,本文的工作是原始性工作。關(guān)于學(xué)位論文使用權(quán)和研究成果知識(shí)產(chǎn)權(quán)的說(shuō)明:本人完全了解成都信息工程學(xué)院有關(guān)保管使用學(xué)位論文的規(guī)定,其中包括:(1)學(xué)校有權(quán)保管并向有關(guān)部門遞交學(xué)位論文的原件與復(fù)印件。(2)學(xué)??梢圆捎糜坝 ⒖s印或其他復(fù)制方式保存學(xué)位論文。(3)學(xué)校可以學(xué)術(shù)交流為目的復(fù)制、贈(zèng)送和交換學(xué)位論文。(4)學(xué)校可允許學(xué)位論文被查閱或借閱。(5)學(xué)校可以公布學(xué)位論文的全部或部分內(nèi)容(保密學(xué)位論文在解密后遵守此規(guī)定)。除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程學(xué)院。特此聲明! 作者簽名: 2007年06月

60、 日 附錄資料:不需要的可以自行刪除 機(jī)械原理總復(fù)習(xí)第二章一基本概念:1機(jī)構(gòu)的組成;2運(yùn)動(dòng)副的概念;3機(jī)構(gòu)自由度的計(jì)算,注意復(fù)合鉸鏈、局部自由度和虛約束的處理;4機(jī)構(gòu)具有確定運(yùn)動(dòng)的條件 5何謂機(jī)構(gòu)運(yùn)動(dòng)簡(jiǎn)圖;它與實(shí)際機(jī)構(gòu)有何異同。二填空題:1 根據(jù)機(jī)構(gòu)的組成原理,任何機(jī)構(gòu)都可以看作是由(機(jī)架)、(主動(dòng)件)和(從動(dòng)件)組成的。2 兩構(gòu)件之間線接觸所組成的平面運(yùn)動(dòng)副,稱為(高) 副,它產(chǎn)生(1個(gè))約束,而保留(2個(gè))自由度。3機(jī)構(gòu)具有確定運(yùn)動(dòng)的條件(原動(dòng)件數(shù)目等于自由度數(shù)目)。三計(jì)算分析題:1 計(jì)算如圖所示機(jī)構(gòu)的自由度,并指出復(fù)合鉸鏈、局部自由度和虛約束。2計(jì)算如圖所示機(jī)構(gòu)的自由度,并指出復(fù)合鉸鏈、

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論