監(jiān)控ip包流量 [文檔在線提供].doc_第1頁
監(jiān)控ip包流量 [文檔在線提供].doc_第2頁
監(jiān)控ip包流量 [文檔在線提供].doc_第3頁
監(jiān)控ip包流量 [文檔在線提供].doc_第4頁
監(jiān)控ip包流量 [文檔在線提供].doc_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

目錄一、課程設(shè)計(jì)目的1二、課程設(shè)計(jì)要求1三、課程設(shè)計(jì)分析1四、運(yùn)行結(jié)果:3五、心得體會:3參考文獻(xiàn)3源代碼:3一、課程設(shè)計(jì)目的隨著Internet技術(shù)的發(fā)展,基于IP協(xié)議的應(yīng)用成為網(wǎng)絡(luò)技術(shù)研究與軟件開發(fā)的一個(gè)重要基礎(chǔ),因此學(xué)習(xí)網(wǎng)絡(luò)層以基本概念,了解IP協(xié)議的基本內(nèi)容,對于掌握TCP/IP協(xié)議的主要內(nèi)容和學(xué)習(xí)網(wǎng)絡(luò)課程是十分重要的,通過本次課程設(shè)計(jì),有助于熟悉IP包格式和加深對IP協(xié)議的理解。二、課程設(shè)計(jì)要求編制程序,監(jiān)控網(wǎng)絡(luò),捕獲一段時(shí)間內(nèi)網(wǎng)絡(luò)上的IP數(shù)據(jù)包,按IP數(shù)據(jù)包的源地址統(tǒng)計(jì)出該源地址在該時(shí)間段內(nèi)發(fā)出的IP包的個(gè)數(shù),將其寫入日志文件中或用圖形表示出來(建議用圖形表示出統(tǒng)計(jì)結(jié)果)。程序的具體要求如下:用命令行運(yùn)行:IPStatistic time logfile其中,IPStatistic是程序名;time是設(shè)定的統(tǒng)計(jì)時(shí)間間隔(單位為分鐘,比如,2表示2分鐘);logfile表示統(tǒng)計(jì)結(jié)果寫入的日志文件名(若用圖形表示統(tǒng)計(jì)結(jié)果則可以不選這個(gè)參數(shù))。相關(guān)知識:IP是ICP/IP協(xié)議體系中的網(wǎng)絡(luò)層協(xié)議,TCP、UDP、ICMP和IGMP等其他協(xié)議都是以IP 協(xié)議為基礎(chǔ)的。IP的特點(diǎn)如下:(1) IP協(xié)議是一種不可靠、無連接的數(shù)據(jù)報(bào)傳送協(xié)議。(2) IP協(xié)議是點(diǎn)對點(diǎn)的網(wǎng)絡(luò)層通信協(xié)議。(3) IP協(xié)議向通信層隱藏了物理網(wǎng)絡(luò)的差異。三、課程設(shè)計(jì)分析1課程設(shè)計(jì)中的重點(diǎn)及難點(diǎn)(1)程序中會用到Winpcap, Winpcap是Windows packet capture的縮寫,這是UNIX下的lipbcap移植到Windows下的產(chǎn)物,是Win32環(huán)境下數(shù)據(jù)包捕獲的開放代碼函數(shù)庫。Winpcap由內(nèi)核級的數(shù)據(jù)包過濾器,底層動態(tài)鏈接庫(packet.dll)和一個(gè)高層的獨(dú)立于系統(tǒng)的庫(wpcap.dll)組成。Winpcap提供以下功能:1) 捕獲原始數(shù)據(jù)報(bào),包括共享網(wǎng)絡(luò)上各主機(jī)發(fā)送/接收的數(shù)據(jù)報(bào)以及各主機(jī)之間交換的數(shù)據(jù)報(bào)。2) 在數(shù)據(jù)報(bào)發(fā)往應(yīng)用程序之前,按照自定義的規(guī)則過濾某些特殊的數(shù)據(jù)報(bào)。3) 將用戶構(gòu)造的數(shù)據(jù)報(bào)發(fā)送到網(wǎng)絡(luò)中。4) 統(tǒng)計(jì)網(wǎng)絡(luò)的流量。Winpcap的主要功能在于獨(dú)立于主機(jī)協(xié)議(如TCP/IP)發(fā)送和接收原始數(shù)據(jù)報(bào)。也就是說,Winpcap不能阻塞、過濾或控制其他應(yīng)用程序數(shù)據(jù)報(bào)的收發(fā),它只是監(jiān)聽共享網(wǎng)絡(luò)上傳送的數(shù)據(jù)報(bào)。因此,它不能用于QoS調(diào)度程序或個(gè)人防火墻。 基于Winpcap的應(yīng)用程序一般按照下面幾個(gè)步驟編寫:1) 獲取網(wǎng)絡(luò)設(shè)備列表。2) 選擇網(wǎng)卡并打開。3) 當(dāng)捕獲數(shù)據(jù)包時(shí),可能需要設(shè)置過濾器。4) 捕獲數(shù)據(jù)包或者發(fā)送數(shù)據(jù)包。Packet.dll相關(guān)數(shù)據(jù)結(jié)構(gòu)typedef struct_ADAPTER ADAPTER /描述一個(gè)網(wǎng)絡(luò)適配器typedef struct_PACKET PACKET具 /描述一組網(wǎng)絡(luò)數(shù)據(jù)報(bào)的結(jié)構(gòu)typedef struct NetType NetType /描述網(wǎng)絡(luò)類型的數(shù)據(jù)結(jié)構(gòu)typedef struct npf_if_addr npf_if_addr /描述一個(gè)網(wǎng)絡(luò)適配器的IP地址struct bpf_hdr /數(shù)據(jù)報(bào)頭部struct bpf_stat /當(dāng)前捕獲數(shù)據(jù)報(bào)(2)列出網(wǎng)卡列表,讓用戶選擇可用的網(wǎng)卡。(3)注意過濾器的使用,只需捕獲IP所,別的包都需過濾掉。2參考算法(1)取得當(dāng)前網(wǎng)絡(luò)設(shè)備列表(在標(biāo)準(zhǔn)輸出上顯示,以讓用戶進(jìn)行選擇)。(2)將用戶選擇的Ethernet卡以混雜模式打開,以接收到所有的數(shù)據(jù)包。(3)設(shè)置過濾器,此處的過濾器“IP”。(4)捕獲IP包并按包的源地址進(jìn)行統(tǒng)計(jì)(用鏈表結(jié)構(gòu)進(jìn)行實(shí)現(xiàn))。程序流程如圖1-1所示: 選取Ethermet網(wǎng)卡獲取網(wǎng)卡列表打開網(wǎng)卡(混雜模式)編譯設(shè)置過濾器捕獲IP包將IP 包源地址加入鏈表NY輸出鏈表內(nèi)容超時(shí)否?開始結(jié)束圖1-1程序流程圖四、運(yùn)行結(jié)果:安裝好WinPcap軟件,在VC+界面上點(diǎn)擊工具-選項(xiàng)-目錄。添加Include文件夾下的所有文件和Lib下的所有內(nèi)容,調(diào)試完程序無誤后,點(diǎn)擊開始運(yùn)行“cmd”進(jìn)入目標(biāo)文件夾Debug下運(yùn)行IPI.EXE文件并加入?yún)?shù)2 bl.txt。此時(shí)程序會檢測電腦系統(tǒng)中的網(wǎng)卡數(shù),然后選擇程序運(yùn)行時(shí)的網(wǎng)絡(luò)接口,耐心等待兩分鐘后就會得到程序的運(yùn)行結(jié)果.圖1-2系統(tǒng)中網(wǎng)絡(luò)接口數(shù)圖1-3選擇第三個(gè)網(wǎng)絡(luò)接口圖1-4兩分鐘之后捕獲的ip地址和數(shù)據(jù)包五、心得體會:通過本次計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì),我更加充分的理解了課本上的知識,并能夠加以擴(kuò)展,從而應(yīng)用于實(shí)踐當(dāng)中,這幾天的課程設(shè)計(jì)令我受益匪淺,我意識到我們所學(xué)的東西將來都是要付諸實(shí)踐的,所以一切要從實(shí)際情況出發(fā),理論聯(lián)系實(shí)際,這樣才能真正發(fā)揮我們所具備的能力。這次計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)歷時(shí)一個(gè)星期,在整整七天的日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。以前對于編程工具的使用還處于一知半解的狀態(tài)上,但是經(jīng)過一段上機(jī)的實(shí)踐,對于怎么去排錯(cuò)、查錯(cuò),怎么去看每一步的運(yùn)行結(jié)果。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多編程問題,最后在老師的辛勤指導(dǎo)下,終于游逆而解。同時(shí),在老師的身上我學(xué)得到很多實(shí)用的知識,在次我表示感謝!同時(shí),對給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示忠心的感謝!參考文獻(xiàn)1 吳功宜 胡曉英.計(jì)算機(jī)網(wǎng)課程設(shè)計(jì) 北京:機(jī)械工業(yè)出版社,2007.12.2 張蕘學(xué) 郭國強(qiáng).計(jì)算機(jī)網(wǎng)絡(luò)與Internet教程(第二版) 北京:清華大學(xué)出版社2006.11.3 王春曉 趙艷標(biāo).計(jì)算機(jī)網(wǎng)絡(luò)教程 北京:機(jī)械工業(yè)出版社,2005.08.4 張仁 何云.計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)指導(dǎo) 北京:清華大學(xué)出版社 2006.05.源代碼: IP包頭部結(jié)構(gòu):Struct ip_headerUnsigned char ver_ihl; /版本號(4位)+頭部長度(4位)Unsigned char tos; /服務(wù)類型Unsigned short tlen; /總長度Unsigned short identification;/標(biāo)識Unsigned short flags_fo; /標(biāo)志+片偏移Unsigned char ttl; /生存時(shí)間Unsigned char proto; /協(xié)議Unsigned short crc; /校驗(yàn)和 DWORD saddr; /源地址DWORD daddr; /目的地址Unsigned int op_pad /選項(xiàng)+填充;1) 選擇網(wǎng)卡。/選擇一個(gè)Ethrtnet卡For(d=alldevs;d;d=d-next) If(d-addresses!=NULL)i+;if(head=NULL) head=d;2)給出網(wǎng)卡列表,讓用戶選擇。For(d=alldevs;d;d=d-next);/列出網(wǎng)卡列表,讓用戶進(jìn)行選擇 Cout+j”:”name; If(d-description) Cout”descriptionname,1000,1,1000,errbuf)=NULL) Cout”nunable to open the adapter.”end1; Pcap_freealldevs(alldevs) ; return;4)編譯過濾器并設(shè)置過濾器.If(pcap-compile(fp,&fcode,packet-filter,1,netmask)0)Cout”nunable to compile the packet filter.check the syntax.n” ;Pcap-freealldevs(alldevs) ;return; /設(shè)置過濾器If(pcap-setfilter(fp,&fcode),0)Cout0)Time(&end) ; If(end-beg=min*60) /獲得系統(tǒng)時(shí)間 break; /計(jì)算統(tǒng)計(jì)時(shí)間 if(res=0) continue; /超時(shí) ip_header *ih; / Ih=(ip_header *)(pkt_data+14) ;/14為Ethernet頭的長度 Link.addnode(ih-saddr) ;/將源IP 地址加入鏈表/Ip結(jié)點(diǎn)類,存放IP包的源IP地址和其發(fā)送數(shù)據(jù)包個(gè)數(shù)class IPNodeprivate: long m_lIPAddress; long m_lCount;public: IPNode *pNext; /構(gòu)造函數(shù) IPNode(long sourceIP) m_lIPAddress=sourceIP; m_lCount=1; /數(shù)據(jù)包個(gè)數(shù)加1 void addCount() m_lCount+; /返回?cái)?shù)據(jù)包個(gè)數(shù) long getCount() return m_lCount; /返回IP地址 long getIPAddress() return m_lIPAddress; ;/結(jié)點(diǎn)鏈表class NodeList IPNode *pHead; IPNode *pTail;public: NodeList() pHead=pTail=NULL; NodeList() if(pHead!=NULL) IPNode *pTemp=pHead; pHead=pHead-pNext; delete pTemp; /IP結(jié)點(diǎn)加入鏈表 void addNode(long sourceIP) if(pHead=NULL) pTail=new IPNode(sourceIP); pHead=pTail; pTail-pNext=NULL; else for(IPNode * pTemp=pHead;pTemp;pTemp=pTemp-pNext) if(pTemp-getIPAddress()=sourceIP)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論