畢業(yè)設(shè)計(jì)(論文)網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩20頁(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、網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn)網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn) 網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn)網(wǎng)絡(luò)流量監(jiān)控及分析工具的設(shè)計(jì)與實(shí)現(xiàn) 摘摘 要要 互聯(lián)網(wǎng)迅速發(fā)展的同時(shí),網(wǎng)絡(luò)安全問(wèn)題日益成為人們關(guān)注的焦點(diǎn),病毒、 惡意攻擊、非法訪問(wè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)在 visual

2、c+6.0 環(huán)境下進(jìn)行開(kāi)發(fā),綜合采用 了 socket-raw、注冊(cè)表編程和 ip 助手 api 等 vc 編程技術(shù),在系統(tǒng)需求分析的 基礎(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)鍵詞關(guān)鍵詞:網(wǎng)絡(luò)管理;數(shù)據(jù)采集;流量統(tǒng)計(jì);winsock2 the design and implementation of monitoring and analyzing tool for network traffic abstract with the rapid deve

3、lopment of internet, network safety has become peoples concern, virus, 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 traf

4、fic system is one of the effective measures to analysis network condition. 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

5、 makes a needs analysis and ability designing based on the study of 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

6、analysis and test of plans and details to implement packets collecting, 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 目目 錄錄 論文總頁(yè)數(shù):22 頁(yè) 1引言

7、.1 1.1課題背景.1 1.2網(wǎng)絡(luò)安全管理的現(xiàn)狀與需求.1 1.3網(wǎng)絡(luò)流量監(jiān)控的引入.1 1.4本文的目的與任務(wù).2 1.5論文結(jié)構(gòu)安排.2 2相關(guān)的概念與技術(shù).2 2.1osi 參考模型與 tcp/ip 體系結(jié)構(gòu).2 2.1.1osi 參考模型.2 2.1.2tcp/ip 體系結(jié)構(gòu).3 2.1.3osi 模型與 tcp/ip 體系結(jié)構(gòu)的區(qū)別.4 2.2傳輸層的編程接口windows 套接字編程技術(shù) .4 2.2.1windows 套接字的概念 .4 2.2.2套接字類型.5 2.2.3涉及的幾個(gè)基本概念.5 2.3原始套接字.5 3網(wǎng)絡(luò)數(shù)據(jù)的采集技術(shù)分析.6 3.1windows 下原始數(shù)

8、據(jù)包捕獲的實(shí)現(xiàn) .6 3.2原始數(shù)據(jù)包捕獲的關(guān)鍵函數(shù).7 4網(wǎng)絡(luò)流量監(jiān)控系統(tǒng)各模塊的設(shè)計(jì)與實(shí)現(xiàn).9 4.1開(kāi)發(fā)背景介紹.9 4.2總體結(jié)構(gòu)設(shè)計(jì).9 4.3流程圖設(shè)計(jì).10 4.4各模塊功能概述與實(shí)現(xiàn).11 4.4.1數(shù)據(jù)包采集中各類的關(guān)系.11 4.4.2數(shù)據(jù)包捕獲與分析模塊.11 4.4.3流量獲取模塊.13 4.4.4數(shù)據(jù)統(tǒng)計(jì)模塊.17 4.4.5常見(jiàn)攻擊分析功能.18 5系統(tǒng)測(cè)試.19 5.1測(cè)試環(huán)境.19 5.1.1硬件環(huán)境.19 5.1.2操作系統(tǒng)及軟件運(yùn)行環(huán)境.19 5.2測(cè)試步驟.19 5.3測(cè)試結(jié)果評(píng)價(jià).19 結(jié) 論.19 參考文獻(xiàn).20 致 謝.21 聲 明.22 第 2 頁(yè)

9、 共 22 頁(yè) 1 1 引言引言 1.11.1 課題背景課題背景 隨著構(gòu)建網(wǎng)絡(luò)基礎(chǔ)技術(shù)和網(wǎng)絡(luò)應(yīng)用的迅速發(fā)展以及用戶對(duì)網(wǎng)絡(luò)性能要求的 提高,使得網(wǎng)絡(luò)管理成為迫切需要解決的問(wèn)題,有效的網(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)里扮演起更為重要的角色。 1.21.2 網(wǎng)絡(luò)安全管理的現(xiàn)狀與需求網(wǎng)絡(luò)安全管理的現(xiàn)狀與需求 目前,在網(wǎng)絡(luò)應(yīng)用不斷深入和技術(shù)頻繁升級(jí)的同時(shí),非法訪問(wèn)、惡意攻擊 等安全威脅也在不斷推陳出新,愈演愈烈。防火墻、vpn、

10、ids、防病毒、身份 認(rèn)證、數(shù)據(jù)加密、安全審計(jì)等安全防護(hù)和管理系統(tǒng)在網(wǎng)絡(luò)中得到了廣泛應(yīng)用。 從網(wǎng)絡(luò)安全專業(yè)管理人員的角度來(lái)說(shuō),最直接的需求就是根據(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ò)的安全水平和可用性、可控制性、可管理性。 1.31.3 網(wǎng)絡(luò)流

11、量監(jiān)控的引入網(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ì)算,從而得到網(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èn)題所在。此外,在網(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ù)定值則

12、報(bào)警,協(xié)助管理員發(fā)現(xiàn)網(wǎng)絡(luò)瓶頸,這樣就能實(shí)現(xiàn)一 定程度上的故障管理。而網(wǎng)絡(luò)流量檢測(cè)本身也涉及到安全管理方面的內(nèi)容。 由此可見(jiàn),對(duì)于一個(gè)有效的網(wǎng)絡(luò)安全管理系統(tǒng)來(lái)說(shuō),功能的實(shí)現(xiàn)都或多或 少的依賴于流量信息的獲取。因此網(wǎng)絡(luò)流量信息的采集可以說(shuō)是網(wǎng)絡(luò)安全管理 系統(tǒng)得以實(shí)現(xiàn)的核心基石。它的應(yīng)用可以在一定程度上檢測(cè)到入侵攻擊,可以 第 3 頁(yè) 共 22 頁(yè) 有效地幫助管理人員進(jìn)行網(wǎng)絡(luò)性能管理,并利用報(bào)警機(jī)制協(xié)助網(wǎng)管人員采取對(duì) 應(yīng)的安全策略與防護(hù)措施,從而減少入侵攻擊所造成的損失。 1.41.4 本本文的目的與任務(wù)文的目的與任務(wù) 該網(wǎng)絡(luò)流量監(jiān)控及分析工具主要用途是通過(guò)實(shí)時(shí)連續(xù)地采集網(wǎng)絡(luò)數(shù)據(jù)并對(duì) 其進(jìn)行統(tǒng)計(jì),得

13、到主要成分性能指標(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)問(wèn)題,后期主要是通過(guò)一些 api 函數(shù)完成對(duì) 各類數(shù)據(jù)信息的統(tǒng)計(jì)。 本系統(tǒng)實(shí)現(xiàn)以下功能: (1)采用 winsock 編寫(xiě)原始套接字 socket-raw 對(duì)數(shù)據(jù)包進(jìn)行采集捕獲, 并可實(shí)現(xiàn)分類及自定義范圍進(jìn)行捕獲; (2)對(duì)捕獲的數(shù)據(jù)包進(jìn)行一定的解析; (3)訪問(wèn)操作系統(tǒng)提供的網(wǎng)絡(luò)性能參數(shù)接口,得到網(wǎng)卡總流量、輸入流量 和輸出流量; (4)系統(tǒng)提供了多種方式顯示結(jié)果,如曲線圖、

14、列表等; (5)使用 ip 幫助 api 獲取網(wǎng)絡(luò)統(tǒng)計(jì)信息; (6)實(shí)現(xiàn)對(duì)部分常見(jiàn)威脅的預(yù)警,可繼續(xù)開(kāi)發(fā)擴(kuò)展其報(bào)警功能。 1.51.5 論文結(jié)構(gòu)安排論文結(jié)構(gòu)安排 本論文圍繞 winsock 標(biāo)準(zhǔn)套接字網(wǎng)絡(luò)編程的各項(xiàng)實(shí)踐內(nèi)容展開(kāi)。具體內(nèi)容 安排如下:第一章是引言,簡(jiǎn)要介紹開(kāi)發(fā)背景、設(shè)計(jì)任務(wù)和論文結(jié)構(gòu)安排;第 二章介紹網(wǎng)絡(luò)基礎(chǔ)理論研究、數(shù)據(jù)包捕獲與流量檢測(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è)試情況。 2 2 相關(guān)的概念與技術(shù)相關(guān)的概念與技術(shù) 2.

15、12.1 osiosi 參考模型與參考模型與 tcp/iptcp/ip 體系結(jié)構(gòu)體系結(jié)構(gòu) 2.1.12.1.1 osiosi 參考模型參考模型 開(kāi)放系統(tǒng)互聯(lián)參考模型 osi 是由國(guó)際標(biāo)準(zhǔn)化組織 iso 制定的標(biāo)準(zhǔn)化開(kāi)放式 的計(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ī)定; 第 4 頁(yè) 共 22 頁(yè) (2)數(shù)據(jù)鏈路層,完成管理數(shù)據(jù)的傳輸,提供差錯(cuò)檢測(cè)和恢復(fù),并且提供 流量控制,最終實(shí)現(xiàn)向上一層提供無(wú)差錯(cuò)、高可靠性的傳輸鏈路; (3

16、)網(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ù)格式問(wèn)題,規(guī)定編碼方式; (7)應(yīng)用層,osi 的最高層,利用應(yīng)用進(jìn)程提供網(wǎng)絡(luò)訪問(wèn)手段。 2.1.22.1.2 tcp/iptcp/ip 體系結(jié)構(gòu)體系結(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é)

17、構(gòu)。tcp/ip 的目的是在網(wǎng)絡(luò)標(biāo)準(zhǔn)不同的情況下解決互聯(lián)問(wèn)題,可以說(shuō),網(wǎng)絡(luò) 互聯(lián)是 tcp/ip 的核心。tcp/ip 的體系結(jié)構(gòu)如圖 2 所示。 圖 2 osi 參考模型與 tcp/ip 結(jié)構(gòu) 圖 1 osi 參考模型 第 5 頁(yè) 共 22 頁(yè) tcp/ip 在設(shè)計(jì)時(shí)重點(diǎn)并沒(méi)有放在具體通信的實(shí)現(xiàn)上,所以對(duì)最后兩層沒(méi)有 做出具體規(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

18、control protocol)或用戶數(shù)據(jù)報(bào)協(xié)議 udp(user datagram protocol)協(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)層。 2.1.32.1.3 osiosi 模型與模型與 tcp/iptcp/ip 體系結(jié)構(gòu)的區(qū)別體系結(jié)構(gòu)的區(qū)別 從前面的分析可以看出 osi 模型和 tcp/

19、ip 體系有許多不同之處,主要體現(xiàn) 在問(wèn)題的處理上面,例如: (1)tcp/ip 一開(kāi)始就考慮的是異構(gòu)網(wǎng)絡(luò)的互聯(lián)問(wèn)題,并將 ip 看作是整個(gè) 體系的重要組成部分,而 iso 并沒(méi)有認(rèn)識(shí)到網(wǎng)際協(xié)議 ip 的重要性,導(dǎo)致最后只 能單獨(dú)劃分一個(gè)子層來(lái)完成 ip 的作用; (2)osi 最開(kāi)始只注意到了面向連接的服務(wù),而 tcp/ip 一開(kāi)始就注意了 面向連接和無(wú)連接的并重。相比起來(lái),tcp/ip 更注重了數(shù)據(jù)傳輸?shù)男?,?osi 則注重了傳輸?shù)目煽啃裕?(4)tcp/ip 雖然分層,但是調(diào)用關(guān)系并不像 osi 那樣嚴(yán)格,減少了不必 要的開(kāi)銷,提高了傳輸效率。 2.22.2 傳輸層的編程接口傳輸層的

20、編程接口windowswindows 套接字編程技術(shù)套接字編程技術(shù) 2.2.12.2.1 windowswindows 套接字的概念套接字的概念 windows 套接字socket,是為windows 系統(tǒng)開(kāi)發(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)用程序開(kāi)發(fā)者、網(wǎng)絡(luò)服務(wù)商的需求,進(jìn)程通過(guò)套接 字的通信域來(lái)完成通信。需要指出的是,套接字主要負(fù)責(zé)控制數(shù)據(jù)的輸入與輸 第 6 頁(yè) 共 22 頁(yè) 出,主要在傳輸層

21、和網(wǎng)絡(luò)層,屏蔽了數(shù)據(jù)鏈路層和物理層2。 2.2.22.2.2 套接字類型套接字類型 根據(jù)通信性質(zhì)把套接字主要分為流式套接字和數(shù)據(jù)報(bào)套接字兩種。它們的 區(qū)別在于流式套接字提供雙向、有序、無(wú)重復(fù)的數(shù)據(jù)流服務(wù),但相對(duì)于數(shù)據(jù)報(bào) 套接字來(lái)說(shuō)系統(tǒng)開(kāi)銷較大。數(shù)據(jù)報(bào)套接字也支持雙向數(shù)據(jù)流,但并不注重傳輸 可靠性、無(wú)重復(fù)性和有序性,但它保留了記錄邊界,由于數(shù)據(jù)報(bào)傳輸效率較高, 所以還是得到了比較廣泛的應(yīng)用。 2.2.32.2.3 涉及的幾個(gè)基本概念涉及的幾個(gè)基本概念 (1)字節(jié)順序,不同的計(jì)算機(jī)采用不同的自己順序存儲(chǔ)數(shù)據(jù),所以在這些 數(shù)據(jù)進(jìn)行通信時(shí)需要進(jìn)行字節(jié)順序的轉(zhuǎn)換,所有傳送給網(wǎng)絡(luò)上套接字函數(shù)的 ip 地址

22、和端口號(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)解決異步問(wèn)題,如“選擇” 、 “重疊” 、 “事件選 擇” 、 “

23、異步選擇”等3。 2.32.3 原始套接字原始套接字 從用戶的角度來(lái)看,標(biāo)準(zhǔn)的流式套接字和數(shù)據(jù)報(bào)套接字這兩類套接字似乎 涵蓋了 tcp/ip 應(yīng)用的全部,因?yàn)榛?tcp/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,

24、tcp, udp 等,不僅這樣,它還可以實(shí)現(xiàn)如偽裝本地 ip、發(fā)送 icmp 包等 功能。 第 7 頁(yè) 共 22 頁(yè) 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 所示。 3 3 網(wǎng)絡(luò)數(shù)據(jù)的采集技術(shù)分析網(wǎng)

25、絡(luò)數(shù)據(jù)的采集技術(shù)分析 3.13.1 windowswindows 下原始數(shù)據(jù)包捕獲的實(shí)現(xiàn)下原始數(shù)據(jù)包捕獲的實(shí)現(xiàn) 網(wǎng)絡(luò)上的數(shù)據(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ù)包的捕獲功能。 圖 4 標(biāo)準(zhǔn)套接與原始套接字的關(guān)系 圖 3 協(xié)議棧層次 第 8 頁(yè) 共 22 頁(yè) 前面已經(jīng)介紹到了,使用原始套接字可以繞過(guò) socket 提供的功能,對(duì)底層 的協(xié)議進(jìn)行使用與開(kāi)發(fā),可以根據(jù)自己的需要生成想要的數(shù)據(jù)報(bào)文等,下面開(kāi)

26、始介紹使用原始套接字對(duì)數(shù)據(jù)包捕獲進(jìn)行開(kāi)發(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ù)幀的收發(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è)置為混

27、雜模式時(shí),網(wǎng)絡(luò)接口才能接收所有的數(shù)據(jù),無(wú)論 地址是否匹配,所以在做本設(shè)計(jì)的時(shí)候一定要設(shè)置為混雜模式才能實(shí)現(xiàn)數(shù)據(jù)的 采集。 第二,需要了解套接字的工作程序和使用方法: 一般來(lái)說(shuō),采用套接字開(kāi)發(fā)網(wǎng)絡(luò)程序需要經(jīng)歷以下幾個(gè)基本步驟: 啟動(dòng)、創(chuàng)建、綁定、監(jiān)聽(tīng)(接受連接) 、連接、發(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)聽(tīng)線程,開(kāi)始接收數(shù)據(jù); (7)退出關(guān)閉套接字。 3.23.2 原始數(shù)據(jù)包捕獲

28、的關(guān)鍵函數(shù)原始數(shù)據(jù)包捕獲的關(guān)鍵函數(shù) (1)啟動(dòng)函數(shù) wsastartup int pascal far wsastartup (dword wversionrequested , lpwsadata lpwsadata); 每一個(gè)套接字應(yīng)用程序都必須調(diào)用該函數(shù)進(jìn)行一系列初始化工作,并且只 有調(diào)用成功返回后,才能開(kāi)始使用套接字,其中參數(shù) wversionrequested 是版 本號(hào),高字節(jié)是次版本號(hào)、低字節(jié)是主版本號(hào),參數(shù) lpwsadata 是指向 wsadata 結(jié)構(gòu)的指針。 第 9 頁(yè) 共 22 頁(yè) (2)套接字創(chuàng)建函數(shù) socket socket socket (int af , in

29、t 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_dgram,采用原始套接字時(shí)用 sock_raw。參數(shù) protocol 是協(xié)議字 段,默認(rèn)情況下可直接設(shè)置為 0。 (3)綁定函數(shù) bind int bind ( socket

30、 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_in short sin_family; /地址族,設(shè)置為 af_inet unsigned short sin_port; /指定的端口號(hào) struct in_addr sin_addr; /ip 地址 char sin_zero8; ; 由于

31、主機(jī)序列與網(wǎng)絡(luò)序列的關(guān)系,在程序中需要使用 htons 等函數(shù)進(jìn)行轉(zhuǎn) 換工作。 (4)設(shè)置接口模式函數(shù) wsaioctl int wsaapi wsaioctl(socket s, dword dwiocontrolcode, lpvoid lpvinbuffer, dword cbinbuffer, lpvoid lpvoutbuffer, dword cboutbuffer, lpdword lpcbbytesreturned, lpwsaoverlapped lpoverlapped, lpwsaoverlapped_completion_routine lpcompletionrout

32、ine); 其中,s 為一個(gè)套接口的句柄,dwiocontrolcode 為操作控制代碼, lpvinbuffer 為輸入緩沖區(qū)的地址,cbinbuffer 為輸入緩沖區(qū)的大小, lpvoutbuffer 為輸出緩沖區(qū)的地址, cboutbuffer 為輸出緩沖區(qū)的大小,lpcbbytesreturned 為輸出實(shí)際字節(jié)數(shù) 的地址,lpoverlapped 為 wsaoverlapped 結(jié)構(gòu)的地址,lpcompletionroutine 第 10 頁(yè) 共 22 頁(yè) 為一個(gè)指向操作結(jié)束后調(diào)用的例程指針。 調(diào)用成功后,wsaioctl 函數(shù)返回 0,否則的話,將返回 invalid_socket

33、 錯(cuò)誤,應(yīng)用程序可通過(guò) wsagetlasterror 來(lái)獲取錯(cuò)誤代碼。 (5)數(shù)據(jù)接收函數(shù) recv int recv (socket s , char* buf ,int len , int flags); 4 4 網(wǎng)絡(luò)流量監(jiān)控系統(tǒng)各模塊的設(shè)計(jì)與實(shí)現(xiàn)網(wǎng)絡(luò)流量監(jiān)控系統(tǒng)各模塊的設(shè)計(jì)與實(shí)現(xiàn) 4.14.1 開(kāi)發(fā)背景介紹開(kāi)發(fā)背景介紹 本設(shè)計(jì)開(kāi)發(fā)平臺(tái)采用 microsoft visualstudio 6.0,它是目前使用比較廣 泛的 winsock 開(kāi)發(fā)平臺(tái),因此具有較強(qiáng)的適應(yīng)性,能夠在很多的操作系統(tǒng)平臺(tái) 上運(yùn)行,設(shè)計(jì)后具有直觀的簡(jiǎn)潔的操作界面,穩(wěn)定性也比較高。 4.24.2 總體結(jié)構(gòu)設(shè)計(jì)總體結(jié)構(gòu)設(shè)計(jì)

34、 通過(guò)收集與分析簡(jiǎn)單網(wǎng)絡(luò)流量監(jiān)控軟件的用戶需求,總結(jié)出以下特征: (1)需要實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)接口數(shù)據(jù)包的盡可能多的捕獲,將網(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ì)某些常見(jiàn)的攻擊進(jìn)行發(fā)現(xiàn)分析。 總合以上系統(tǒng)要求與綜合分析,本系統(tǒng)總體設(shè)計(jì)如下,采用 vc+6.0 編寫(xiě), 系統(tǒng)具有三個(gè)主要功能部分:數(shù)據(jù)捕獲與顯示模

35、塊、流量信息統(tǒng)計(jì)模塊、流量 繪制模塊,如圖 5 所示。 數(shù)據(jù)采集模塊:完成網(wǎng)絡(luò)接口數(shù)據(jù)的捕獲、解析和顯示,可以根據(jù)用戶定 義條件組合來(lái)進(jìn)行捕獲,如只監(jiān)視采用 tcp 或 udp 協(xié)議的數(shù)據(jù)包,也可以監(jiān)視 圖 5 系統(tǒng)總體設(shè)計(jì)結(jié)構(gòu)圖 流量監(jiān)控分析系統(tǒng) 數(shù)據(jù)采集模塊信息統(tǒng)計(jì)模塊流量繪制模塊 第 11 頁(yè) 共 22 頁(yè) 用戶希望關(guān)注的相關(guān) ip 地址的數(shù)據(jù)包,同時(shí)完成數(shù)據(jù)封包日志記錄,提高了系 統(tǒng)的靈活性。同時(shí),在對(duì)數(shù)據(jù)包的解析過(guò)程中對(duì)一些常見(jiàn)入侵攻擊特征進(jìn)行判 斷,發(fā)出預(yù)警。該模塊采用編寫(xiě)原始套接字開(kāi)發(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é)議

36、出錯(cuò)的數(shù)量、正在請(qǐng)求傳輸?shù)臄?shù)量、路由表中可用路由數(shù) 量、丟棄的數(shù)量、需要重組/成功重組的數(shù)量等,統(tǒng)計(jì) icmp 需要完成發(fā)送/接收 的消息數(shù)量、滿足超過(guò) ttl 的數(shù)量、重定向數(shù)量、時(shí)間戳請(qǐng)求/應(yīng)答數(shù)量等;采 用 ip 助手函數(shù)完成。 流量繪制模塊:完成總流量、輸入流量、輸出流量、瞬時(shí)流量值、最高流 量值的顯示;采用訪問(wèn)注冊(cè)表網(wǎng)絡(luò)性能數(shù)據(jù)完成有關(guān)數(shù)據(jù)的獲取,通過(guò)流量圖 顯示。 4.34.3 流程圖設(shè)計(jì)流程圖設(shè)計(jì) 根據(jù)上面對(duì)各個(gè)功能模塊的劃分,進(jìn)行更進(jìn)一步的分析和設(shè)計(jì),得到數(shù)據(jù) 采集、注冊(cè)表網(wǎng)絡(luò)性能塊訪問(wèn)大致的工作流程圖,如圖 6 與圖 7 所示。 圖 6 數(shù)據(jù)捕獲處理流程 第 12 頁(yè) 共 2

37、2 頁(yè) 4.44.4 各模塊功能概述與實(shí)現(xiàn)各模塊功能概述與實(shí)現(xiàn) 4.4.14.4.1 數(shù)據(jù)包采集中各類的關(guān)系數(shù)據(jù)包采集中各類的關(guān)系 經(jīng)過(guò)上面的分析與設(shè)計(jì),得到該系統(tǒng)的總體功能結(jié)構(gòu)、工作流程,也確定 了從編寫(xiě)套接字到最后捕獲數(shù)據(jù),要經(jīng)過(guò)創(chuàng)建、綁定、設(shè)置工作模式、啟動(dòng)線 程、接收數(shù)據(jù)等一系列的處理操作。為了實(shí)現(xiàn)處理中的每一步操作,設(shè)計(jì)了數(shù) 據(jù)捕獲的類關(guān)系,如圖 8 所示。 在上圖中 csocksupport,csockhelper ,cpackinterdlg,cbindatadlg 等 是封裝了各部分主要處理功能的類。且這些類中封裝了和這些類的操作相關(guān)的 方法。將在后面對(duì)這些類的功能和實(shí)現(xiàn)進(jìn)行詳

38、細(xì)介紹。 4.4.24.4.2 數(shù)據(jù)包捕獲與分析模塊數(shù)據(jù)包捕獲與分析模塊 (1)功能實(shí)現(xiàn)說(shuō)明 該功能模塊主要由封裝的 csocksupport,csockhelper ,cpackinterdlg,cbindatadlg 四個(gè)類完成,下面將 對(duì)這些類進(jìn)行詳細(xì)說(shuō)明。 csocksupport 類:主要負(fù)責(zé)檢查 socket 是否支 持 2.0 版本,在該類中封裝了 wsastartup 完成 socket 的啟動(dòng); csockhelper 類:主要實(shí)現(xiàn)了從獲取本機(jī)信息結(jié) 構(gòu)、socket 創(chuàng)建、綁定、設(shè)置、啟動(dòng)線程、數(shù)據(jù)接收 到協(xié)議分析的全部方法,詳細(xì)處理流程見(jiàn)圖 9 所示。 圖 8 數(shù)據(jù)包采集

39、中各類的關(guān)系 第 13 頁(yè) 共 22 頁(yè) 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 地址轉(zhuǎn)化為“.”式地址。 startcapture 方法完成套接字的創(chuàng)建、綁定、設(shè)置操作方式和啟動(dòng)線程; 具體完成如下: m_sockcap = socket(af_inet , sock_raw ,

40、 ipproto_ip);/創(chuàng)建套接字 bind(m_sockcap, (psockaddr)/綁定 setsockopt(m_sockcap, sol_socket, so_reuseaddr, (char*)/設(shè)置操作 setsockopt(m_sockcap, ipproto_ip, ip_hdrincl, (char*)/設(shè)置操作 wsaioctl(m_sockcap,sio_rcvall,/混雜模 式 m_hcapthread = createthread(null, 0, capturethread, this, 0, null);/啟動(dòng)線程 線程函數(shù) capturethread

41、主要完成數(shù)據(jù)的接收。數(shù)據(jù)接收后,將緩沖區(qū)數(shù) 據(jù)轉(zhuǎn)化為 ip 數(shù)據(jù)格式后即可以開(kāi)始解析過(guò)程,協(xié)議名稱獲取如下: for(int i=0; ih_lenver /中斷進(jìn)程 closehandle(m_hcapthread); /關(guān)閉句柄 m_hcapthread = null; if(m_sockcap) closesocket(m_sockcap); /關(guān)閉套接字 cbindatadlg 類主要完成對(duì)已捕獲數(shù)據(jù)的存儲(chǔ)和顯示方法;cpackinterdlg 類通過(guò)建立 cbindatadlg 類和 csockhelper 類對(duì)象實(shí)現(xiàn)數(shù)據(jù)捕獲、解析、顯示、 存儲(chǔ)等,同時(shí)它完成對(duì)捕獲條件設(shè)置控件、日志

42、記錄控件的編寫(xiě),在這里就不 做詳細(xì)介紹了。 (2)界面設(shè)計(jì)(見(jiàn)圖 10) 4.4.34.4.3 流量獲取模塊流量獲取模塊 (1)設(shè)計(jì)說(shuō)明 圖 10 數(shù)據(jù)捕獲模塊界面 第 15 頁(yè) 共 22 頁(yè) 設(shè)計(jì)思路:實(shí)際編程時(shí),windows 系統(tǒng)內(nèi)提供了一個(gè)系統(tǒng)性能的接口,只 需要訪問(wèn)這個(gè)接口就可以得到網(wǎng)絡(luò)性能相關(guān)的數(shù)據(jù),如流量;根據(jù)這個(gè)想法, 設(shè)計(jì)出了本功能模塊的子功能模塊如下: 訪問(wèn)性能數(shù)據(jù)子模塊:負(fù)責(zé)對(duì)注冊(cè)表進(jìn)行訪問(wèn),獲取流量數(shù)據(jù); 顯示子模塊:負(fù)責(zé)將數(shù)據(jù)繪制在窗口中; 框架子模塊:負(fù)責(zé)消息映射和消息處理; 本模塊中,將使用到一個(gè)注冊(cè)表訪問(wèn)函數(shù) regqueryvalueex,它根據(jù)開(kāi)放 的注冊(cè)表

43、鍵值與名字查找相關(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 為鍵值類型; lpdata 輸入/輸出接收鍵值的數(shù)據(jù); lpcbdata 輸入/輸出接收鍵值的緩沖大小標(biāo)志。 在 windo

44、wsnt 下,當(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 所示。 參照?qǐng)D 4-6 可以很容易地確定性能數(shù)據(jù)塊的查詢過(guò)程,從數(shù)據(jù)塊的性能數(shù) 據(jù)結(jié)構(gòu) perf_data_block 開(kāi)始,然后索引到 perf_object_type 結(jié)構(gòu),而 perf_counter_definition 結(jié)構(gòu)可以通過(guò) perf_object_type 的成員 headerbytelength 找到位置偏移,每一個(gè) perf_object_typ

45、e 的成員 definitionlength 都能確定一個(gè)對(duì)應(yīng)的 perf_instance_definition 結(jié)構(gòu), 圖 11 注冊(cè)表網(wǎng)絡(luò)性能數(shù)據(jù)塊邏輯結(jié)構(gòu) 第 16 頁(yè) 共 22 頁(yè) perf_instance_definition 結(jié)構(gòu)決定著 perf_counter_block 結(jié)構(gòu)3。 下面列出了獲得網(wǎng)絡(luò)接口流量的部分關(guān)鍵代碼: /得到當(dāng)前的接口名字 interfacename = interfaces.getat(pos); /開(kāi)辟性能數(shù)據(jù)緩沖 unsigned char *data = new unsigned char default_buffer_size; /從 reg

46、queryvalueex 返回的值:本例中忽略改變量 /從網(wǎng)絡(luò)對(duì)象(索引是 510)查詢性能數(shù)據(jù) regqueryvalueex(hkey_performance_data, 510, null, 下面詳細(xì)說(shuō)明,注冊(cè)表數(shù)據(jù)性能塊訪問(wèn)過(guò)程的實(shí)現(xiàn): /枚舉鏈表中第一個(gè)對(duì)象 perf_object_type *objectptr = firstobject(datablockptr); /遍歷鏈表 for(int a=0 ; anumobjecttypes ; a+) char namebuffer255; /判斷是否是網(wǎng)絡(luò)對(duì)象索引號(hào)是 510 if(objectptr-objectnametitl

47、eindex = 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 = currenttraffictype) processidoffset = counterptr-counteroffset; /下一個(gè)計(jì)數(shù)器

48、counterptr = nextcounter(counterptr); 第 17 頁(yè) 共 22 頁(yè) /數(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 = (wchar_t *) (byte *)instanceptr + inst

49、anceptr-nameoffset); /得到這個(gè)實(shí)例的 perf_counter_block perf_counter_block *counterblockptr = getcounterblock(instanceptr); /現(xiàn)在得到了接口的名字 char *pname = widetomulti(nameptr, namebuffer, sizeof(namebuffer); position pos = totaltraffics.findindex(b); if(pos!=null) fulltraffic = *(dword *) (byte *)counterblockpt

50、r + processidoffset); totaltraffics.setat(pos,fulltraffic); /如果當(dāng)前的接口就是我們選擇的接口 if(interfacename = iname) traffic = *(dword *) (byte *)counterblockptr + processidoffset); /判斷處理的接口是否是新的 if(currentinterface != interfacenumber) lasttraffic = acttraffic; trafficdelta = 0.0; currentinterface = interfacenum

51、ber; else trafficdelta = acttraffic - lasttraffic; lasttraffic = acttraffic; 第 18 頁(yè) 共 22 頁(yè) delete data; return(trafficdelta); /下一個(gè)實(shí)例 instanceptr = nextinstance(instanceptr); /下一個(gè)對(duì)象 objectptr = nextobject(objectptr); delete data; return 0; catch(.) return 0; (2)界面設(shè)計(jì)(見(jiàn)圖 12) 第 19 頁(yè) 共 22 頁(yè) 4.4.44.4.4 數(shù)據(jù)統(tǒng)計(jì)模塊數(shù)據(jù)統(tǒng)計(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ì)(見(jiàn)圖 13) 4.4.54.4.5 常見(jiàn)攻

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論