監(jiān)控IP包的流量_第1頁
監(jiān)控IP包的流量_第2頁
監(jiān)控IP包的流量_第3頁
監(jiān)控IP包的流量_第4頁
監(jiān)控IP包的流量_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、.計算機網絡課程設計報告課題:監(jiān)控 IP 包的流量專 業(yè) 班 級:計科 10101 班姓名(學號):張鳴宇( 201017010103):李 瑋( 201017010143)指 導 教 師:梅曉勇評閱意見:評定成績:目錄指導老師簽名:年月日;.一 目的和意義從社會角度來說,隨著人們對 Internet 的依賴性越來越高,網絡傳輸的業(yè)務類型變得繽紛多彩, 在此背景下, 需要對網絡狀況, 網絡性能進行準確的檢測和評估,而這次課程設計正是對流量工程內容研究。從學習的角度來說,此次課程設計將我們帶入網絡編程領域,進一步網絡知識的應用,監(jiān)控 IP 包的流量課程設計讓我們進一步了解 IP 協議的基本內容,

2、 對于掌握 TCP/IP 協議的主要內容和學習網絡課程是十分重要的,此外,也加深了對 Winpcap 的理解和運用能力, 同時也增長了知識, 開闊了視野, 對于以后的學習有很大的幫助。二基本原理2.1 概述1. IP 協議IP 是 TCP/IP 模型中的網絡層協議,又稱為互聯網協議,是支持網間互連的數據報協議,它與TCP 協議一起構成了 TCP/IP 協議族的核心。它提供網間連接的完善功能,包括IP 數據報規(guī)定互聯網范圍內的IP 地址格式 2 。在因特網中IP 協議是能使連接到網上的所有計算機網絡實現相互通信的一套規(guī)則,規(guī)定了計算機在因特網上進行通信時應當遵守的規(guī)則。任何廠家生產的計算機系統,

3、 只要遵守 IP 協議就可以與因特網互連互通。IP 地址具有唯一性,根據用戶性質的不同,可以分為不同的類別。IP 協議的特點如下:( 1) IP 協議是一種不可靠、無連接的數據報傳送協議。( 2) IP 協議是點對點的網絡層通信協議。( 3) IP 協議向通信層隱藏了物理網絡的差異。( 4) IP 協議以一種數據報的形式傳輸數據,每個數據報獨立傳輸,可能通過不同路徑傳輸,因此可能不按順序到達目的地,或者出現重復。2.關于 Winpcap 庫Winpcap(windows packet capture)是 windows 平臺下一個買費的、公共的基于 windows 的網絡接口 API 庫。主要

4、為 win32 應用程序提供訪問網絡底層的;.能力。Winpcap 的主要功能在于獨立于主機協議 (如 TCP/IP)發(fā)送和接收原始數據報。也就是說, Winpcap 不能阻塞、過濾或控制其他應用程序數據報的收發(fā),它只是監(jiān)聽共享網絡上傳送的數據報。因此,它不能用于 QoS 調度程序或個人防火墻。其功能有:(1) 捕獲原始數據包,包括在共享網絡上各主機發(fā)送接收的以及相互之間交換的數據包;(2) 捕獲原始數據包,包括在共享網絡上各主機發(fā)送接收的以及相互之間(3) 在數據包發(fā)往應用程序之前,按照自定義的規(guī)則將某些特殊的數據包過濾掉;(4) 在網絡上發(fā)送原始數據包;(5) 收集網絡通信過程中的統計信息

5、。2.2 作用對 IP 包流量的控制主要是通過用VC+ 編程實現對網絡中IP 數據包流量的統計,實際上是編制程序,監(jiān)控網絡,捕獲一段時間內網絡上的IP 數據包,按IP 數據包的源地址統計出該源地址在該時間段內發(fā)出的IP 包的個數。程序中會用到 Winpcap,它主要功能在于獨立于主機協議發(fā)送和接收原始數據報。本次課程設計中用 VC+ 實現基于 Winpcap 的網絡數據包的捕獲和統計,基于 Winpcap 的應用程序將根據獲取網絡設備列表; 選擇網卡并打開; 設置過濾器; 捕獲數據包或者發(fā)送數據包;列出網卡列表,讓用戶選擇可用的網卡的步驟進行編寫三 需求分析3.1 系統功能需求分析近年來,網絡

6、病毒的出現和傳播更加劇了網絡狀況的復雜和不穩(wěn)定性. 在此背景下,需要對網絡狀況, 網絡性能進行準確的檢測和評估,而這些正是流量工程的研究內容 . 而流量工程的主要任務是測量和評估網絡的運行狀況,性能。并能夠容易地使網絡的最終用戶看到和理解評估結果,能夠對網絡中的突發(fā)時間能夠做出積極有效的反應, 以及研究和改進網絡協議, 網絡工作模式的機制, 以促進網絡服務的可靠性,保證網絡的正常運行。而我們在在這個課程設計里將編制一個程序,監(jiān)控網絡,捕獲一段時間內網;.絡上的 IP 數據包,按 IP 數據包的源地址統計出該源地址在該時間段內發(fā)出的IP 包的個數,將其寫入日志文件中或用圖形表示出來。3.2 功能

7、函數部分本次課程設計主要運用了以下功能函數:1 系統函數1)pcap_findalldevs(&alldevs,errbuf)說明:用來獲得網卡的列表, alldevs 為網絡適配器的列表的指針 ; char 型指針 ,當打開列表錯誤時返回錯誤信息2)pcap_open_live(head-name,1000,1,1000,errbuf)說明:以混雜模式方式打開網卡, name為要抓取的網絡設備的字符串,最大可抓取的字節(jié)長度為 1000 字節(jié),超時時間為 1000ms,當在超時內上沒有數據到來時對網卡的讀操作將返回錯誤信息3)pcap_compile(fp,&fcode,packet_filt

8、er,1,netmask)說明:編譯過濾器, fp 是對網卡描述符,型號、名字, fcode 是一個 bpf_program 結構的指針,在 pcap_compile()函數中被賦值。 1 表示對結果代碼進行優(yōu)化。 netmask參數指定本地網絡的網絡掩碼4)pcap_setfilter(fp,&fcode)5)說明:設置過濾器, 用來聯系一個在內核驅動上過濾的過濾器,一旦調用,這時所有網絡數據包都將流經相關的過濾器,并拷貝到應用程序中,把 pcap_compile() 構造的 filter 設置到 fp 上 ,6)pcap_freealldevs(alldevs)7)說明:釋放網絡適配器列表

9、空間8)pcap_next_ex(fp,&header,&pkt_data)說明:該函數從網絡設備中讀取一個數據包, fp- 設備指針, header-數據包頭, pkt_data-數據包內容2. 自定義函數1)main(int argc,char *argv)說明:主函數通過調用主函數和其他自定義函數, 實現 IP 包流量監(jiān)控的功能, argv是 argc 第 0 個參數,其中第 0 個參數是程序的全名,以后的參數,命令行后面跟的用戶輸入的參數。2)addNode(long sourceIP)說明:將 IP 結點加入鏈表;.四 概要設計4.1 編程環(huán)境Microsoft Visual C+

10、6.04.2 模塊分析課 程設 計的 主要 目 的是 接收 統計 IP 包 ,所以 主 要任務 就 是設置網卡以 及相 關的 一系 列 操作 ,以 下為 一些 主要 功能 模塊 :(1)取得當前網絡設備列表(在標準輸出上顯示,以讓用戶進行選擇)。(2)將用戶選擇的 Ethernet卡以混雜模式打開,以接收到所有的數據包。(3)編譯并設置過濾器,此處的過濾器為“IP ”。(4)捕獲 IP 包并按包的源地址進行統計(用鏈表結構進行實現)其程序流程圖如下:;.開始獲取網卡列表選取 Ethernet網卡打開網卡編譯并設置過濾器捕獲包將包源地址加入列表否是否超時是顯示鏈表內容結束;.五 詳細設計5.1

11、具體實現過程首先獲取網卡列表是為了得到網卡的相關信息,以便于用戶進行選擇,選取 Ethermet 網卡是用戶所選擇的網卡類型,編譯設置過濾器是為了編譯并設置過濾器是為了只捕獲網絡數據流的某些數據, 打開網卡既將網卡設置為混雜 (統計)模式是為了接受所有經過網卡的數據包, 包括不是發(fā)給本機的數據包, 開始主循環(huán)以是否超時為判斷條件, 循環(huán)體內主要有捕獲 IP 數據包、將 IP 包的源地址加入鏈表、條件判斷,循環(huán)結束后輸出鏈表內容,程序至此結束。具體的實現如下:1 取得網絡適配器列表并找到要監(jiān)聽的網絡適配器,alldevs 是 pcap_if_it指針,指向鏈表頭, errbuf 是 char 類

12、型數組,存儲錯誤信息 3 。 for(d=alldevs;d;d=d-next) /列出網卡列表 ,讓用戶進行選擇cout+j:name;if(d-description)cout descriptionendl;/描述網絡適配器接口for(d=alldevs,i=1;inext,i+);/ 找到選擇的網絡適配器head=d;/2 采用混雜模式打開網絡適配器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);/ 獲得系統時間if(end-beg=min*60)/ 計算系統時間break;if(res=0)continue;/超時ip_header

14、*ih;/找到 I 頭得位置ih=(ip_header*)(pkt_data+14);/14 為以太頭的長度link.addNode(ih-saddr);/將源 IP 地址加入鏈表;.5.2 主要數據結構1) 此次課程設計主要采用了鏈表數據結構,具體的實現如下: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 位 )/服務類型/總長度/標識/標志 +片偏移/生存時間/協議/校驗碼/ 源地址/ 目的地址

16、/選項 +填充;.六 實現與測試6.1 實現與測試1)取得網絡適配器列表并找到要監(jiān)聽的網絡適配器號.2)正在監(jiān)聽 IP 數據包,時間為一分鐘;.3)最后的監(jiān)聽的結果;.七 心得結論在這一周的課程設計里,在老師同學幫助自己以及自己的努力下,我學到了很多的東西。在此期間老師給了我們很大的幫助, 老師的認真負責讓我們不再馬馬乎乎對待自己的學業(yè),在課堂上老師也以同樣的責任心來督促我們認真學習, 對于不懂的問題都會一一解答, 現在也如此, 這對于我們以后步入社會之后有很大的幫助, 無論做任何事情都要認真負責,對自己負責同時也對別人負責。在老師的指導之余,我還學到了一定的課外知識,以前從未聽過 Winpc

17、ap,現在我知道了它對于捕獲網絡上的一些數據信息很有幫助,從而豐富了我的知識,同時也知道了如何去利用它來為自己服務,這是一個很大的進步。做這個題目我從網上找了很多的資料。但也不能盲目相信找來的資料,要通過自己的驗證沒錯誤后才能用。 不但是于此, 別的任何學習方面也一樣。 在自己查找資料的同時也鍛煉了我及時捕獲有用知識的能力, 我想這是我現在乃至以后最大的一個財富, 一個人最重要的就是要懂得如何去學, 學習不是被動的, 而是主動的,只有這樣我們才能學得到對于我們自己有幫助的東西,用VC+ 編程實現 IP 數據報流量統計,開始這對于我來說是是一個很模糊的概念,但是當我在查找了很多資料之后我不再迷茫, 而是慢慢跟著我所要找的資料來靠近我所要達到的目標。這是我們每個人所要學會

溫馨提示

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

評論

0/150

提交評論