![IP數(shù)據(jù)包流量統(tǒng)計(jì)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/a044cf30-0583-434d-86ac-da20cae0f938/a044cf30-0583-434d-86ac-da20cae0f9381.gif)
![IP數(shù)據(jù)包流量統(tǒng)計(jì)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/a044cf30-0583-434d-86ac-da20cae0f938/a044cf30-0583-434d-86ac-da20cae0f9382.gif)
![IP數(shù)據(jù)包流量統(tǒng)計(jì)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/a044cf30-0583-434d-86ac-da20cae0f938/a044cf30-0583-434d-86ac-da20cae0f9383.gif)
![IP數(shù)據(jù)包流量統(tǒng)計(jì)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/a044cf30-0583-434d-86ac-da20cae0f938/a044cf30-0583-434d-86ac-da20cae0f9384.gif)
![IP數(shù)據(jù)包流量統(tǒng)計(jì)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/a044cf30-0583-434d-86ac-da20cae0f938/a044cf30-0583-434d-86ac-da20cae0f9385.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 IP數(shù)據(jù)報(bào)流量統(tǒng)計(jì) 學(xué)生姓名: 指導(dǎo)老師: 摘 要 本課程設(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ù),將其寫入日志文件中或用圖形表示出來。程序中會(huì)用到Winpcap,它主要功能在于獨(dú)立于主機(jī)協(xié)議發(fā)送和接收原始數(shù)據(jù)報(bào)。本次課程設(shè)計(jì)中用VC+實(shí)現(xiàn)基于Winpcap的網(wǎng)絡(luò)數(shù)據(jù)包的捕獲和統(tǒng)計(jì),基于Winpcap的應(yīng)用程序?qū)⒏鶕?jù)獲取網(wǎng)絡(luò)設(shè)備列表;選擇網(wǎng)卡并打開;設(shè)置過濾器;捕獲數(shù)據(jù)包或者發(fā)送數(shù)據(jù)包;列出網(wǎng)卡列表,讓用戶選擇可用的網(wǎng)卡的步驟進(jìn)行編寫,同時(shí)對(duì)于TCP/IP協(xié)議以及IP數(shù)據(jù)抱的格式有了進(jìn)一步的了解和掌握。通
2、過編寫程序從而實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)中IP數(shù)據(jù)包流量的統(tǒng)計(jì)。關(guān)鍵詞 IP數(shù)據(jù)包;流量統(tǒng)計(jì);Winpcap;VC+ 1 引 言隨著Internet技術(shù)的發(fā)展,基于IP協(xié)議的應(yīng)用成為網(wǎng)絡(luò)技術(shù)研究與軟件開發(fā)的一個(gè)重要基礎(chǔ),因此學(xué)習(xí)網(wǎng)絡(luò)層以基本概念,了解IP協(xié)議的基本內(nèi)容,對(duì)于掌握TCP/IP協(xié)議的主要內(nèi)容和網(wǎng)絡(luò)課程的學(xué)習(xí)是十分重要的,通過本次課程設(shè)計(jì),有助于熟悉IP數(shù)據(jù)包格式并加深對(duì)IP協(xié)議的理解。1.1 課程設(shè)計(jì)目的本次課程設(shè)計(jì)主要是通過用VC+編程實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)中IP數(shù)據(jù)包流量的統(tǒng)計(jì),實(shí)際上是編制程序,監(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ù),
3、同時(shí)應(yīng)用Winpcap,Winpcap提供了很好的捕獲網(wǎng)絡(luò)數(shù)據(jù)包的方法,通過本次課程設(shè)計(jì)可以將VC+知識(shí)與Winpcap結(jié)合起來實(shí)現(xiàn)在一段時(shí)間內(nèi)對(duì)IP數(shù)據(jù)包的流量進(jìn)行統(tǒng)計(jì)。加深了對(duì)Winpcap的理解和運(yùn)用能力,同時(shí)也增長了知識(shí),開闊了視野,對(duì)于以后的學(xué)習(xí)有很大的幫助。1.2 課程設(shè)計(jì)的要求(1)理解運(yùn)用VC+軟件實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)中的IP數(shù)據(jù)抱流量的統(tǒng)計(jì)方法和步驟。(2)學(xué)會(huì)文獻(xiàn)檢索的基本方法和綜合運(yùn)用文獻(xiàn)的能力。(3)通過課程設(shè)計(jì)培養(yǎng)嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度,認(rèn)真的工作作風(fēng)。1.3 設(shè)計(jì)平臺(tái) Microsoft Visual C+ 6.02 設(shè)計(jì)原理IP是ICP/IP協(xié)議體系中的網(wǎng)絡(luò)層協(xié)議,TCP、UDP、
4、ICMP和IGMP等其他協(xié)議都是以IP 協(xié)議為基礎(chǔ)的1。程序中用到的Winpcap是 Windows packet capture的縮寫,這是UNIX下的lipbcap移植到Windows下的產(chǎn)物,是Win32環(huán)境下數(shù)據(jù)包捕獲的開放代碼函數(shù)庫。Winpcap由內(nèi)核級(jí)的數(shù)據(jù)包過濾器,底層動(dòng)態(tài)鏈接庫(packet.dll)和一個(gè)高層的獨(dú)立于系統(tǒng)的庫(wpcap.dll)組成。2.1 IP協(xié)議IP是TCP/IP模型中的網(wǎng)絡(luò)層協(xié)議,又稱為互聯(lián)網(wǎng)協(xié)議,是支持網(wǎng)間互連的數(shù)據(jù)報(bào)協(xié)議,它與TCP協(xié)議一起構(gòu)成了TCP/IP協(xié)議族的核心。它提供網(wǎng)間連接的完善功能,包括IP數(shù)據(jù)報(bào)規(guī)定互聯(lián)網(wǎng)范圍內(nèi)的IP地址格式2。在
5、因特網(wǎng)中IP協(xié)議是能使連接到網(wǎng)上的所有計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)相互通信的一套規(guī)則,規(guī)定了計(jì)算機(jī)在因特網(wǎng)上進(jìn)行通信時(shí)應(yīng)當(dāng)遵守的規(guī)則。任何廠家生產(chǎn)的計(jì)算機(jī)系統(tǒng),只要遵守IP協(xié)議就可以與因特網(wǎng)互連互通。IP地址具有唯一性,根據(jù)用戶性質(zhì)的不同,可以分為不同的類別。IP協(xié)議的特點(diǎn)如下:(1) IP協(xié)議是一種不可靠、無連接的數(shù)據(jù)報(bào)傳送協(xié)議。(2) IP協(xié)議是點(diǎn)對(duì)點(diǎn)的網(wǎng)絡(luò)層通信協(xié)議。(3) IP協(xié)議向通信層隱藏了物理網(wǎng)絡(luò)的差異。(4) IP協(xié)議以一種數(shù)據(jù)報(bào)的形式傳輸數(shù)據(jù),每個(gè)數(shù)據(jù)報(bào)獨(dú)立傳輸,可能通過不同路徑傳輸,因此可能不按順序到達(dá)目的地,或者出現(xiàn)重復(fù)。2.2 關(guān)于Winpcap庫Winpcap(windows pa
6、cket capture)是windows平臺(tái)下一個(gè)買費(fèi)的、公共的基于windows的網(wǎng)絡(luò)接口API庫。主要為win32應(yīng)用程序提供訪問網(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è)人防火墻。其功能有:(1) 捕獲原始數(shù)據(jù)包,包括在共享網(wǎng)絡(luò)上各主機(jī)發(fā)送接收的以及相互之間交換的數(shù)據(jù)包;(2) 在數(shù)據(jù)包發(fā)往應(yīng)用程序之前,按照自定義的規(guī)則將某些特殊的數(shù)據(jù)包過濾掉;(3) 在網(wǎng)絡(luò)上發(fā)送原始數(shù)據(jù)包;(4) 收集網(wǎng)絡(luò)通
7、信過程中的統(tǒng)計(jì)信息。 Winpcap是針對(duì)win32平臺(tái)上的抓包和網(wǎng)絡(luò)分析的一個(gè)架構(gòu),它包括一個(gè)核心態(tài)的包過濾器,一個(gè)底層的動(dòng)態(tài)鏈接庫(packet.dll)和一個(gè)高層的不依賴于系統(tǒng)的庫(wpcap.dll)。它由Packet、NPF(Netgroup Packet Filter)、packet.dll、wpcap.dll、Application組成,首先,抓包系統(tǒng)必須繞過操作系統(tǒng)的協(xié)議來訪問在網(wǎng)絡(luò)上傳輸?shù)脑紨?shù)據(jù)包,這就要求一部分運(yùn)行在操作系統(tǒng)核心內(nèi)部,直接與網(wǎng)絡(luò)接口驅(qū)動(dòng)交互。這個(gè)部分是系統(tǒng)依賴的,在Winpcap的解決方案里它被認(rèn)為是一個(gè)設(shè)備驅(qū)動(dòng),稱作NPF。其次,抓包系統(tǒng)必須有用戶級(jí)的程
8、序接口,通過這些接口,用戶程序可以利用內(nèi)核驅(qū)動(dòng)提供的高級(jí)特性。Winpcap提供了兩個(gè)不同的庫:packet.dll和wpcap.dll。前者提供了一個(gè)底層API,伴隨著一個(gè)獨(dú)立于Microsoft操作系統(tǒng)的編程接口,這些API可以直接用來訪問驅(qū)動(dòng)的函數(shù);后者導(dǎo)出了一組更強(qiáng)大的與libpcap一致的高層抓包函數(shù)庫。這些函數(shù)使得數(shù)據(jù)包的捕獲以一種與網(wǎng)絡(luò)硬件和操作系統(tǒng)無關(guān)的方式進(jìn)行。3 程序代碼設(shè)計(jì)步驟根據(jù)以上設(shè)計(jì)原理可以得到流量統(tǒng)計(jì)程序的主要功能模塊如下圖1:取得網(wǎng)絡(luò)適配器列表選擇要監(jiān)控的網(wǎng)絡(luò)適配器編譯并設(shè)置過濾器將網(wǎng)絡(luò)適配器設(shè)置為統(tǒng)計(jì)模式開始主循環(huán)調(diào)用回調(diào)函數(shù)顯示網(wǎng)絡(luò)流量統(tǒng)計(jì)圖 1 流量統(tǒng)計(jì)程
9、序的主要功能圖中取得網(wǎng)絡(luò)適配器列表主要是得到網(wǎng)卡的相關(guān)信息,即網(wǎng)卡的個(gè)數(shù)、連接情況等,選擇要監(jiān)聽的網(wǎng)絡(luò)適配器就是要用戶選擇網(wǎng)卡,編譯并設(shè)置過濾器是為了只捕獲網(wǎng)絡(luò)數(shù)據(jù)流的某些數(shù)據(jù),將網(wǎng)絡(luò)適配器設(shè)置為統(tǒng)計(jì)模式就是接受所有經(jīng)過網(wǎng)卡的數(shù)據(jù)包,包括不是發(fā)給本機(jī)的數(shù)據(jù)包,接下來的任務(wù)就是開始主循環(huán)調(diào)用回調(diào)函數(shù)來顯示網(wǎng)絡(luò)流量了。根據(jù)流量設(shè)計(jì)程序的主要功能,相應(yīng)的算法如下:(1) 取得當(dāng)前網(wǎng)絡(luò)設(shè)備列表;(2) 將用戶選擇的網(wǎng)卡以混雜模式打開,以接收到所有的數(shù)據(jù)包;(3) 設(shè)置過濾器;(4) 捕獲IP數(shù)據(jù)包的源地址進(jìn)行統(tǒng)計(jì)(用鏈表結(jié)構(gòu)進(jìn)行實(shí)現(xiàn))。根據(jù)以上算法得到的程序流程圖如圖2:選取Ethermet網(wǎng)卡獲取網(wǎng)
10、卡列表打開網(wǎng)卡(混雜模式)編譯設(shè)置過濾器捕獲IP包將IP 包源地址加入鏈表NY輸出鏈表內(nèi)容超時(shí)否?結(jié)束開始圖2 程序流程圖 圖中獲取網(wǎng)卡列表是為了得到網(wǎng)卡的相關(guān)信息,以便于用戶進(jìn)行選擇,選取Ethermet網(wǎng)卡是用戶所選擇的網(wǎng)卡類型,編譯設(shè)置過濾器是為了編譯并設(shè)置過濾器是為了只捕獲網(wǎng)絡(luò)數(shù)據(jù)流的某些數(shù)據(jù),打開網(wǎng)卡既將網(wǎng)卡設(shè)置為混雜(統(tǒng)計(jì))模式是為了接受所有經(jīng)過網(wǎng)卡的數(shù)據(jù)包,包括不是發(fā)給本機(jī)的數(shù)據(jù)包,開始主循環(huán)以是否超時(shí)為判斷條件,循環(huán)體內(nèi)主要有捕獲IP 數(shù)據(jù)包、將IP包的源地址加入鏈表、條件判斷,循環(huán)結(jié)束后輸出鏈表內(nèi)容,程序至此結(jié)束?,F(xiàn)將其每一步的具體步驟簡述如下:3.1取得網(wǎng)絡(luò)適配器列表/取得
11、網(wǎng)絡(luò)適配器列表步驟中,alldevs是pcap_if_it指針,指向鏈表頭,errbuf是char類型數(shù)組,存儲(chǔ)錯(cuò)誤信息3。pcap_findalldevs(&alldevs,errbuf);cout<<”網(wǎng)絡(luò)適配器列表:”<<n;for(d=alldevs;d;d=d->next) cout<<+i<<":"<<d->name;if (d->description) cout<<""<<d->description; else cout&
12、lt;<"No description available!"<<'n' 3.2 指定要監(jiān)聽的網(wǎng)絡(luò)適配器并打開cout<<”輸入要監(jiān)聽的網(wǎng)絡(luò)適配器號(hào):”<<I;cin>>inum;for(d=alldevs,i=0;i<inum-1;d=d->next,i+);fp=pcap_open_live(d->name,65536,1,1000,errbuf);3.3 編譯并設(shè)置過濾器/編譯過濾器,fp指向打開的網(wǎng)絡(luò)適配器,fcode為編譯完成后的過濾器存儲(chǔ)地址,“tcp“給出了過濾條件,下一個(gè)
13、參數(shù)表示是否被優(yōu)化(0為false,1為true),最后一個(gè)參數(shù)給出了子網(wǎng)掩碼。pcap_compile(fp,&fcode,”tcp”,1,netmask)pcap_setfilter(fp,&fcode)3.4 設(shè)置網(wǎng)絡(luò)適配器為統(tǒng)計(jì)模式 if(pcap_setmode(fp,MODE_STAT)<0) cout<<”n設(shè)置網(wǎng)絡(luò)適配器模式錯(cuò)誤!n”; pcap_close(fp);3.5 開始主循環(huán),調(diào)用回調(diào)函數(shù)顯示網(wǎng)絡(luò)流量統(tǒng)計(jì)信息/pcap_loop由Winpcap庫定義,對(duì)每個(gè)采集來的數(shù)據(jù)包都用ProcessPacket函數(shù)進(jìn)行處理,fp指向打開的網(wǎng)絡(luò)適
14、配器4pcap_loop(fp,0,dispatcher_handler,(PUCHAR)&st_ts);pcap_close(fp);3.6 回調(diào)函數(shù)的實(shí)現(xiàn)/對(duì)于捕獲到的每一個(gè)數(shù)據(jù)包應(yīng)用此回調(diào)函數(shù)void dispatcher_handler(u_char *state,const struct pcap_pkthdr *header,const u_char *pkt_data) struct timeval *old_ts=(struct timeval *)state; u_int delay; LARGE_INTEGER Bps,Pps; struct tm *ltime;
15、char timestr16; time_t local_tv_sec;/計(jì)算距上一個(gè)數(shù)據(jù)包的時(shí)間延遲,以ms為單位/這個(gè)值是從與一個(gè)數(shù)據(jù)包相關(guān)的時(shí)間戳中截獲的delay=(header->ts.tv_sec-old_ts->tv_sec)*1000000-old_ts->tv_usec+header->ts.tv_usec;/獲得每秒的比特?cái)?shù) Bps.QuadPart=(*(LONGLONG*)(pkt_data+8)*8*1000000)/(delay); /獲得每秒的數(shù)據(jù)包數(shù)Pps.QuadPart=(*(LONGLONG*)(pkt_data)*1000000)
16、/(delay);/將時(shí)間戳轉(zhuǎn)變位可讀的標(biāo)準(zhǔn)格式ltime=localtime(&header->ts.tv_sec);strftime(timestr,sizeof timestr,"%H:%M:%S",ltime);/Print timestampprintf("%s",timestr);/Print the samplesprintf("BPS=%I64u",Bps.QuadPart);printf("PPS=%I64un",Pps.QuadPart);/store current timest
17、ampold_ts->tv_sec=header->ts.tv_sec;old_ts->tv_usec=header->ts.tv_usec;4 結(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í)程序會(huì)檢測(cè)電腦系統(tǒng)中的網(wǎng)卡數(shù),然后選擇程序運(yùn)行時(shí)的網(wǎng)絡(luò)接口,耐心等待兩分鐘后就會(huì)得到程序的運(yùn)行結(jié)果.圖3 系統(tǒng)中網(wǎng)絡(luò)接口數(shù) 圖3為程序運(yùn)行之后系統(tǒng)中的網(wǎng)絡(luò)接
18、口數(shù)。圖4 選擇第三個(gè)網(wǎng)絡(luò)接口 圖4為選擇第三個(gè)網(wǎng)絡(luò)接口的命令行。圖5 兩分鐘之后捕獲的IP地址和數(shù)據(jù)包 圖5為程序運(yùn)行后兩分鐘之后捕獲的IP 地址和數(shù)據(jù)包的信息。5 出現(xiàn)的問題及解決方法在剛開始做此課程設(shè)計(jì)的時(shí)候我只編寫了主程序代碼,并沒有建立工程,后來通過查找資料及文獻(xiàn)才知道要建立一個(gè)C+應(yīng)用工程,而且程序中用到的Winpcap庫文件C+中并沒有,需要自己下載WinPcap_4_1_1.exe和WpdPack_4_1_1.zip,前者是Winpcap的開發(fā)程序,后者是inlude文件和lib文件,這些都是需要自己手動(dòng)添加的,這里include和lib文件夾里的東西VC+6.0里面沒有,出現(xiàn)
19、error:Cannot open include file:pcap.h:No such file or directory這個(gè)問題,就需要添加。具體步驟如下:第一步:點(diǎn)菜單欄上的“工具“,再點(diǎn)擊下拉菜單中的”選項(xiàng)“對(duì)話框把winpcap開發(fā)包里面的lib文件添加進(jìn)去。第二步:點(diǎn)擊菜單欄里的工程設(shè)置,選擇連接在對(duì)象/庫模塊中輸入wpcap.lib和packet.lib,再點(diǎn)C/C+在“預(yù)處理程序定義”下輸入WPCAP和HAVE_REMOTE,要用逗號(hào)隔開。至此,Winpcap環(huán)境已部署好了不會(huì)再出錯(cuò)了。接下來出錯(cuò)的是程序中的一些函數(shù)的參數(shù),比如說int pcap_compile(pcap_t
20、 *p, struct bpf_program *fp,char *str,int optimize, bpf_u_int32 netmask),int pcap_setfilter(pcap_t *p, struct bpf_program *fp)函數(shù)的參數(shù)在程序編譯的時(shí)候會(huì)報(bào)錯(cuò),通過搜集資料及與同學(xué)交流初步更正了錯(cuò)誤,但是程序并不是很順利地運(yùn)行出來。6 結(jié)束語為期兩周的課程設(shè)計(jì)在老師和自己的努力下很快地結(jié)束了,在此期間老師給了我們很大的幫助,老師的認(rèn)真負(fù)責(zé)讓我們不再馬馬乎乎對(duì)待自己的學(xué)業(yè),在課堂上老師也以同樣的責(zé)任心來督促我們認(rèn)真學(xué)習(xí),對(duì)于不懂的問題都會(huì)一一解答,現(xiàn)在也如此,這對(duì)于我們以
21、后步入社會(huì)之后有很大的幫助,無論做任何事情都要認(rèn)真負(fù)責(zé),對(duì)自己負(fù)責(zé)同時(shí)也對(duì)別人負(fù)責(zé)。在老師的指導(dǎo)之余我還認(rèn)真學(xué)習(xí)了其它課本上未曾提到過的知識(shí),比如說網(wǎng)絡(luò)編程方面的知識(shí),這是我們以前所沒有接觸過的,雖然說這給了我們很大的一個(gè)問題但是也同時(shí)給了我們一個(gè)很好的挑戰(zhàn)自己的機(jī)會(huì),以前從未聽過Winpcap,現(xiàn)在我知道了它對(duì)于捕獲網(wǎng)絡(luò)上的一些數(shù)據(jù)信息很有幫助,從而豐富了我的知識(shí),同時(shí)也知道了如何去利用它來為自己服務(wù),這是一個(gè)很大的進(jìn)步。在自己查找資料的同時(shí)也鍛煉了我及時(shí)捕獲有用知識(shí)的能力,我想這是我現(xiàn)在乃至以后最大的一個(gè)財(cái)富,一個(gè)人最重要的就是要懂得如何去學(xué),學(xué)習(xí)不是被動(dòng)的,而是主動(dòng)的,只有這樣我們才能學(xué)
22、得到對(duì)于我們自己有幫助的東西,用VC+編程實(shí)現(xiàn)IP數(shù)據(jù)報(bào)流量統(tǒng)計(jì),開始這對(duì)于我來說是是一個(gè)很模糊的概念,但是當(dāng)我在查找了很多資料之后我不再迷茫,而是慢慢跟著我所要找的資料來靠近我所要達(dá)到的目標(biāo)。這是我們每個(gè)人所要學(xué)會(huì)的。這次的課程設(shè)計(jì)也使我意識(shí)到了理論與實(shí)踐相結(jié)合的重要作用,學(xué)習(xí)到知識(shí)應(yīng)該應(yīng)用到實(shí)踐中。在此次的課程設(shè)計(jì)過程中,熟悉IP包格式和加深對(duì)IP協(xié)議的理解,告訴我們要不斷地學(xué)習(xí)計(jì)算機(jī)方面的知識(shí),精益求精,如今是信息化的時(shí)代,在Internet相當(dāng)發(fā)達(dá)的今天,網(wǎng)絡(luò)編程技術(shù)也變的越來越重要,我們更應(yīng)不斷地提高自己的水平,在每次的程序中能夠有更多的領(lǐng)悟。也讓自己在程序的編譯和應(yīng)用上可以有更大一
23、步的提高。要更好的學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)和其他方便的有關(guān)知識(shí),做到精益求精。了解IP協(xié)議的基本內(nèi)容,對(duì)于掌握TCP/IP協(xié)議的主要內(nèi)容和學(xué)習(xí)網(wǎng)絡(luò)課程是十分重要的,通過本次課程設(shè)計(jì),有助于熟悉IP包格式和加深對(duì)IP協(xié)議的理解。學(xué)好計(jì)算機(jī)及各種匯編語言會(huì)使我們受益匪淺。在這兩周的課程設(shè)計(jì)中我學(xué)到了很多知識(shí),首先,要有理論做實(shí)踐的指導(dǎo)才會(huì)很快很好地達(dá)到自己的目的,而且勤于學(xué)習(xí)和思考是一個(gè)很好的習(xí)慣,要將知識(shí)學(xué)得很扎實(shí)才會(huì)靈活運(yùn)用,這同時(shí)也是我們所必須的,一切新科技的發(fā)現(xiàn)都是這樣的;再次,一切事情都要勤于向有經(jīng)驗(yàn)的人取經(jīng),這樣才能少走彎路;最后,要珍惜和同學(xué)一起討論和思考的機(jī)會(huì),自己的同學(xué)是自己最好的幫手,在
24、討論和爭辯中往往會(huì)使自己有了很好的想法。雖然課程設(shè)計(jì)結(jié)束了,但是我們的學(xué)習(xí)還沒結(jié)束,對(duì)知識(shí)的進(jìn)一步學(xué)習(xí)還需要繼續(xù)。參考文獻(xiàn)1 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)(第五版).北京:電子工業(yè)出版社,20092 佟震亞.現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)教程(第二版).北京:電子工業(yè)出版社,20033 周靄如.C+程序設(shè)計(jì)基礎(chǔ)(第二版).北京:電子工業(yè)出版社,20084 孟威,劉慧寧.C+程序設(shè)計(jì)教程(第三版).北京:機(jī)械工業(yè)出版社,2009附錄1:IP包頭部結(jié)構(gòu)sruct ip_headerUnsigned char ver_ihl; /版本號(hào)(4位)+頭部長度(4位)Unsigned char tos; /服務(wù)類型Unsigned
25、 short tlen; /總長度Unsigned short identification; /標(biāo)識(shí)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)+填充;附錄2: Ip結(jié)點(diǎn)類,存放IP包的源IP地址和其發(fā)送數(shù)據(jù)包個(gè)數(shù)class IPNode private: long m_lIPAddress; long m_lCo
26、unt; 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=pTai
27、l=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()=sourc
28、eIP) pTemp->addCount(); break; /如果鏈表中沒有此IP,則加入鏈表 if(pTemp=NULL) pTail->pNext=new IPNode(sourceIP); pTail=pTail->pNext; pTail->pNext=NULL; ;附錄3:部分主程序void main()/取得網(wǎng)絡(luò)適配器列表,WinPcap提供了pcap_findalldevs_ex() 函數(shù)來實(shí)現(xiàn)該功能: /它返回一個(gè)pcap_if結(jié)構(gòu)的鏈表,每個(gè)這樣的結(jié)構(gòu)都包含了一個(gè)適配器的詳細(xì)信息。 pcap_if_t *alldevs; pcap_if_t *d;
29、int i=0; char errbufPCAP_ERRBUF_SIZE;pcap_t *fp = NULL; struct bpf_program fcode; bpf_u_int32 netmask;int pcap_compile(pcap_t *p, struct bpf_program *fp,char *str,int optimize, bpf_u_int32 netmask); int pcap_setfilter(pcap_t *p, struct bpf_program *fp); / 獲取本地機(jī)器設(shè)備列表 if (pcap_findalldevs_ex(PCAP_SRC_
30、IF_STRING, NULL /* auth is not needed */, &alldevs, errbuf) = -1) cout<<stderr<<"Error in pcap_findalldevs_ex."cout<<'n'cout<<errbuf; exit(1);/ 打印列表 for(d=alldevs; d!=NULL; d=d->next) cout<<+i<<":"<<d->name; if (d->description) cout<<""<<d->description; else cout<<"No description available!"<<'n' if(i =0) cout<<"No interfaces found! Make sure WinPca
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 年產(chǎn)4000噸環(huán)鍛技術(shù)改造項(xiàng)目可行性研究報(bào)告寫作模板-備案審批
- 倉儲(chǔ)結(jié)算合同范本
- 制作船只合同范本
- pe管供貨合同范本
- 2025年高亮度影視柔光燈行業(yè)深度研究分析報(bào)告
- 2025年黑白煙感型攝像機(jī)行業(yè)深度研究分析報(bào)告
- 2025年環(huán)氧鋅磷底漆項(xiàng)目可行性研究報(bào)告
- 2025年鉻釩鋼雙色套筒行業(yè)深度研究分析報(bào)告
- 2023-2029年中國房屋工程建筑市場(chǎng)深度調(diào)研及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 石油鉆床設(shè)備配件項(xiàng)目可行性研究報(bào)告建議書
- BMS基礎(chǔ)知識(shí)培訓(xùn)
- 質(zhì)保管理制度
- 2024年全國卷新課標(biāo)1高考英語試題及答案
- 2024年10月自考13003數(shù)據(jù)結(jié)構(gòu)與算法試題及答案
- 華為經(jīng)營管理-華為激勵(lì)機(jī)制(6版)
- 2024年標(biāo)準(zhǔn)化工地建設(shè)管理實(shí)施細(xì)則(3篇)
- 2024新版《藥品管理法》培訓(xùn)課件
- 干燥綜合征診斷及治療指南
- 糧油廠食品安全培訓(xùn)
- 南京信息工程大學(xué)《教師領(lǐng)導(dǎo)力》2022-2023學(xué)年第一學(xué)期期末試卷
- 電力基本知識(shí)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論