版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計i果程名稱 題目名稱 學(xué)院專業(yè)班級 學(xué)號學(xué)生姓名 指導(dǎo)教師計算機網(wǎng)絡(luò)解析ip數(shù)據(jù)包計算機學(xué)院軟件工程一班2012年4月3日目錄一、概述3二、課程設(shè)計要求3三、預(yù)備知識3四、需求分析5五、可行性分析5六、分殳計基本思路5七、方案設(shè)計6八、程序代碼7九、調(diào)試程序11十、總結(jié)體會12十一、參考資料12一、概述本課程設(shè)計是結(jié)合計算機網(wǎng)絡(luò)課程的教學(xué)目標(biāo),幫助學(xué)生深入理解網(wǎng)絡(luò)的基本工 作原理和協(xié)議的設(shè)計思想,掌握處理網(wǎng)絡(luò)問題的基木方法。要求學(xué)牛獨立完成設(shè) 計題目,培養(yǎng)學(xué)生接受新知識和繼續(xù)學(xué)習(xí)的能力,提高計算機網(wǎng)絡(luò)方面的實踐能 力和加深計算機網(wǎng)絡(luò)理論知識的理解。1、培養(yǎng)學(xué)生正確的設(shè)計思想,理論聯(lián)系實
2、際的工作作風(fēng),嚴(yán)肅認(rèn)真、實事求是 的科學(xué)態(tài)度和勇于探索的創(chuàng)新精神。2、引導(dǎo)學(xué)牛將書木上抽象的概念和具體實現(xiàn)技術(shù)結(jié)合起來,使學(xué)習(xí)深化;鞏固 和加深計算機網(wǎng)絡(luò)課程中所學(xué)的理論知識和實際應(yīng)用能力,培養(yǎng)學(xué)生綜合運 用所學(xué)計算機知識,分析和解決工程技術(shù)問題的能力。3、消除學(xué)生對計算機網(wǎng)絡(luò)理論知識的神秘感,調(diào)動學(xué)生學(xué)習(xí)的積極性與主動性, 進而鍛煉解決實際問題的能力。通過課程設(shè)計訓(xùn)練,基本掌握分析問題,軟件總 體結(jié)構(gòu)設(shè)計,用戶界面的設(shè)計,程序代碼編寫等各方面的基木技能和技巧。4、培養(yǎng)團體協(xié)作精神,獲得初步的網(wǎng)絡(luò)編程應(yīng)用經(jīng)驗,為以后從事生產(chǎn)和科研 工作打下一定的基礎(chǔ).二、課程設(shè)計要求設(shè)計一個解析ip數(shù)據(jù)包的程
3、序。捕獲網(wǎng)絡(luò)中數(shù)據(jù)包,并解析數(shù)據(jù)包的內(nèi)容,加 強對tp數(shù)據(jù)包的結(jié)構(gòu)及tp協(xié)議的相關(guān)問題的理解,從而對tp層的工作原理有一 個更為專業(yè)的了解和認(rèn)識。三、預(yù)備知識互聯(lián)網(wǎng)絡(luò)層是tcp/ip協(xié)議參考模型中的關(guān)鍵部分.ip協(xié)議把傳輸層送來的消息 組裝成tp數(shù)據(jù)包,并把tp數(shù)據(jù)包傳送給數(shù)據(jù)鏈層.tp協(xié)議在tcp/tp協(xié)議族中處 于核心地位,ip協(xié)議制定了統(tǒng)一的ip數(shù)據(jù)包格式,以消除個通信子網(wǎng)屮的差異, 從而為信息發(fā)送方和接收方提供了透明的傳輸通道編制本程序前,首先要對ip 包的格式有一定了解,圖1給出了 ip協(xié)議的數(shù)據(jù)包格式.ip數(shù)據(jù)包的第一個字段是版木字段,其度是4位,表示所使用的ip協(xié)議的版木. 目前
4、的版本是ipv4,版本字段的值是4,下一代版本是ipv6,版本字段值是6.本程 序主要針對版本是ipv4的數(shù)據(jù)包的解析.報頭標(biāo)長字段為4位,它定義了以4b為一個單位的1p包的報文長度.報頭中除了 選項字段和填充域字段外,其他各字段是定長的.因此,ip數(shù)據(jù)包的頭長度在 2040b之間,是可變的.0 4 8 16 19 24 31版本報頭標(biāo)長服務(wù)類型總長度標(biāo)識標(biāo)志片偏移牛存時間協(xié)議頭校驗和源tp地址目的ip地址選項填充域數(shù)據(jù)部分圖1 ip數(shù)據(jù)包的格式服務(wù)類型字段共8位,用于指示路由器如何處理該數(shù)據(jù)包.該字段長度由4位服務(wù)類型(tos)子域和3位優(yōu)先級子域組成,1位為保留位,該字段結(jié)構(gòu)如圖2所示.b
5、7 b6 b5b0b4b3b2bl優(yōu)先級dtrc0圖2服務(wù)類型字段結(jié)構(gòu)優(yōu)先級共有8種,優(yōu)先級越高表明數(shù)據(jù)包越重要表1中列出了各種優(yōu)先級所代表 的意義.表一優(yōu)先子域的說明位數(shù)(b7b6b5)意義網(wǎng)絡(luò)控制網(wǎng)絡(luò)間控制重要(cr1t1c/ecp)即時,優(yōu)先011即吋010立刻001優(yōu)先000普通在4位服務(wù)類型子域中b4, b3, b2, bl分別表示d(延遲),t (吞吐量),r (可靠性)與 c(成本)表2列岀了服務(wù)器類型自域的構(gòu)成.位數(shù)(b4b3b2bl)意義1111安全級最高1000延遲最小0100吞吐量最大0001金錢成本最小0000普通服務(wù)總長度字段為2b,它定義了以字節(jié)為單位的數(shù)據(jù)包的總長
6、度.tp數(shù)據(jù)包的最人長 度為65535b標(biāo)識字段的長度為16位,用于識別ip數(shù)據(jù)包的編號每批數(shù)據(jù)都要有一個標(biāo)識值, 用于讓目的主機判斷新來的數(shù)據(jù)屬于哪個分組.報頭中的標(biāo)志字段如圖7-3所示.標(biāo)志字段共3位,最高位是0.禁止分片標(biāo)志 df(do not fragment)字段的值若為1,表示不能對數(shù)據(jù)包分片;若df值為0,則表 明可以分片分片標(biāo)志mf( more fragment)的值為1,表示接收到的不是最后一 個分片;若mf值為0,表示接收到的是最后一個分片.片偏移字段共13位,說明分片在整個數(shù)據(jù)包中的相對位置.片偏移值是以8b為單 位來記數(shù)的,因此選擇的分片長度應(yīng)該是8b的整數(shù)倍.生存吋間
7、(ttl)字段為8位,用來設(shè)置數(shù)據(jù)包在互聯(lián)網(wǎng)絡(luò)的傳輸過程的壽命,通常 是用一個數(shù)據(jù)包可以經(jīng)過的最多的路由器跳步數(shù)來限定的.協(xié)議字段為8位,表示使用此1p數(shù)據(jù)包的高層協(xié)議類型,常用的協(xié)議號如表7-3 所示.序號協(xié)議名稱序號協(xié)議名稱1icmp17udp2igmp41ipv64ip inip46rsvp6tcp89ospfa81心)表7-3典型的協(xié)議號頭校驗和字段為16位,用于存放檢查報頭錯誤的校驗碼。檢驗的范圍是整個ip 包的報頭。校驗和按如下方法計算:1)將頭校驗和的字段置為0。2)將報頭部分的所有數(shù)據(jù)以16位為單位進行累加,累加方式是求異或。3)將累加的結(jié)果取反碼,就是頭校驗和。當(dāng)收到一個p包
8、時,要檢查報頭是否出錯,就把報頭中的所有數(shù)據(jù)以16位 為單位進行累加,若累加的結(jié)果為0,則報文沒有出錯。地址字段包括源地址和目的地址。源地址和目的地址的長度都是32位,分別 表示發(fā)送數(shù)據(jù)包的源主機和目的主機的tp地址。選項字段的長度范圍為040b,主要用于控制和測試。在使用選項字段的過 程中,有可能出現(xiàn)報頭部分的長度不是32位的整數(shù)倍的情況。如果出現(xiàn)這種情 況,就需要通過填充位來湊齊。四、需求分析在傳輸路徑中,路由器通常連接多個網(wǎng)絡(luò)。不同的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層最大傳輸單 元的長度可能不同,因此路由器在接受到數(shù)據(jù)包,并準(zhǔn)備要轉(zhuǎn)發(fā)到目的主機時, 它必須首先決定要使用哪一個接口網(wǎng)絡(luò),要決定該網(wǎng)絡(luò)的數(shù)據(jù)鏈
9、路層最大傳輸單 元是否允許該數(shù)據(jù)包通過。根據(jù)數(shù)據(jù)包長度來確定是否需要對數(shù)據(jù)包進行分片。 如果數(shù)據(jù)包來自一個能夠通過較大數(shù)據(jù)包的局域網(wǎng),又要通過另一個只能通過較 小的數(shù)據(jù)包的局域網(wǎng),那么就必須對ip數(shù)據(jù)包進行分片。在1p數(shù)據(jù)包分片時,首先要確定片長度。然后將原始1p數(shù)據(jù)包包括報頭分成第 1個片。如果剩下的數(shù)據(jù)仍然超過長度,那么需要進行第2個分片數(shù)據(jù)加上原來 的報頭,構(gòu)成第2個片。這樣一直分割到剩下的數(shù)據(jù)小于片長度為止。五、可行性分析(1)經(jīng)濟可行性適用本計算機安全系統(tǒng)可提高計算機通信流量分析和管理水平,把大量繁瑣工作 簡單化,能夠有效地節(jié)省人力物力,并能夠準(zhǔn)確地進行統(tǒng)計和計算,避免人工統(tǒng) 計或計
10、算所帶來的差錯,保證計算機通信管理高效而有序地進行。(2)技術(shù)可行性本系統(tǒng)前臺采用microsoft公司的visual c+6. 0作為主要開發(fā)工具;該系統(tǒng)在 安全、準(zhǔn)確性和運行速度方面都有一定優(yōu)勢。六、設(shè)計基本思路ip數(shù)據(jù)報的格式說明ip協(xié)議都具有什么功能。其首部,版本冃前廣泛使用的版 本號為4;首部長度站4bit;服務(wù)類型占8bit,其中服務(wù)類型t0s子域占4位, 優(yōu)先級子域占3位,另一位為保留位;總長度字段為2b, ip數(shù)據(jù)包的最大長度 是65535b;標(biāo)識占16bit,它是一個計數(shù)器,用來產(chǎn)牛數(shù)據(jù)報的標(biāo)識;標(biāo)志占 3bit,其中最低為為mf, mf二1吋為后面“還有分片”,mf二0表示
11、這是數(shù)據(jù)報片 中的最后一個,df=o時,表示允許分片;片偏移以8個字節(jié)為偏移單位;生存 時間字段記為ttl,單位為秒;協(xié)議段占8bit,用于指出次數(shù)據(jù)是使用何種協(xié)議, 典型的協(xié)議號有6: tcp, 17: udp, 1: icmpo本程序使用套接字socket編程,將網(wǎng)卡設(shè)為能夠接受流經(jīng)網(wǎng)卡的所有類型的數(shù) 據(jù)包。首先,初始化套接字,然后監(jiān)聽數(shù)據(jù)包,解析數(shù)據(jù)包。socket sock二socket(af_inet,sock_raw, 1pproto_1p)用來創(chuàng)建套接字,其參數(shù) 為通信發(fā)生的區(qū)字段和餐接字的類甸。wsaioctl (sock , io rcvall , &dwbuffer
12、inlen , sizeof (dwbufferlnlen)函數(shù) 用來把網(wǎng)卡設(shè)置為混雜模式。rccv(sock, buffer, 65535, 0)函數(shù)用來接收經(jīng)過的ip包,其參數(shù)分別是套接字描 述符,緩沖區(qū)的地址,緩沖區(qū)的大小。typedef struct iphead " ip_head;用來定義tp頭部數(shù)據(jù)。setsockopt (sock, ippr0t0_ip, ip_hdrincl, (char *)函數(shù)用來獲取本機 ip 地址 htons ()函數(shù)將無符號短整劑轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序的數(shù)據(jù)本程序在windows環(huán)境下利用c+語言編寫。七、方案設(shè)計程序流程框圖:開始生成輸出文
13、件創(chuàng)建原始套接字捕獲ip數(shù)據(jù)包解析ip數(shù)據(jù)包結(jié)束八、程序代碼#include<iostream>#include<winsock2.h>#includc<ws2tcpip. h>#include<fstream#include <windows. h>wpragma comment (lib,,ws2_32/,) /指定連接到網(wǎng)絡(luò)應(yīng)用和 internetdefine io_rcvall _wsaiow(ioc_vendor, 1)typedef struct 1p_head " union /定義聯(lián)合unsigncd unsign
14、ed ;unsignedcharcharcharunsignedvcrsion;headlen;servicetype;short totallen;unsigncd shortidcntificr;unionunsigned short flags;unsignedshort fragoffset;unsigned char timetolive; unsigned char protocol;unsigned short headchecksum; unsigned int sourceaddr;unsigned int dcstinaddr;unsigned char options;
15、ip_head; /定義ip頭部的數(shù)據(jù)結(jié)構(gòu)void main(int argc, char *argv)using namespace std;of str earn outf ile (,zc: logf ile. txt", ios: :out);if(argc!=2)cout<<cndl<<,z請以卜格式輸入命令行:packparsc packet_sum,<<cndl;return;wsadata wsadata;if(wsastartup(makeword(2, 2), &wsadata)!二0)cout<<endl&
16、lt;<z,wsastartup 初始化失敗zz<<endl;return;socket sock=socket(af_tnet, sock_raw, tpproto_tp) ; /三個參分別為通信發(fā) 生的區(qū)字段,套接字的類型,與ip協(xié)議if(sock=lnval!d_socket)cout<<endl<<z,創(chuàng)建 socket 失敗! endl; closesocket(sock);wsacleanup ();bool flag二true;if (sctsockopt(sock, ipproto_ip, ipjidrincl, (char*)&
17、;flag, sizeof(flag)=s0cket_err0r)cout<<endl<<,setsockopt 操作失敗:,z<<wsagetlasterror () <<endl; closesocket (sock);wsacleanup ();char hostname128 ;/獲取主機名i f (gethostname(hostname, 100)二二socketerror) " cout<<endl<<z,gethostname 操作失敗:z,<<wsagetlasterror () &
18、lt;<endl; closesocket(sock);wsacleanup();hostent *phostip; /獲取本地 ipif (phos tip=gethos tbyname(hostname)=null)cout<<endl <<,gethostbyname 操作失敗:,<<wsagetlasterror () <<endl ; closcsockct( sock);wsacleanup ();sockaddr in host addr;/ host_addr sin_family=af_inet; host_addr si
19、n_port二htons(6000);host addr. sin_addr=*(in addr *)phostip->h_addr_list0;if(bind(sock, (psockaddr)&host_addr, sizeof(host_addr)二二s0cket_err0r) cout<<cndl<<,bind 操作失?。?,<<wsagctlasterror () <<cndl; closesocket (sock) ; /綁定網(wǎng)卡wsacleanup ();dword dwbuffcrlen10;dword dwbuffe
20、rlnlen=l;dword dwbytesreturned=0;if(wsaioctl(sock , io rcvall , fedwbufferlnlen , sizeof(dwbufferlnlen), &dwbufferlen, si zeof(dwbufferlen), &dwbytesreturned, null, nui丄)二二socketerror) cout<<endl<<,wsaioctl 操作失敗:,<<wsagetlasterror () <<endl; closesocket (sock) ; /將網(wǎng)卡設(shè)
21、為混雜模式,以接受所有數(shù)據(jù) wsacleanup ();cout<<endl<<,/開始解析 ip 包:,<<endl; char buffer 65535 ; /設(shè)置緩沖區(qū) int packsum=atoi (argvl) ; /字符串轉(zhuǎn)換為整形 for(int i=0;i<packsum;i+)if (recv(sock, buffer, 65535, 0) >0) /四個參數(shù)分別是套接字描述符,緩沖區(qū)的 地址,緩沖區(qū)大小,附加標(biāo)志ip_head ip二*(ip_head *)buffer;cout<<?,z,<<en
22、dl;cout«z,版本:z,<< (ip. version>>4) <<endl; /獲取頭部長度字段cout«z,頭部長度:z,«(ip. headlen &0x0f)*4) «endl; /獲取頭部長度字段 cout< 月艮 務(wù) 類 型 :priority"(ip. scrvicctypc5) «, servicez,«(ip. servicetype»l)&0x0f) <<endl; /優(yōu)先級子域和 tos 子域 cout<<
23、z,總長度:,<<ip. totallen<<endl;/獲取總長度字段 cout<<,z標(biāo)識符:z,<<ip. identif ier<<endl;/獲取標(biāo)識字段cout<<,z 標(biāo) 志 位:z/<< (ip. flags>>15)&0x01) <</z, df=(ip. flags»14)&0x01) «,mf二(ip. flags»13)&0x01) «cndl; /獲得 標(biāo)志字段cout«/z片偏移:(ip
24、. fragoffset&oxlfff) «endl; /獲取分段偏移字段 cout«,z生存周期«(int) ip. timetolive<<endl; /獲取生存時間字段 cout<<z,協(xié)議:protocolz,<<(int) ip. protocol<<endl ; /獲取協(xié)議字段 cout<<z,頭部校驗和:z,<<ip. iicadchccksum<<cndl; /獲取頭校驗和字段 cout«z,原地址«inet_ntoa(*(in_addr
25、 *)&ip. sourceaddr) <<endl; /獲取源 ip地址字段cout<<z,目的 ip 地址:/z«inet_ntoa (* (in addr *)&ip. destinaddr) «endl; / 獲取目的ip地址字段outfile«"endl;outfile«版本: (ip. version>>4) <<endl;outfile<<,/頭部長度(ip. headlen &0x0f)*4) <<endl;outfi le<&
26、lt;,z 服 務(wù) 類 型 :priority(ip. servicetype>>5), scrvicc,z<<(ip. servicetype»l)&0x0f)<<cndl;outfile«/z總長度:,z«ip. totallen«endl;outfile«標(biāo)識符:,<<ip. identifier<<endl;outfile<<?,標(biāo) 志 位:<<(ip. flags»15)&0x01),df二z,« (ip. flag
27、s»14)&0x01) «z,, mf=z,« (ip. flags»13)&0x01) «endl;outfile<< 片偏移:«(ip. fragoffset&oxlfff)«endl; outfile«生存周期: (int) ip. timetolive<<endl; outfile<<,/協(xié)議:protocol(int) ip. protocol<<endl; outfile<<z,頭部校驗和:,<<ip. he
28、adchecksum<<endl;outfile<<,z原地址:,z<<inet_ntoa(*(in_addr *)&ip. sourccaddr) <<cndl; outfile«,z 目的 ip 地址:,z«inet_ntoa(*(in_addr *)&ip. destinaddr) <<endl; " " closcsockct (sock);wsacleanup ();九、調(diào)試程序 程序運行結(jié)果截圖:(1)運行程序:amyprojectsxanalysizippackagexanalysizippackagexdebugxanalysizippackage.exe"請輸入要捕獲ip數(shù)據(jù)包的個數(shù):1口丨回(2)輸入數(shù)據(jù):(3)顯示結(jié)果:s
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)賠償合同法規(guī)條款約定簽署
- 2025年廠區(qū)綠化養(yǎng)護與環(huán)保技術(shù)應(yīng)用合同樣本4篇
- 包頭市中考二模數(shù)學(xué)試卷
- 二零二五年度廚師職業(yè)素養(yǎng)提升雇傭合同4篇
- 二零二五年度專業(yè)印刷品存儲與打印服務(wù)合同3篇
- 二零二五版電子元器件生產(chǎn)車間承包合同模板2篇
- 個人租車給公司合同范本(2024版)
- 二零二五版國際海上貨物運輸合同風(fēng)險評估與保障范本3篇
- 初一綠色指標(biāo)數(shù)學(xué)試卷
- 基于二零二五年度新材料研發(fā)的保密合同2篇
- 2024年人教版小學(xué)三年級信息技術(shù)(下冊)期末試卷附答案
- TB 10012-2019 鐵路工程地質(zhì)勘察規(guī)范
- 新蘇教版三年級下冊科學(xué)全冊知識點(背誦用)
- 鄉(xiāng)鎮(zhèn)風(fēng)控維穩(wěn)應(yīng)急預(yù)案演練
- 腦梗死合并癲癇病人的護理查房
- 蘇教版四年級上冊脫式計算300題及答案
- 犯罪現(xiàn)場保護培訓(xùn)課件
- 扣款通知單 采購部
- 電除顫操作流程圖
- 湖北教育出版社三年級下冊信息技術(shù)教案
- 設(shè)計基礎(chǔ)全套教學(xué)課件
評論
0/150
提交評論