版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計與實(shí)現(xiàn)網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計與實(shí)現(xiàn)摘 要互聯(lián)網(wǎng)迅速發(fā)展的同時,網(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ù)包流量分析角度,通過實(shí)時地收集和監(jiān)視網(wǎng)絡(luò)數(shù)據(jù)包信息,來檢查是否有違反安全策略的行為和網(wǎng)絡(luò)工作異常的跡象。在研究網(wǎng)絡(luò)數(shù)據(jù)包捕獲、 TCP/IP原理的基礎(chǔ)上,采用面向?qū)ο蟮姆椒ㄟM(jìn)行了需求分析與功能設(shè)計。該系統(tǒng)在VisualC+6.0環(huán)境下進(jìn)行開發(fā),綜合采用了Socket-Raw、注冊表編程和IP助手API等VC編程
2、技術(shù),在系統(tǒng)需求分析的基礎(chǔ)上,對主要功能的實(shí)現(xiàn)方案和技術(shù)細(xì)節(jié)進(jìn)行了詳細(xì)分析與設(shè)計,并通過測試,最終實(shí)現(xiàn)了數(shù)據(jù)包捕獲、流量監(jiān)視與統(tǒng)計主要功能,達(dá)到了預(yù)定要求,為網(wǎng)絡(luò)管理員了解網(wǎng)絡(luò)運(yùn)行狀態(tài)提供了參考。關(guān)鍵詞:網(wǎng)絡(luò)管理;數(shù)據(jù)采集;流量統(tǒng)計;Winsock2The Design and Implementation of Monitoring and Analyzing Tool for Network TrafficAbstractWith the rapid development of Internet, network safety has become peoples concern, vi
3、rus, vigorous attack, illegal visit and so on can easily affect the normal network performance. Various kinds of network defending technology have been comprehensively applied into the management system of network safety. Network traffic system is one of the effective measures to analysis network co
4、ndition. From the angle of analyzing packet traffic, it can examine the safety violation and the abnormal performance of network by timely collecting and monitoring packets information. By using the way of object-oriented, this design makes a needs analysis and ability designing based on the study o
5、f network packet collecting and TCP/IP theory. Under the environment of Visual C+6.0, this system adopts VC program technologies of Socket-Raw, Windows register and IpHelper API. On the basis of system analysis, it makes a deliberate analysis and test of plans and details to implement packets collec
6、ting, traffic monitoring and statistics. So this meets our needs and makes a reference for managers to get to know the network conditions. Key words: network management; data collection; traffic analysis; Winsock2目 錄論文總頁數(shù):22頁1引言11.1課題背景11.2網(wǎng)絡(luò)安全管理的現(xiàn)狀與需求11.3網(wǎng)絡(luò)流量監(jiān)控的引入11.4本文的目的與任務(wù)21.5論文結(jié)構(gòu)安排22相關(guān)的概念與技術(shù)22.
7、1OSI參考模型與TCP/IP體系結(jié)構(gòu)2OSI參考模型2TCP/IP體系結(jié)構(gòu)3OSI模型與TCP/IP體系結(jié)構(gòu)的區(qū)別42.2傳輸層的編程接口Windows套接字編程技術(shù)4Windows套接字的概念4套接字類型5涉及的幾個基本概念52.3原始套接字53網(wǎng)絡(luò)數(shù)據(jù)的采集技術(shù)分析63.1Windows下原始數(shù)據(jù)包捕獲的實(shí)現(xiàn)63.2原始數(shù)據(jù)包捕獲的關(guān)鍵函數(shù)74網(wǎng)絡(luò)流量監(jiān)控系統(tǒng)各模塊的設(shè)計與實(shí)現(xiàn)94.1開發(fā)背景介紹94.2總體結(jié)構(gòu)設(shè)計94.3流程圖設(shè)計104.4各模塊功能概述與實(shí)現(xiàn)11數(shù)據(jù)包采集中各類的關(guān)系11數(shù)據(jù)包捕獲與分析模塊11流量獲取模塊13數(shù)據(jù)統(tǒng)計模塊17常見攻擊分析功能185系統(tǒng)測試195.1
8、測試環(huán)境19硬件環(huán)境19操作系統(tǒng)及軟件運(yùn)行環(huán)境195.2測試步驟195.3測試結(jié)果評價19結(jié) 論19參考文獻(xiàn)20致 謝21聲 明221 引言1.1 課題背景隨著構(gòu)建網(wǎng)絡(luò)基礎(chǔ)技術(shù)和網(wǎng)絡(luò)應(yīng)用的迅速發(fā)展以及用戶對網(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ā)展,入侵和攻擊的案例日益增多,對穩(wěn)定的網(wǎng)絡(luò)服務(wù)、信息安全、互聯(lián)網(wǎng)秩序都提出了嚴(yán)峻的挑戰(zhàn),網(wǎng)絡(luò)安全管理在整個網(wǎng)絡(luò)管理系統(tǒng)里扮演起更為重要的角色。1.2 網(wǎng)絡(luò)安全管理的現(xiàn)狀與需求目前,在網(wǎng)絡(luò)應(yīng)用不斷深入和技術(shù)頻繁升級的同時,非法訪問、惡意攻擊等安全威
9、脅也在不斷推陳出新,愈演愈烈。防火墻、VPN、IDS、防病毒、身份認(rèn)證、數(shù)據(jù)加密、安全審計等安全防護(hù)和管理系統(tǒng)在網(wǎng)絡(luò)中得到了廣泛應(yīng)用。從網(wǎng)絡(luò)安全專業(yè)管理人員的角度來說,最直接的需求就是根據(jù)分類在統(tǒng)一的界面中監(jiān)視網(wǎng)絡(luò)中各種運(yùn)行性能狀態(tài),獲取相關(guān)數(shù)據(jù)信息、日志信息和報警信息等,并進(jìn)行分類匯總、分析和審計;同時完成攻擊事件報警、響應(yīng)等功能。因此,用戶的網(wǎng)絡(luò)管理需要不斷健全整體網(wǎng)絡(luò)安全管理解決方案,從統(tǒng)一安全管理平臺總體調(diào)控配置到多層面、分布式的安全系統(tǒng),實(shí)現(xiàn)對各種網(wǎng)絡(luò)安全資源的集中監(jiān)控、策略管理、審計及多種安全功能模塊之間的互動,從而有效簡化網(wǎng)絡(luò)安全管理工作,提升網(wǎng)絡(luò)的安全水平和可用性、可控制性、可
10、管理性。1.3 網(wǎng)絡(luò)流量監(jiān)控的引入網(wǎng)絡(luò)安全管理體系中,流量監(jiān)控和統(tǒng)計分析是整個管理的基礎(chǔ)。流量檢測主要目的是通過對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行實(shí)時連續(xù)的采集監(jiān)測網(wǎng)絡(luò)流量,對獲得的流量數(shù)據(jù)進(jìn)行統(tǒng)計計算,從而得到網(wǎng)絡(luò)主要成分的性能指標(biāo)。網(wǎng)絡(luò)管理員根據(jù)流量數(shù)據(jù)就可以對網(wǎng)絡(luò)主要成分進(jìn)行性能分析管理,發(fā)現(xiàn)性能變化趨勢,并分析出影響網(wǎng)絡(luò)性能的因素及問題所在。此外,在網(wǎng)絡(luò)流量異常的情況下,通過擴(kuò)展的流量檢測報警系統(tǒng)還可以向管理人員報警,及時發(fā)現(xiàn)故障加以處理。在網(wǎng)絡(luò)流量檢測的基礎(chǔ)上,管理員還可對感興趣的網(wǎng)絡(luò)管理對象設(shè)置審查值范圍及配置網(wǎng)絡(luò)性能對象,監(jiān)控實(shí)時輪詢網(wǎng)絡(luò)獲取定義對象的當(dāng)前值,若超出審查值的正常預(yù)定值則報警,協(xié)助管理
11、員發(fā)現(xiàn)網(wǎng)絡(luò)瓶頸,這樣就能實(shí)現(xiàn)一定程度上的故障管理。而網(wǎng)絡(luò)流量檢測本身也涉及到安全管理方面的內(nèi)容。由此可見,對于一個有效的網(wǎng)絡(luò)安全管理系統(tǒng)來說,功能的實(shí)現(xiàn)都或多或少的依賴于流量信息的獲取。因此網(wǎng)絡(luò)流量信息的采集可以說是網(wǎng)絡(luò)安全管理系統(tǒng)得以實(shí)現(xiàn)的核心基石。它的應(yīng)用可以在一定程度上檢測到入侵攻擊,可以有效地幫助管理人員進(jìn)行網(wǎng)絡(luò)性能管理,并利用報警機(jī)制協(xié)助網(wǎng)管人員采取對應(yīng)的安全策略與防護(hù)措施,從而減少入侵攻擊所造成的損失。1.4 本文的目的與任務(wù)該網(wǎng)絡(luò)流量監(jiān)控及分析工具主要用途是通過實(shí)時連續(xù)地采集網(wǎng)絡(luò)數(shù)據(jù)并對其進(jìn)行統(tǒng)計,得到主要成分性能指標(biāo),結(jié)合網(wǎng)絡(luò)流量的理論,通過統(tǒng)計出的性能指數(shù)觀察網(wǎng)絡(luò)狀態(tài),分析出
12、網(wǎng)絡(luò)變化趨勢,找出影響網(wǎng)絡(luò)性能的因素。本設(shè)計題目是教師自擬項目,前期任務(wù)主要是設(shè)計并完成系統(tǒng)的初步框架,實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的捕獲,并解決相應(yīng)問題,后期主要是通過一些API函數(shù)完成對各類數(shù)據(jù)信息的統(tǒng)計。本系統(tǒng)實(shí)現(xiàn)以下功能:(1)采用Winsock編寫原始套接字Socket-Raw對數(shù)據(jù)包進(jìn)行采集捕獲,并可實(shí)現(xiàn)分類及自定義范圍進(jìn)行捕獲;(2)對捕獲的數(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)計信息;(6)實(shí)現(xiàn)對部分常見威脅的預(yù)警,可繼續(xù)開發(fā)擴(kuò)展其報警功能。1.5
13、 論文結(jié)構(gòu)安排本論文圍繞Winsock標(biāo)準(zhǔn)套接字網(wǎng)絡(luò)編程的各項實(shí)踐內(nèi)容展開。具體內(nèi)容安排如下:第一章是引言,簡要介紹開發(fā)背景、設(shè)計任務(wù)和論文結(jié)構(gòu)安排;第二章介紹網(wǎng)絡(luò)基礎(chǔ)理論研究、數(shù)據(jù)包捕獲與流量檢測的技術(shù)原理;第三章介紹如何使用原始套接字實(shí)現(xiàn)數(shù)據(jù)捕獲;第四章重點(diǎn)介紹網(wǎng)絡(luò)流量監(jiān)測工具的設(shè)計與實(shí)現(xiàn)過程,并且詳細(xì)闡述了從系統(tǒng)功能總體設(shè)計、詳細(xì)設(shè)計、具體實(shí)現(xiàn)的全部過程;第五章介紹了軟件測試情況。2 相關(guān)的概念與技術(shù)2.1 OSI參考模型與TCP/IP體系結(jié)構(gòu)2.1.1 OSI參考模型開放系統(tǒng)互聯(lián)參考模型OSI是由國際標(biāo)準(zhǔn)化組織ISO制定的標(biāo)準(zhǔn)化開放式的計算機(jī)網(wǎng)絡(luò)層次結(jié)構(gòu)模型,其結(jié)構(gòu)如圖1所示??梢钥闯?/p>
14、,該結(jié)構(gòu)共有七層,各層主要實(shí)現(xiàn)如下功能:(1)物理層,利用傳輸介質(zhì)實(shí)現(xiàn)相鄰節(jié)點(diǎn)間的物理連接,主要對機(jī)械、電氣、功能和規(guī)程四個方面及信號傳輸速率方面進(jìn)行規(guī)定;(2)數(shù)據(jù)鏈路層,完成管理數(shù)據(jù)的傳輸,提供差錯檢測和恢復(fù),并且提供流量控制,最終實(shí)現(xiàn)向上一層提供無差錯、高可靠性的傳輸鏈路;(3)網(wǎng)絡(luò)層,執(zhí)行路由算法和流量控制算法,完成數(shù)據(jù)分組傳輸,它是通信子網(wǎng)的最高層;(4)傳輸層,提供端到端的無差錯傳輸,同時,它也提供屬于局通信網(wǎng)絡(luò)接口,比如SOCKET;(5)會話層,完成用戶之間會話的組織、協(xié)調(diào)、分配用戶名等;(6)表示層,解決數(shù)據(jù)格式問題,規(guī)定編碼方式;(7)應(yīng)用層,OSI的最高層,利用應(yīng)用進(jìn)程提
15、供網(wǎng)絡(luò)訪問手段。圖1 OSI參考模型2.1.2 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é)構(gòu)。TCP/IP的目的是在網(wǎng)絡(luò)標(biāo)準(zhǔn)不同的情況下解決互聯(lián)問題,可以說,網(wǎng)絡(luò)互聯(lián)是TCP/IP的核心。TCP/IP的體系結(jié)構(gòu)如圖2所示。圖2 OSI參考模型與TCP/IP結(jié)構(gòu)TCP/IP在設(shè)計時重點(diǎn)并沒有放在具體通信的實(shí)現(xiàn)上,所以對最后兩層沒有做出具體規(guī)定,同時表明它允許不同類型的通信網(wǎng)絡(luò)參與通信。它的四個層次功能如下。(1)應(yīng)用層,提供常用的應(yīng)用程序及自定義的應(yīng)用程序,數(shù)
16、據(jù)傳輸時用TCP/IP協(xié)議來進(jìn)行;(2)傳輸層,提供端到端的應(yīng)用程序之間的通信,可以使用傳輸控制協(xié)議TCP(Transmission Control Protocol)或用戶數(shù)據(jù)報協(xié)議UDP(User Datagram Protocol)協(xié)議,前者提供可靠傳輸,傳送單位是報文段,后者提供不可靠服務(wù),傳輸單位是數(shù)據(jù)報,即分組。此外,傳輸層另外一個功能就是區(qū)別應(yīng)用程序;(3)網(wǎng)際層,負(fù)責(zé)計算機(jī)之間的通信,采用的協(xié)議是IP協(xié)議,數(shù)據(jù)傳送單位是分組,向上提供不可靠的傳輸服務(wù);(4)網(wǎng)絡(luò)接口層,負(fù)責(zé)接收數(shù)據(jù)報,并實(shí)現(xiàn)發(fā)送,或者接收幀,提取IP數(shù)據(jù)報,交給互聯(lián)網(wǎng)層。2.1.3 OSI模型與TCP/IP體系
17、結(jié)構(gòu)的區(qū)別從前面的分析可以看出OSI模型和TCP/IP體系有許多不同之處,主要體現(xiàn)在問題的處理上面,例如:(1)TCP/IP一開始就考慮的是異構(gòu)網(wǎng)絡(luò)的互聯(lián)問題,并將IP看作是整個體系的重要組成部分,而ISO并沒有認(rèn)識到網(wǎng)際協(xié)議IP的重要性,導(dǎo)致最后只能單獨(dú)劃分一個子層來完成IP的作用;(2)OSI最開始只注意到了面向連接的服務(wù),而TCP/IP一開始就注意了面向連接和無連接的并重。相比起來,TCP/IP更注重了數(shù)據(jù)傳輸?shù)男?,而OSI則注重了傳輸?shù)目煽啃裕唬?)TCP/IP雖然分層,但是調(diào)用關(guān)系并不像OSI那樣嚴(yán)格,減少了不必要的開銷,提高了傳輸效率。2.2 傳輸層的編程接口Windows套接字
18、編程技術(shù)2.2.1 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.1和Winsock2.0兩種版本,它產(chǎn)生最終目的是可以適應(yīng)應(yīng)用程序開發(fā)者、網(wǎng)絡(luò)服務(wù)商的需求,進(jìn)程通過套接字的通信域來完成通信。需要指出的是,套接字主要負(fù)責(zé)控制數(shù)據(jù)的輸入與輸出,主要在傳輸層和網(wǎng)絡(luò)層,屏蔽了數(shù)據(jù)鏈路層和物理層2。2.2.2 套接字類型根據(jù)通信性質(zhì)把套接字主要分為流式套接字和數(shù)據(jù)報套接字兩種。它們的區(qū)別在于流式套接字提供雙向、
19、有序、無重復(fù)的數(shù)據(jù)流服務(wù),但相對于數(shù)據(jù)報套接字來說系統(tǒng)開銷較大。數(shù)據(jù)報套接字也支持雙向數(shù)據(jù)流,但并不注重傳輸可靠性、無重復(fù)性和有序性,但它保留了記錄邊界,由于數(shù)據(jù)報傳輸效率較高,所以還是得到了比較廣泛的應(yīng)用。2.2.3 涉及的幾個基本概念(1)字節(jié)順序,不同的計算機(jī)采用不同的自己順序存儲數(shù)據(jù),所以在這些數(shù)據(jù)進(jìn)行通信時需要進(jìn)行字節(jié)順序的轉(zhuǎn)換,所有傳送給網(wǎng)絡(luò)上套接字函數(shù)的IP地址和端口號均按照網(wǎng)絡(luò)順序安排,主要由sockaddr_in這個結(jié)構(gòu)規(guī)范。特別要注意的是,應(yīng)用程序建立地址結(jié)構(gòu)之前,用戶輸入需要將主機(jī)序列轉(zhuǎn)換為網(wǎng)絡(luò)序列(使用htons函數(shù),反之使用ntohs函數(shù))。(2)阻塞與非阻塞,套接字
20、有同步阻塞和異步非阻塞兩種方法,阻塞模式時,套接字需要等待操作全部完成才結(jié)束,而當(dāng)套接字處于非阻塞模式時,套接字以是否有新數(shù)據(jù)到達(dá)作為阻塞的標(biāo)志。阻塞方式套接字簡單、方便,但是效率比較低,而非阻塞模式使用復(fù)雜點(diǎn),但效率很高。但是仍需強(qiáng)調(diào)一點(diǎn),Winsock提供了幾種I/O模型來解決異步問題,如“選擇”、“重疊”、“事件選擇”、“異步選擇”等3。2.3 原始套接字從用戶的角度來看,標(biāo)準(zhǔn)的流式套接字和數(shù)據(jù)報套接字這兩類套接字似乎涵蓋了TCP/IP應(yīng)用的全部,因為基于TCP/IP的應(yīng)用,從協(xié)議棧的層次(如圖3所示)上講,在傳輸層的確只可能建立于TCP或UDP協(xié)議之上,而流式套接字和數(shù)據(jù)報套接字又分別
21、對應(yīng)于TCP和UDP,所以幾乎所有的應(yīng)用都可以用這兩類套接字實(shí)現(xiàn)。但是,當(dāng)需要自定義數(shù)據(jù)包發(fā)送時或者需要分析所有經(jīng)過網(wǎng)絡(luò)的數(shù)據(jù)包的時候,就必須面臨一種不同于前兩者的方式Raw Socket,即原始套接字,程序員可以用它來發(fā)送和接收 IP 層以上的原始數(shù)據(jù)包, 如 ICMP,TCP, UDP等,不僅這樣,它還可以實(shí)現(xiàn)如偽裝本地IP、發(fā)送ICMP包等功能。圖 3 協(xié)議棧層次Raw Socket廣泛應(yīng)用于高級網(wǎng)絡(luò)編程,也是一種廣泛的黑客手段。著名的網(wǎng)絡(luò)sniffer、拒絕服務(wù)攻擊(DOS)、IP欺騙等都可以以Raw Socket實(shí)現(xiàn)。Raw Socket與標(biāo)準(zhǔn)套接字(SOCK_STREAM、SOCK
22、_DGRAM)的區(qū)別在于前者直接置"根"于操作系統(tǒng)網(wǎng)絡(luò)核心(Network Core),而SOCK_STREAM、SOCK_DGRAM則“懸浮”于TCP和UDP協(xié)議的外圍,如圖4所示。圖 4 標(biāo)準(zhǔn)套接與原始套接字的關(guān)系3 網(wǎng)絡(luò)數(shù)據(jù)的采集技術(shù)分析3.1 Windows下原始數(shù)據(jù)包捕獲的實(shí)現(xiàn)網(wǎng)絡(luò)上的數(shù)據(jù)包捕獲機(jī)制主要依賴于所使用的操作系統(tǒng),不同的操作系統(tǒng)下有不同的實(shí)現(xiàn)途徑。在Windows環(huán)境下,可通過網(wǎng)絡(luò)驅(qū)動程序接口規(guī)范(NDIS),WinSock的SOCK_RAW或虛擬設(shè)備驅(qū)動技術(shù)(VxD)等技術(shù)實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的捕獲功能。前面已經(jīng)介紹到了,使用原始套接字可以繞過Socket
23、提供的功能,對底層的協(xié)議進(jìn)行使用與開發(fā),可以根據(jù)自己的需要生成想要的數(shù)據(jù)報文等,下面開始介紹使用原始套接字對數(shù)據(jù)包捕獲進(jìn)行開發(fā)的相關(guān)技術(shù)知識。第一,使用套接字前,需要了解網(wǎng)卡接收數(shù)據(jù)的工作原理:在正常情況下,網(wǎng)絡(luò)接口只響應(yīng)兩種數(shù)據(jù)幀,一種是與自己的硬件相匹配的數(shù)據(jù)幀,另一種四向所有計算機(jī)廣播的數(shù)據(jù)幀。在系統(tǒng)中,數(shù)據(jù)幀的收發(fā)由網(wǎng)卡完成,網(wǎng)卡程序接收從網(wǎng)絡(luò)發(fā)來的數(shù)據(jù)包,根據(jù)其硬件地址去判斷是否與本機(jī)的硬件地址匹配,若匹配就通知CPU產(chǎn)生中斷進(jìn)行響應(yīng),然后調(diào)用驅(qū)動程序設(shè)置的網(wǎng)卡中斷程序地址調(diào)用驅(qū)動程序接收數(shù)據(jù),然后放入堆棧進(jìn)行系統(tǒng)相關(guān)處理,若不匹配則直接丟棄該數(shù)據(jù)包3。對于網(wǎng)絡(luò)接口,它一般具有4種數(shù)
24、據(jù)接收模式:廣播、組播、直接和混雜模式,只有當(dāng)把接口設(shè)置為混雜模式時,網(wǎng)絡(luò)接口才能接收所有的數(shù)據(jù),無論地址是否匹配,所以在做本設(shè)計的時候一定要設(shè)置為混雜模式才能實(shí)現(xiàn)數(shù)據(jù)的采集。第二,需要了解套接字的工作程序和使用方法:一般來說,采用套接字開發(fā)網(wǎng)絡(luò)程序需要經(jīng)歷以下幾個基本步驟:啟動、創(chuàng)建、綁定、監(jiān)聽(接受連接)、連接、發(fā)送/接收數(shù)據(jù)、關(guān)閉、卸載等。第三,具體到Windows下利用原始套接字捕獲網(wǎng)絡(luò)數(shù)據(jù)可以這樣設(shè)計:(1)啟動套接字;(2)創(chuàng)建一個原始套接字;(3)將套接字與本地地址綁定;(4)設(shè)置操作參數(shù);(5)設(shè)置網(wǎng)絡(luò)接口為混雜模式;(6)啟動監(jiān)聽線程,開始接收數(shù)據(jù);(7)退出關(guān)閉套接字。3.
25、2 原始數(shù)據(jù)包捕獲的關(guān)鍵函數(shù)(1)啟動函數(shù)WSAStartupint PASCAL FAR WSAStartup (DWORD wVersionRequested , LPWSADATA lpWSAData);每一個套接字應(yīng)用程序都必須調(diào)用該函數(shù)進(jìn)行一系列初始化工作,并且只有調(diào)用成功返回后,才能開始使用套接字,其中參數(shù)wVersionRequested是版本號,高字節(jié)是次版本號、低字節(jié)是主版本號,參數(shù)lpWSAData是指向WSADATA結(jié)構(gòu)的指針。(2)套接字創(chuàng)建函數(shù)socketSOCKET socket (int af , int type , int protocol);所有的通信在建立
26、之前都必須創(chuàng)建一個套接字,socket函數(shù)的功能就是創(chuàng)建套接字,其中參數(shù)af指協(xié)議地址族(address family),當(dāng)建立的套接字是依賴于UDP或TCP的話,需要設(shè)置af為AF_INET,表示采用IP協(xié)議。參數(shù)type是指協(xié)議的套接字類型,采用流式套接字時用SOCK_STREAM,采用數(shù)據(jù)報套接字時用SOCK_DGRAM,采用原始套接字時用SOCK_RAW。參數(shù)protocol是協(xié)議字段,默認(rèn)情況下可直接設(shè)置為0。(3)綁定函數(shù)bindint bind ( SOCKET s , struct sockaddr_in* name , int namelen);成功創(chuàng)建套接字后的下一步工作就
27、是將本地網(wǎng)絡(luò)接口與套接字進(jìn)行綁定,其中參數(shù)s是創(chuàng)建的套接字,參數(shù)name是需要綁定的通信對象的信息結(jié)構(gòu)體指針,namelen是該結(jié)構(gòu)的長度。需要注意的是sockaddr_in結(jié)構(gòu):struct sockaddr_inshort sin_family; /地址族,設(shè)置為AF_INETunsigned short sin_port; /指定的端口號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(SOCKE
28、T s, DWORD dwIoControlCode, LPVOID lpvInBuffer, DWORD cbInBuffer, LPVOID lpvOutBuffer, DWORD cbOutBuffer, LPDWORD lpcbBytesReturned, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);其中,s為一個套接口的句柄,dwIoControlCode為操作控制代碼,lpvInBuffer為輸入緩沖區(qū)的地址,cbInBuffer為輸入緩沖區(qū)的大小,lpv
29、OutBuffer為輸出緩沖區(qū)的地址,cbOutBuffer為輸出緩沖區(qū)的大小,lpcbBytesReturned為輸出實(shí)際字節(jié)數(shù)的地址,lpOverlapped為WSAOVERLAPPED結(jié)構(gòu)的地址,lpCompletionRoutine為一個指向操作結(jié)束后調(diào)用的例程指針。調(diào)用成功后,WSAIoctl 函數(shù)返回0,否則的話,將返回INVALID_SOCKET錯誤,應(yīng)用程序可通過WSAGetLastError來獲取錯誤代碼。(5)數(shù)據(jù)接收函數(shù)recvint recv (SOCKET s , char* buf ,int len , int flags);4 網(wǎng)絡(luò)流量監(jiān)控系統(tǒng)各模塊的設(shè)計與實(shí)現(xiàn)4
30、.1 開發(fā)背景介紹本設(shè)計開發(fā)平臺采用Microsoft Visualstudio 6.0,它是目前使用比較廣泛的Winsock開發(fā)平臺,因此具有較強(qiáng)的適應(yīng)性,能夠在很多的操作系統(tǒng)平臺上運(yùn)行,設(shè)計后具有直觀的簡潔的操作界面,穩(wěn)定性也比較高。4.2 總體結(jié)構(gòu)設(shè)計通過收集與分析簡單網(wǎng)絡(luò)流量監(jiān)控軟件的用戶需求,總結(jié)出以下特征:(1)需要實(shí)現(xiàn)對網(wǎng)絡(luò)接口數(shù)據(jù)包的盡可能多的捕獲,將網(wǎng)卡設(shè)置為混雜模式,然后進(jìn)行數(shù)據(jù)包的采集;(2)數(shù)據(jù)包的內(nèi)容要進(jìn)行一定的解析,對數(shù)據(jù)包的協(xié)議類型、源目地址、數(shù)據(jù)包截獲時間、數(shù)據(jù)包內(nèi)容需要進(jìn)行分析;(3)根據(jù)用戶不同的要求能夠依照特定地址范圍、特定協(xié)議類型相關(guān)包等條件進(jìn)行自定義監(jiān)
31、視;(4)監(jiān)視結(jié)果輸出有實(shí)時流量圖、列表等顯示;(5)實(shí)現(xiàn)日志記錄,便于日后分析;(6)對某些常見的攻擊進(jìn)行發(fā)現(xiàn)分析。總合以上系統(tǒng)要求與綜合分析,本系統(tǒng)總體設(shè)計如下,采用VC+6.0編寫,系統(tǒng)具有三個主要功能部分:數(shù)據(jù)捕獲與顯示模塊、流量信息統(tǒng)計模塊、流量繪制模塊,如圖5所示。流量監(jiān)控分析系統(tǒng)數(shù)據(jù)采集模塊信息統(tǒng)計模塊流量繪制模塊圖 5 系統(tǒng)總體設(shè)計結(jié)構(gòu)圖數(shù)據(jù)采集模塊:完成網(wǎng)絡(luò)接口數(shù)據(jù)的捕獲、解析和顯示,可以根據(jù)用戶定義條件組合來進(jìn)行捕獲,如只監(jiān)視采用TCP或UDP協(xié)議的數(shù)據(jù)包,也可以監(jiān)視用戶希望關(guān)注的相關(guān)IP地址的數(shù)據(jù)包,同時完成數(shù)據(jù)封包日志記錄,提高了系統(tǒng)的靈活性。同時,在對數(shù)據(jù)包的解析過程
32、中對一些常見入侵攻擊特征進(jìn)行判斷,發(fā)出預(yù)警。該模塊采用編寫原始套接字開發(fā)。信息統(tǒng)計模塊:完成統(tǒng)計功能,如統(tǒng)計IP要實(shí)現(xiàn)統(tǒng)計接收到的數(shù)據(jù)報數(shù)量、接收到的數(shù)據(jù)中協(xié)議出錯的數(shù)量、正在請求傳輸?shù)臄?shù)量、路由表中可用路由數(shù)量、丟棄的數(shù)量、需要重組/成功重組的數(shù)量等,統(tǒng)計ICMP需要完成發(fā)送/接收的消息數(shù)量、滿足超過TTL的數(shù)量、重定向數(shù)量、時間戳請求/應(yīng)答數(shù)量等;采用IP助手函數(shù)完成。流量繪制模塊:完成總流量、輸入流量、輸出流量、瞬時流量值、最高流量值的顯示;采用訪問注冊表網(wǎng)絡(luò)性能數(shù)據(jù)完成有關(guān)數(shù)據(jù)的獲取,通過流量圖顯示。4.3 流程圖設(shè)計根據(jù)上面對各個功能模塊的劃分,進(jìn)行更進(jìn)一步的分析和設(shè)計,得到數(shù)據(jù)采集
33、、注冊表網(wǎng)絡(luò)性能塊訪問大致的工作流程圖,如圖6與圖7所示。圖 6 數(shù)據(jù)捕獲處理流程4.4 各模塊功能概述與實(shí)現(xiàn)4.4.1 數(shù)據(jù)包采集中各類的關(guān)系經(jīng)過上面的分析與設(shè)計,得到該系統(tǒng)的總體功能結(jié)構(gòu)、工作流程,也確定了從編寫套接字到最后捕獲數(shù)據(jù),要經(jīng)過創(chuàng)建、綁定、設(shè)置工作模式、啟動線程、接收數(shù)據(jù)等一系列的處理操作。為了實(shí)現(xiàn)處理中的每一步操作,設(shè)計了數(shù)據(jù)捕獲的類關(guān)系,如圖8所示。圖 8 數(shù)據(jù)包采集中各類的關(guān)系在上圖中CSockSupport,CSockHelper ,CPackInterDlg,CBinDataDlg等是封裝了各部分主要處理功能的類。且這些類中封裝了和這些類的操作相關(guān)的方法。將在后面對這
34、些類的功能和實(shí)現(xiàn)進(jìn)行詳細(xì)介紹。4.4.2 數(shù)據(jù)包捕獲與分析模塊(1)功能實(shí)現(xiàn)說明該功能模塊主要由封裝的CSockSupport,CsockHelper ,CpackInterDlg,CbinDataDlg四個類完成,下面將對這些類進(jìn)行詳細(xì)說明。CsockSupport類:主要負(fù)責(zé)檢查Socket是否支持2.0版本,在該類中封裝了WSAStartup完成Socket的啟動;CsockHelper類:主要實(shí)現(xiàn)了從獲取本機(jī)信息結(jié)構(gòu)、Socket創(chuàng)建、綁定、設(shè)置、啟動線程、數(shù)據(jù)接收到協(xié)議分析的全部方法,詳細(xì)處理流程見圖9所示。圖 9 CSockHelper類處理流程GetLocalIP實(shí)現(xiàn)獲取本機(jī)地址
35、操作的方法,LPHOSTENT lphp是定義一個主機(jī)信息結(jié)構(gòu),獲取過程由gethostname(szLocname,MAX_HOSTNAME_LAN)與gethostbyname(szLocname)完成;第一個參數(shù)是用于放置本機(jī)名稱的緩沖,第二個參數(shù)是緩沖區(qū)長度,最后利用inet_ntoa將IP地址轉(zhuǎn)化為“.”式地址。StartCapture方法完成套接字的創(chuàng)建、綁定、設(shè)置操作方式和啟動線程;具體完成如下:m_sockCap = socket(AF_INET , SOCK_RAW , IPPROTO_IP);/創(chuàng)建套接字bind(m_sockCap, (PSOCKADDR)&sa,
36、 sizeof(sa);/綁定setsockopt(m_sockCap, SOL_SOCKET, SO_REUSEADDR, (char*)&bopt, sizeof(bopt) ;/設(shè)置操作setsockopt(m_sockCap, IPPROTO_IP, IP_HDRINCL, (char*)&bopt, sizeof(bopt) ;/設(shè)置操作WSAIoctl(m_sockCap,SIO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),dwBufferLen,sizeof(dwBufferLen),&dwBytesRe
37、turned,NULL,NULL);/混雜模式m_hCapThread = CreateThread(NULL, 0, CaptureThread, this, 0, NULL);/啟動線程線程函數(shù)CaptureThread主要完成數(shù)據(jù)的接收。數(shù)據(jù)接收后,將緩沖區(qū)數(shù)據(jù)轉(zhuǎn)化為IP數(shù)據(jù)格式后即可以開始解析過程,協(xié)議名稱獲取如下:for(int i=0; i<MAX_PROTO_NUM; i+)if(ProtoMapi.ProtoNum=iProtocol)return ProtoMapi.ProtoText;return “”;ParseIPPack方法完成數(shù)據(jù)包的解析:int iIphLe
38、n = sizeof(unsigned long) * (pIpheader->h_lenver & 0xf) /獲取數(shù)據(jù)包長度協(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_sockCa
39、p)closesocket(m_sockCap); /關(guān)閉套接字CbinDataDlg類主要完成對已捕獲數(shù)據(jù)的存儲和顯示方法;CpackInterDlg類通過建立CbinDataDlg類和CsockHelper類對象實(shí)現(xiàn)數(shù)據(jù)捕獲、解析、顯示、存儲等,同時它完成對捕獲條件設(shè)置控件、日志記錄控件的編寫,在這里就不做詳細(xì)介紹了。(2)界面設(shè)計(見圖10)圖 10 數(shù)據(jù)捕獲模塊界面4.4.3 流量獲取模塊(1)設(shè)計說明設(shè)計思路:實(shí)際編程時,Windows系統(tǒng)內(nèi)提供了一個系統(tǒng)性能的接口,只需要訪問這個接口就可以得到網(wǎng)絡(luò)性能相關(guān)的數(shù)據(jù),如流量;根據(jù)這個想法,設(shè)計出了本功能模塊的子功能模塊如下:l 訪問性能
40、數(shù)據(jù)子模塊:負(fù)責(zé)對注冊表進(jìn)行訪問,獲取流量數(shù)據(jù);l 顯示子模塊:負(fù)責(zé)將數(shù)據(jù)繪制在窗口中;l 框架子模塊:負(fù)責(zé)消息映射和消息處理;本模塊中,將使用到一個注冊表訪問函數(shù)RegQueryValueEx,它根據(jù)開放的注冊表鍵值與名字查找相關(guān)的類型和數(shù)據(jù)。它的函數(shù)原型如下:LONG RegQueryValueEx(HKEY hKey , LPCTSTR lpValueName , LPDWORD lpReserved , LPDWORD lpType , LPBYTE lpData , LPDWORD lpcbData);參數(shù)說明:l hKey為預(yù)定的注冊表系統(tǒng)鍵值;l lpValueName為需要查詢
41、的目標(biāo)鍵值的名字;l lpReserved保留,但是必須為NULL;l lpType為鍵值類型;l lpData輸入/輸出接收鍵值的數(shù)據(jù);l lpcbData輸入/輸出接收鍵值的緩沖大小標(biāo)志。在WindowsNT下,當(dāng)調(diào)用RegQueryValueEx時,若hKey被設(shè)置為HKEY_PERFORMANCE_DATA返回的數(shù)據(jù)并不是直接顯示被請求的數(shù)據(jù)對象。所以程序需要遍歷整個數(shù)據(jù)塊,數(shù)據(jù)塊中的邏輯結(jié)構(gòu)如圖11所示。圖 11 注冊表網(wǎng)絡(luò)性能數(shù)據(jù)塊邏輯結(jié)構(gòu)參照圖4-6可以很容易地確定性能數(shù)據(jù)塊的查詢過程,從數(shù)據(jù)塊的性能數(shù)據(jù)結(jié)構(gòu)PERF_DATA_BLOCK開始,然后索引到PERF_OBJECT_T
42、YPE結(jié)構(gòu),而PERF_COUNTER_DEFINITION結(jié)構(gòu)可以通過PERF_OBJECT_TYPE的成員HeaderByteLength找到位置偏移,每一個PERF_OBJECT_TYPE的成員DefinitionLength都能確定一個對應(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
43、 = new unsigned char DEFAULT_BUFFER_SIZE;/從RegQueryValueEx返回的值:本例中忽略改變量/從網(wǎng)絡(luò)對象(索引是510)查詢性能數(shù)據(jù)RegQueryValueEx(HKEY_PERFORMANCE_DATA, "510", NULL, &type, data, &size)PERF_DATA_BLOCK *dataBlockPtr = (PERF_DATA_BLOCK *)data;下面詳細(xì)說明,注冊表數(shù)據(jù)性能塊訪問過程的實(shí)現(xiàn):/枚舉鏈表中第一個對象PERF_OBJECT_TYPE *objectPtr =
44、FirstObject(dataBlockPtr);/遍歷鏈表 for(int a=0 ; a<(int)dataBlockPtr->NumObjectTypes ; a+) char nameBuffer255;/判斷是否是網(wǎng)絡(luò)對象索引號是510if(objectPtr->ObjectNameTitleIndex = 510) /偏移變量DWORD processIdOffset = ULONG_MAX;/找到第一個計數(shù)器PERF_COUNTER_DEFINITION *counterPtr = FirstCounter(objectPtr);/遍歷鏈表for(int b=
45、0 ; b<(int)objectPtr->NumCounters ; b+) /判斷接收的數(shù)據(jù)類型是否是我們需要的if(int)counterPtr->CounterNameTitleIndex= CurrentTrafficType) processIdOffset = counterPtr->CounterOffset; /下一個計數(shù)器counterPtr = NextCounter(counterPtr);/數(shù)據(jù)類型不是我們需要的if(processIdOffset = ULONG_MAX) delete data;return 1;/找到第一個實(shí)例(insta
46、nce)PERF_INSTANCE_DEFINITION *instancePtr = FirstInstance(objectPtr);/遍歷整個實(shí)例for(b=0 ; b<objectPtr->NumInstances ; b+) wchar_t *namePtr = (wchar_t *) (BYTE *)instancePtr + instancePtr->NameOffset);/得到這個實(shí)例的PERF_COUNTER_BLOCKPERF_COUNTER_BLOCK *counterBlockPtr = GetCounterBlock(instancePtr);/現(xiàn)
47、在得到了接口的名字char *pName = WideToMulti(namePtr, nameBuffer, sizeof(nameBuffer);POSITION pos = TotalTraffics.FindIndex(b);if(pos!=NULL)fullTraffic = *(DWORD *) (BYTE *)counterBlockPtr + processIdOffset);TotalTraffics.SetAt(pos,fullTraffic);/如果當(dāng)前的接口就是我們選擇的接口if(InterfaceName = iName) traffic = *(DWORD *) (
48、BYTE *)counterBlockPtr + processIdOffset); /判斷處理的接口是否是新的if(CurrentInterface != interfaceNumber) lasttraffic = acttraffic; trafficdelta = 0.0;CurrentInterface = interfaceNumber; else trafficdelta = acttraffic - lasttraffic;lasttraffic = acttraffic;delete data;return(trafficdelta); /下一個實(shí)例instancePtr =
49、 NextInstance(instancePtr); /下一個對象objectPtr = NextObject(objectPtr);delete data;return 0;catch(.)return 0;(2)界面設(shè)計(見圖12)圖 12 流量監(jiān)視模塊界面4.4.4 數(shù)據(jù)統(tǒng)計模塊(1)可以利用微軟的IP助手中的API函數(shù)實(shí)現(xiàn)IP的統(tǒng)計,網(wǎng)絡(luò)管理員通過統(tǒng)計的數(shù)據(jù)可以在一定程度上發(fā)現(xiàn)網(wǎng)絡(luò)性能瓶頸。涉及到的函數(shù)有GetUdpStatistic,GetTcpStatistic,GetIcmpStatistic,GetIStatistic,需要注意的是工程中要加載IPHelpapi.lib庫。函數(shù)調(diào)用結(jié)果通過列表可以直觀顯示出來,網(wǎng)絡(luò)管理人員
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024正式的地區(qū)代理合同范文
- 工程合同功能解析
- 水利工程維修貸款合同
- 2024醫(yī)院藥品供銷合同
- 農(nóng)業(yè)領(lǐng)域合作協(xié)議范本
- 2024年咨詢顧問合作簡單協(xié)議書
- 彩色鋼板工程承包協(xié)議書
- 集裝箱海運(yùn)合同范本
- 2024建筑業(yè)合同范本范文
- 2024個人房產(chǎn)轉(zhuǎn)讓合同
- 小學(xué)綜合實(shí)踐活動-綠色出行教學(xué)課件設(shè)計
- 防校園欺凌-課件(共28張PPT)
- 第6章 智能網(wǎng)聯(lián)汽車測評技術(shù)
- 單向板結(jié)構(gòu)設(shè)計
- 《強(qiáng)化學(xué)習(xí)理論與應(yīng)用》環(huán)境
- 普通高等學(xué)校學(xué)生轉(zhuǎn)學(xué)申請表
- 房租、水、電費(fèi)(專用)收據(jù)Excel模板
- 習(xí)近平總書記關(guān)于教育的重要論述研究學(xué)習(xí)通章節(jié)答案期末考試題庫2023年
- 重癥急性胰腺炎ppt恢復(fù)課件
- 2022江蘇省沿海開發(fā)集團(tuán)限公司招聘23人上岸筆試歷年難、易錯點(diǎn)考題附帶參考答案與詳解
- 鄉(xiāng)鎮(zhèn)衛(wèi)生院6S管理內(nèi)容和要求
評論
0/150
提交評論