




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、任務(wù)三 網(wǎng)絡(luò)編程一、實(shí)驗(yàn)?zāi)康牟东@本機(jī)網(wǎng)卡的IP包,對(duì)捕獲的IP包進(jìn)行解析。要求必須輸出以下字段:版本號(hào)、總長度、標(biāo)志位、片偏移、協(xié)議、源地址和目的地址。二、實(shí)驗(yàn)環(huán)境平臺(tái):Windows編程環(huán)境:VC 6.0語言:C+三、實(shí)驗(yàn)原理 3.1 數(shù)據(jù)報(bào)格式 以太幀由一個(gè)包含三個(gè)字段的幀頭開始,前兩個(gè)字段包含了物理地址,各六個(gè)字節(jié),頭部的第三個(gè)字段包含了 16 位的以太幀類型,幀頭后面是數(shù)據(jù)區(qū)。根據(jù)幀類型可以判斷是哪種數(shù)據(jù)包,一般常用的有 0X0080(IP 數(shù)據(jù)包)、 0X0806(ARP 請(qǐng)求應(yīng)答)和 0X8035(RARP 請(qǐng)求應(yīng)答)三種類型。TCPIP 協(xié)議簇中位于網(wǎng)絡(luò)層的協(xié)議,也是最為核心的協(xié)
2、議。所有的 TCP, UDP, ICMP及 IGMP 數(shù)據(jù)都以 IP 數(shù)據(jù)報(bào)格式傳輸。IP 協(xié)議提供了無連接的、不可靠的數(shù)據(jù)傳輸服務(wù)。同時(shí)IP 協(xié)議的一個(gè)重要功能是為網(wǎng)絡(luò)上的包傳遞提供路由支持。TCPIP 協(xié)議使用 IP 數(shù)據(jù)報(bào)這個(gè)名字來指代一個(gè)互聯(lián)網(wǎng)數(shù)據(jù)包。IP 數(shù)據(jù)報(bào)由兩部分組成,前面的頭部和后面的數(shù)據(jù)區(qū),頭部含有描述該數(shù)據(jù)報(bào)的信息,包括源 IP 地址和目的 IP 地址等。在 IP 數(shù)據(jù)報(bào)的報(bào)頭中的眾多信息可根據(jù)協(xié)議類型字段區(qū)分出該數(shù)據(jù)包的類型,常用的有TCP 包、 UDP 包、 ICMP 包等,各格式分別如下所示:IP數(shù)據(jù)報(bào)格式TCP數(shù)據(jù)報(bào)格式ICMP數(shù)據(jù)報(bào)格式UDP數(shù)據(jù)報(bào)格式3.2 捕
3、獲數(shù)據(jù)包方法目前常用的捕獲數(shù)據(jù)包的方法有原始套接字、LibPcap、WinPcap和JPcap等方法。本次實(shí)驗(yàn)選用套接字方法。套接字是網(wǎng)絡(luò)應(yīng)用編程接口。應(yīng)用程序可以使用它進(jìn)行網(wǎng)絡(luò)通信而不需要知道底層發(fā)生的細(xì)節(jié)。有時(shí)需要自己生成一些定制的數(shù)據(jù)包或者功能并希望繞開Socket提供的功能,原始套接字(RawSocket)滿足了這樣的要求。原始套接字能夠生成自己的數(shù)據(jù)報(bào)文,包括報(bào)頭和數(shù)據(jù)報(bào)本身的內(nèi)容。通過原始套接字,可以更加自如地控制Windows下的多種協(xié)議,而且能夠?qū)W(wǎng)絡(luò)底層的傳輸機(jī)制進(jìn)行控制。網(wǎng)絡(luò)數(shù)據(jù)包截獲機(jī)制一般指通過截獲整個(gè)網(wǎng)絡(luò)的所有信息流,根據(jù)信息源主機(jī),目標(biāo)主機(jī),服務(wù)協(xié)議端口等信息,簡(jiǎn)單
4、過濾掉不關(guān)心的數(shù)據(jù),再將用戶感興趣的數(shù)據(jù)發(fā)送給更高層的應(yīng)用程序進(jìn)行分析。一般數(shù)據(jù)包的傳輸路徑依次為網(wǎng)卡、設(shè)備驅(qū)動(dòng)層、數(shù)據(jù)鏈路層、 IP 層、傳輸層、最后到達(dá)應(yīng)用程序。IP 數(shù)據(jù)包的捕獲就是將經(jīng)過數(shù)據(jù)鏈路層的以太網(wǎng)幀拷貝出一個(gè)備份,傳送給 IP 數(shù)據(jù)包捕獲程序進(jìn)行相關(guān)的處理。IP 數(shù)據(jù)包的捕獲程序一般由數(shù)據(jù)包捕獲函數(shù)庫和數(shù)據(jù)包分析器組成。數(shù)據(jù)包捕獲函數(shù)庫是一個(gè)獨(dú)立于操作系統(tǒng)的標(biāo)準(zhǔn)捕獲函數(shù)庫。主要提供一組可用于查找網(wǎng)絡(luò)接口名稱、打開選定的網(wǎng)絡(luò)接口、初始化、設(shè)置包過濾條件、編譯過濾代碼、捕獲數(shù)據(jù)包等功能函數(shù)。對(duì)捕獲程序而言,只需要調(diào)用數(shù)據(jù)包捕獲函數(shù)庫的這些函數(shù)就能獲得所期望的 IP 數(shù)據(jù)包。這種捕獲
5、程序與數(shù)據(jù)包捕獲函數(shù)庫分離的機(jī)制,使得編寫的程序具有很好的可移植性。IP 數(shù)據(jù)包捕獲程序的核心部分就是數(shù)據(jù)包分析器。數(shù)據(jù)包分析器應(yīng)具有識(shí)別和理解各種協(xié)議格式(IP、 TCP、 UCP、 ICMP 協(xié)議)和幀格式的能力,并對(duì)捕獲的數(shù)據(jù)進(jìn)行分析和統(tǒng)計(jì)處理。編寫數(shù)據(jù)包捕獲程序的主要工作就是如何實(shí)現(xiàn)數(shù)據(jù)包分析器的功能。3.3 數(shù)據(jù)包捕獲與解析的程序設(shè)計(jì)首先對(duì)以太網(wǎng)幀頭進(jìn)行結(jié)構(gòu)體定義,總共有以下 13 項(xiàng)內(nèi)容:Version、HeadLen、ServiceType、 TotalLen、Identifier、Flags、FragOffset、TimeToLive、Protocol、HeadChecksum
6、、SourceAddr、DestinAddr、Options。根據(jù)數(shù)據(jù)包的捕獲機(jī)制,分別對(duì)以上 13 個(gè)內(nèi)容編寫捕獲的 C 語言程序,進(jìn)行一一捕獲,通過開始的運(yùn)行程序中運(yùn)行編譯程序后所得到的.exe 文件,就可以看到捕獲到的信息。捕獲成功之后,最后將其各個(gè)信息進(jìn)行解析,并寫到一個(gè)文件之中。以上各個(gè)程序的編寫都是在 Visual Stdio C+ 6.0 編譯器中完成。3.4 網(wǎng)卡設(shè)置為了獲取網(wǎng)絡(luò)中的IP數(shù)據(jù)包,必須對(duì)網(wǎng)卡進(jìn)行編程,在這里使用套接字進(jìn)行編程。但是,在通常情況下,網(wǎng)絡(luò)通信的套接字程序只能響應(yīng)與自己硬件地址相匹配的數(shù)據(jù)包或是以廣播形式發(fā)出的數(shù)據(jù)包。對(duì)于其他形式的數(shù)據(jù)包,如已到達(dá)網(wǎng)絡(luò)接
7、口,但卻不是發(fā)送到此地址的數(shù)據(jù)包,網(wǎng)絡(luò)接口在騅投遞地址并非自身地址之后將不引起響應(yīng),也就是說應(yīng)用程序無法收取與自己無關(guān)的數(shù)據(jù)包。要想獲取網(wǎng)絡(luò)設(shè)備的所有數(shù)據(jù)包,就需要將網(wǎng)卡設(shè)置為混雜模式。四、實(shí)驗(yàn)結(jié)果及分析程序運(yùn)行結(jié)果截圖:附件:網(wǎng)絡(luò)數(shù)據(jù)包捕獲與解析的完整程序#include <iostream>#include <winsock2.h>#include <ws2tcpip.h>#include <cstdlib>#include <fstream>#include <string>#pragma comment(lib,
8、"ws2_32")#define IO_RCVALL _WSAIOW(IOC_VENDOR, 1)using namespace std;typedef struct IP_HEAD unionunsigned char Version; /Version(4)unsigned char HeadLen; /Header Length(4);unsigned char ServiceType; /Type of Servics(8)unsigned short TotalLen; /Total Length(16)unsigned short Identification;
9、 /Identification(16)union unsigned short Flags; /IP Flags(3)unsigned short FragOffset; /Fragment Offset(13);unsigned char TimeToLive; /TTL(8)unsigned char Protocol; /Protocol(8)unsigned short HeadChecksum; /Header Checksum(16)unsigned int SourceAddr; /Source Address(32)unsigned int DestinAddr; /Dest
10、ination Address(32)unsigned char Options; /IP Options ip_head;void main()WSADATA WSAData;if(WSAStartup(MAKEWORD(2,2), &WSAData) != 0) /初始化cout<<"Init fails!"<<endl;return;/*數(shù)據(jù)包的捕獲*/SOCKET sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP); /抓捕IP數(shù)據(jù)報(bào)bool flag = true;setsockopt(sock
11、, IPPROTO_IP, IP_HDRINCL, (char*)&flag, sizeof(flag); /設(shè)置IP頭操作選項(xiàng)char hostName128;gethostname(hostName, 100);hostent* pHostIp = gethostbyname(hostName);sockaddr_in host_addr;host_addr.sin_family = AF_INET;host_addr.sin_port = htons(6000);host_addr.sin_addr = *(in_addr*)pHostIp->h_addr_list0;bi
12、nd(sock, (PSOCKADDR)&host_addr, sizeof(host_addr); /把sockRaw綁定到本地網(wǎng)卡上DWORD dwBufferLen10;DWORD dwBufferInLen = 1;DWORD dwBytesReturned = 0;WSAIoctl(sock, IO_RCVALL, &dwBufferInLen, sizeof(dwBufferInLen),&dwBufferLen, sizeof(dwBufferLen), &dwBytesReturned, NULL, NULL);/接受所有的數(shù)據(jù)char buff
13、er65535;ip_head ip;int packsum = 2;for(int i=0; i<packsum; i+)if(recv(sock, buffer, 65535, 0)>0) ip = *(ip_head*)buffer;cout<<"Version:"<<inet_ntoa(*(in_addr*)&ip.Version)<<endl;cout<<"HeadLen:"<<inet_ntoa(*(in_addr*)&ip.HeadLen)<<
14、;endl;cout<<"ServiceType: "<<inet_ntoa(*(in_addr*)&ip.ServiceType)<<endl;cout<<"TotalLen:"<<inet_ntoa(*(in_addr*)&ip.TotalLen)<<endl;cout<<"Identification: "<<inet_ntoa(*(in_addr*)&ip.Identification)<<end
15、l;cout<<"Flags:"<<inet_ntoa(*(in_addr*)&ip.Flags)<<endl;cout<<"FragOffset: "<<inet_ntoa(*(in_addr*)&ip.FragOffset)<<endl;cout<<"TimeToLive: "<<inet_ntoa(*(in_addr*)&ip.TimeToLive)<<endl;cout<<"
16、Protocol:"<<inet_ntoa(*(in_addr*)&ip.Protocol)<<endl;cout<<"HeadChecksum:"<<inet_ntoa(*(in_addr*)&ip.HeadChecksum)<<endl;cout<<"SourceAddr:"<<inet_ntoa(*(in_addr*)&ip.SourceAddr)<<endl;cout<<"DestinAddr:&
17、quot;<<inet_ntoa(*(in_addr*)&ip.DestinAddr)<<endl;cout<<"Options:"<<inet_ntoa(*(in_addr*)&ip.Options)<<endl<<endl;/*數(shù)據(jù)包的解析*/string str = inet_ntoa(*(in_addr*)&ip.SourceAddr);string ver = inet_ntoa(*(in_addr*)&ip.Version);string str1= inet
18、_ntoa(*(in_addr*)&ip.HeadLen);string str2= inet_ntoa(*(in_addr*)&ip.ServiceType);string str3 = inet_ntoa(*(in_addr*)&ip.TotalLen);string str4 = inet_ntoa(*(in_addr*)&ip.Identification);string str5 = inet_ntoa(*(in_addr*)&ip.Flags);string str6 = inet_ntoa(*(in_addr*)&ip.FragOf
19、fset);string str7 = inet_ntoa(*(in_addr*)&ip.TimeToLive);string str8 = inet_ntoa(*(in_addr*)&ip.Protocol);string str9 = inet_ntoa(*(in_addr*)&ip.HeadChecksum);string str10= inet_ntoa(*(in_addr*)&ip.SourceAddr);string str11 = inet_ntoa(*(in_addr*)&ip.DestinAddr);string str12 = inet_ntoa(*(in_addr*)&ip.Options);fstream outfile;outfile.open("
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)安全與信息技術(shù)2025年考試重點(diǎn)題目及答案
- 蘭州職業(yè)技術(shù)學(xué)院《Hadoop大數(shù)據(jù)技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川工業(yè)科技學(xué)院《微機(jī)原理與匯編語言》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年數(shù)據(jù)分析與處理職業(yè)考試試卷及答案
- 2025年注冊(cè)會(huì)計(jì)師資格考試試卷及答案
- 2025年移動(dòng)互聯(lián)網(wǎng)應(yīng)用開發(fā)職業(yè)考試試題及答案
- 2025年職業(yè)健康管理師考試試卷及答案匯編
- 山東省廣饒一中2024-2025學(xué)年高三最后一卷化學(xué)試題文試題含解析
- 岐山縣2025年小升初總復(fù)習(xí)數(shù)學(xué)精練含解析
- 江蘇省句容市、丹陽市2024-2025學(xué)年第一次高中畢業(yè)生復(fù)習(xí)統(tǒng)一檢測(cè)試題語文試題含解析
- 企業(yè)所得稅課件
- 2025年高考政治核心知識(shí)總結(jié)
- 工程款抵房協(xié)議合同模板
- 初中數(shù)學(xué)問題解決策略 特殊化教案2024-2025學(xué)年北師大版(2024)七年級(jí)數(shù)學(xué)下冊(cè)
- 兼職顧問服務(wù)合同范本
- 人教版(新教材)高中物理選擇性必修2教學(xué)設(shè)計(jì)2:2 2 法拉第電磁感應(yīng)定律教案
- 2024-2025學(xué)年人教版數(shù)學(xué)八年級(jí)下冊(cè)期中押題重難點(diǎn)檢測(cè)卷(含答案)
- 基建科室面試題及答案
- 儒林外史名著試題及答案
- 國開電大軟件工程形考作業(yè)3參考答案 (一)
- 2025年11.0C-雙基地感知關(guān)鍵技術(shù)研究與驗(yàn)證白皮書-未來移動(dòng)通信論壇
評(píng)論
0/150
提交評(píng)論