版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.計算機網(wǎng)絡課程設計報告課題:監(jiān)控 IP 包的流量專 業(yè) 班 級:計科 10101 班姓名(學號):張鳴宇( 201017010103):李 瑋( 201017010143)指 導 教 師:梅曉勇評閱意見:評定成績:目錄指導老師簽名:年月日;.一 目的和意義從社會角度來說,隨著人們對 Internet 的依賴性越來越高,網(wǎng)絡傳輸?shù)臉I(yè)務類型變得繽紛多彩, 在此背景下, 需要對網(wǎng)絡狀況, 網(wǎng)絡性能進行準確的檢測和評估,而這次課程設計正是對流量工程內容研究。從學習的角度來說,此次課程設計將我們帶入網(wǎng)絡編程領域,進一步網(wǎng)絡知識的應用,監(jiān)控 IP 包的流量課程設計讓我們進一步了解 IP 協(xié)議的基本內容,
2、 對于掌握 TCP/IP 協(xié)議的主要內容和學習網(wǎng)絡課程是十分重要的,此外,也加深了對 Winpcap 的理解和運用能力, 同時也增長了知識, 開闊了視野, 對于以后的學習有很大的幫助。二基本原理2.1 概述1. IP 協(xié)議IP 是 TCP/IP 模型中的網(wǎng)絡層協(xié)議,又稱為互聯(lián)網(wǎng)協(xié)議,是支持網(wǎng)間互連的數(shù)據(jù)報協(xié)議,它與TCP 協(xié)議一起構成了 TCP/IP 協(xié)議族的核心。它提供網(wǎng)間連接的完善功能,包括IP 數(shù)據(jù)報規(guī)定互聯(lián)網(wǎng)范圍內的IP 地址格式 2 。在因特網(wǎng)中IP 協(xié)議是能使連接到網(wǎng)上的所有計算機網(wǎng)絡實現(xiàn)相互通信的一套規(guī)則,規(guī)定了計算機在因特網(wǎng)上進行通信時應當遵守的規(guī)則。任何廠家生產(chǎn)的計算機系統(tǒng),
3、 只要遵守 IP 協(xié)議就可以與因特網(wǎng)互連互通。IP 地址具有唯一性,根據(jù)用戶性質的不同,可以分為不同的類別。IP 協(xié)議的特點如下:( 1) IP 協(xié)議是一種不可靠、無連接的數(shù)據(jù)報傳送協(xié)議。( 2) IP 協(xié)議是點對點的網(wǎng)絡層通信協(xié)議。( 3) IP 協(xié)議向通信層隱藏了物理網(wǎng)絡的差異。( 4) IP 協(xié)議以一種數(shù)據(jù)報的形式傳輸數(shù)據(jù),每個數(shù)據(jù)報獨立傳輸,可能通過不同路徑傳輸,因此可能不按順序到達目的地,或者出現(xiàn)重復。2.關于 Winpcap 庫Winpcap(windows packet capture)是 windows 平臺下一個買費的、公共的基于 windows 的網(wǎng)絡接口 API 庫。主要
4、為 win32 應用程序提供訪問網(wǎng)絡底層的;.能力。Winpcap 的主要功能在于獨立于主機協(xié)議 (如 TCP/IP)發(fā)送和接收原始數(shù)據(jù)報。也就是說, Winpcap 不能阻塞、過濾或控制其他應用程序數(shù)據(jù)報的收發(fā),它只是監(jiān)聽共享網(wǎng)絡上傳送的數(shù)據(jù)報。因此,它不能用于 QoS 調度程序或個人防火墻。其功能有:(1) 捕獲原始數(shù)據(jù)包,包括在共享網(wǎng)絡上各主機發(fā)送接收的以及相互之間交換的數(shù)據(jù)包;(2) 捕獲原始數(shù)據(jù)包,包括在共享網(wǎng)絡上各主機發(fā)送接收的以及相互之間(3) 在數(shù)據(jù)包發(fā)往應用程序之前,按照自定義的規(guī)則將某些特殊的數(shù)據(jù)包過濾掉;(4) 在網(wǎng)絡上發(fā)送原始數(shù)據(jù)包;(5) 收集網(wǎng)絡通信過程中的統(tǒng)計信息
5、。2.2 作用對 IP 包流量的控制主要是通過用VC+ 編程實現(xiàn)對網(wǎng)絡中IP 數(shù)據(jù)包流量的統(tǒng)計,實際上是編制程序,監(jiān)控網(wǎng)絡,捕獲一段時間內網(wǎng)絡上的IP 數(shù)據(jù)包,按IP 數(shù)據(jù)包的源地址統(tǒng)計出該源地址在該時間段內發(fā)出的IP 包的個數(shù)。程序中會用到 Winpcap,它主要功能在于獨立于主機協(xié)議發(fā)送和接收原始數(shù)據(jù)報。本次課程設計中用 VC+ 實現(xiàn)基于 Winpcap 的網(wǎng)絡數(shù)據(jù)包的捕獲和統(tǒng)計,基于 Winpcap 的應用程序將根據(jù)獲取網(wǎng)絡設備列表; 選擇網(wǎng)卡并打開; 設置過濾器; 捕獲數(shù)據(jù)包或者發(fā)送數(shù)據(jù)包;列出網(wǎng)卡列表,讓用戶選擇可用的網(wǎng)卡的步驟進行編寫三 需求分析3.1 系統(tǒng)功能需求分析近年來,網(wǎng)絡
6、病毒的出現(xiàn)和傳播更加劇了網(wǎng)絡狀況的復雜和不穩(wěn)定性. 在此背景下,需要對網(wǎng)絡狀況, 網(wǎng)絡性能進行準確的檢測和評估,而這些正是流量工程的研究內容 . 而流量工程的主要任務是測量和評估網(wǎng)絡的運行狀況,性能。并能夠容易地使網(wǎng)絡的最終用戶看到和理解評估結果,能夠對網(wǎng)絡中的突發(fā)時間能夠做出積極有效的反應, 以及研究和改進網(wǎng)絡協(xié)議, 網(wǎng)絡工作模式的機制, 以促進網(wǎng)絡服務的可靠性,保證網(wǎng)絡的正常運行。而我們在在這個課程設計里將編制一個程序,監(jiān)控網(wǎng)絡,捕獲一段時間內網(wǎng);.絡上的 IP 數(shù)據(jù)包,按 IP 數(shù)據(jù)包的源地址統(tǒng)計出該源地址在該時間段內發(fā)出的IP 包的個數(shù),將其寫入日志文件中或用圖形表示出來。3.2 功能
7、函數(shù)部分本次課程設計主要運用了以下功能函數(shù):1 系統(tǒng)函數(shù)1)pcap_findalldevs(&alldevs,errbuf)說明:用來獲得網(wǎng)卡的列表, alldevs 為網(wǎng)絡適配器的列表的指針 ; char 型指針 ,當打開列表錯誤時返回錯誤信息2)pcap_open_live(head-name,1000,1,1000,errbuf)說明:以混雜模式方式打開網(wǎng)卡, name為要抓取的網(wǎng)絡設備的字符串,最大可抓取的字節(jié)長度為 1000 字節(jié),超時時間為 1000ms,當在超時內上沒有數(shù)據(jù)到來時對網(wǎng)卡的讀操作將返回錯誤信息3)pcap_compile(fp,&fcode,packet_filt
8、er,1,netmask)說明:編譯過濾器, fp 是對網(wǎng)卡描述符,型號、名字, fcode 是一個 bpf_program 結構的指針,在 pcap_compile()函數(shù)中被賦值。 1 表示對結果代碼進行優(yōu)化。 netmask參數(shù)指定本地網(wǎng)絡的網(wǎng)絡掩碼4)pcap_setfilter(fp,&fcode)5)說明:設置過濾器, 用來聯(lián)系一個在內核驅動上過濾的過濾器,一旦調用,這時所有網(wǎng)絡數(shù)據(jù)包都將流經(jīng)相關的過濾器,并拷貝到應用程序中,把 pcap_compile() 構造的 filter 設置到 fp 上 ,6)pcap_freealldevs(alldevs)7)說明:釋放網(wǎng)絡適配器列表
9、空間8)pcap_next_ex(fp,&header,&pkt_data)說明:該函數(shù)從網(wǎng)絡設備中讀取一個數(shù)據(jù)包, fp- 設備指針, header-數(shù)據(jù)包頭, pkt_data-數(shù)據(jù)包內容2. 自定義函數(shù)1)main(int argc,char *argv)說明:主函數(shù)通過調用主函數(shù)和其他自定義函數(shù), 實現(xiàn) IP 包流量監(jiān)控的功能, argv是 argc 第 0 個參數(shù),其中第 0 個參數(shù)是程序的全名,以后的參數(shù),命令行后面跟的用戶輸入的參數(shù)。2)addNode(long sourceIP)說明:將 IP 結點加入鏈表;.四 概要設計4.1 編程環(huán)境Microsoft Visual C+
10、6.04.2 模塊分析課 程設 計的 主要 目 的是 接收 統(tǒng)計 IP 包 ,所以 主 要任務 就 是設置網(wǎng)卡以 及相 關的 一系 列 操作 ,以 下為 一些 主要 功能 模塊 :(1)取得當前網(wǎng)絡設備列表(在標準輸出上顯示,以讓用戶進行選擇)。(2)將用戶選擇的 Ethernet卡以混雜模式打開,以接收到所有的數(shù)據(jù)包。(3)編譯并設置過濾器,此處的過濾器為“IP ”。(4)捕獲 IP 包并按包的源地址進行統(tǒng)計(用鏈表結構進行實現(xiàn))其程序流程圖如下:;.開始獲取網(wǎng)卡列表選取 Ethernet網(wǎng)卡打開網(wǎng)卡編譯并設置過濾器捕獲包將包源地址加入列表否是否超時是顯示鏈表內容結束;.五 詳細設計5.1
11、具體實現(xiàn)過程首先獲取網(wǎng)卡列表是為了得到網(wǎng)卡的相關信息,以便于用戶進行選擇,選取 Ethermet 網(wǎng)卡是用戶所選擇的網(wǎng)卡類型,編譯設置過濾器是為了編譯并設置過濾器是為了只捕獲網(wǎng)絡數(shù)據(jù)流的某些數(shù)據(jù), 打開網(wǎng)卡既將網(wǎng)卡設置為混雜 (統(tǒng)計)模式是為了接受所有經(jīng)過網(wǎng)卡的數(shù)據(jù)包, 包括不是發(fā)給本機的數(shù)據(jù)包, 開始主循環(huán)以是否超時為判斷條件, 循環(huán)體內主要有捕獲 IP 數(shù)據(jù)包、將 IP 包的源地址加入鏈表、條件判斷,循環(huán)結束后輸出鏈表內容,程序至此結束。具體的實現(xiàn)如下:1 取得網(wǎng)絡適配器列表并找到要監(jiān)聽的網(wǎng)絡適配器,alldevs 是 pcap_if_it指針,指向鏈表頭, errbuf 是 char 類
12、型數(shù)組,存儲錯誤信息 3 。 for(d=alldevs;d;d=d-next) /列出網(wǎng)卡列表 ,讓用戶進行選擇cout+j:name;if(d-description)cout descriptionendl;/描述網(wǎng)絡適配器接口for(d=alldevs,i=1;inext,i+);/ 找到選擇的網(wǎng)絡適配器head=d;/2 采用混雜模式打開網(wǎng)絡適配器if(fp=pcap_open_live(head-name,1000,1,1000,errbuf)=NULL)coutnUnable to open the adapter.endl;pcap_freealldevs(alldevs);r
13、eturn;3 編譯并設置過濾器if(pcap_compile(fp,&fcode,packet_filter,1,netmask)0) /編譯并設置過濾器;.coutnUnable to compile the packet filter.Check the syntax.n;pcap_freealldevs(alldevs);return;if(pcap_setfilter(fp,&fcode)0) / 設置濾波器cout=0)time(&end);/ 獲得系統(tǒng)時間if(end-beg=min*60)/ 計算系統(tǒng)時間break;if(res=0)continue;/超時ip_header
14、*ih;/找到 I 頭得位置ih=(ip_header*)(pkt_data+14);/14 為以太頭的長度link.addNode(ih-saddr);/將源 IP 地址加入鏈表;.5.2 主要數(shù)據(jù)結構1) 此次課程設計主要采用了鏈表數(shù)據(jù)結構,具體的實現(xiàn)如下:class NodeListIPNode *pHead;IPNode *pTail;public:NodeList()pHead=pTail=NULL;NodeList()if(pHead!=NULL)IPNode *pTemp=pHead;pHead=pHead-pNext;delete pTemp;2)IP 包頭部結構/struct
15、 ip_headerunsigned char ver_ihl; unsigned char tos; unsigned short tlen; unsigned short identification; unsigned short flags_fo; unsigned char tll; unsigned char proto; unsigned short crc; DWORD saddr;DWORD daddr;unsigned int op_pad;/ 版本號 (4 位 )+頭部長度 (4 位 )/服務類型/總長度/標識/標志 +片偏移/生存時間/協(xié)議/校驗碼/ 源地址/ 目的地址
16、/選項 +填充;.六 實現(xiàn)與測試6.1 實現(xiàn)與測試1)取得網(wǎng)絡適配器列表并找到要監(jiān)聽的網(wǎng)絡適配器號.2)正在監(jiān)聽 IP 數(shù)據(jù)包,時間為一分鐘;.3)最后的監(jiān)聽的結果;.七 心得結論在這一周的課程設計里,在老師同學幫助自己以及自己的努力下,我學到了很多的東西。在此期間老師給了我們很大的幫助, 老師的認真負責讓我們不再馬馬乎乎對待自己的學業(yè),在課堂上老師也以同樣的責任心來督促我們認真學習, 對于不懂的問題都會一一解答, 現(xiàn)在也如此, 這對于我們以后步入社會之后有很大的幫助, 無論做任何事情都要認真負責,對自己負責同時也對別人負責。在老師的指導之余,我還學到了一定的課外知識,以前從未聽過 Winpc
17、ap,現(xiàn)在我知道了它對于捕獲網(wǎng)絡上的一些數(shù)據(jù)信息很有幫助,從而豐富了我的知識,同時也知道了如何去利用它來為自己服務,這是一個很大的進步。做這個題目我從網(wǎng)上找了很多的資料。但也不能盲目相信找來的資料,要通過自己的驗證沒錯誤后才能用。 不但是于此, 別的任何學習方面也一樣。 在自己查找資料的同時也鍛煉了我及時捕獲有用知識的能力, 我想這是我現(xiàn)在乃至以后最大的一個財富, 一個人最重要的就是要懂得如何去學, 學習不是被動的, 而是主動的,只有這樣我們才能學得到對于我們自己有幫助的東西,用VC+ 編程實現(xiàn) IP 數(shù)據(jù)報流量統(tǒng)計,開始這對于我來說是是一個很模糊的概念,但是當我在查找了很多資料之后我不再迷茫, 而是慢慢跟著我所要找的資料來靠近我所要達到的目標。這是我們每個人所要學會
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車美容隔斷施工合同
- 風力發(fā)電機組裝生產(chǎn)線合同
- 電商客服人員聘用合同范例
- 私募基金協(xié)議休假管理辦法
- 老年公寓保健員招聘協(xié)議
- 電子產(chǎn)品招投標委托協(xié)議
- 退房協(xié)議書中
- 古董居間合同范例
- 郵輪旅游貨物裝卸合同三篇
- 貴金屬供應合同(2篇)
- 影視理論基礎知識
- 中考復習-初中英語單詞表大全(2182個帶音標)
- 腹主動脈瘤護理查房課件(PPT 55頁)
- 農(nóng)業(yè)比較效益低的成因及應對
- 生產(chǎn)部績效手冊ppt課件
- 藍色唯美創(chuàng)意潑水節(jié)主題宣傳PPT模板課件
- 小學一年級上冊數(shù)學20以內進位加法單元測試卷1
- 直觀教具在小學英語詞匯教學中的運用初探
- 《制冷設備原理與維修》期末試卷試題及參考答案
- 初中生物教學儀器配備明細目錄
- 供水管道工程現(xiàn)場管理辦法
評論
0/150
提交評論