




版權(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)、總長(zhǎng)度、標(biāo)志位、片偏移、協(xié)議、源地址和目的地址。二、實(shí)驗(yàn)環(huán)境平臺(tái):Windows編程環(huán)境:VC 6.0語(yǔ)言: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ù)庫(kù)和數(shù)據(jù)包分析器組成。數(shù)據(jù)包捕獲函數(shù)庫(kù)是一個(gè)獨(dú)立于操作系統(tǒng)的標(biāo)準(zhǔn)捕獲函數(shù)庫(kù)。主要提供一組可用于查找網(wǎng)絡(luò)接口名稱、打開選定的網(wǎng)絡(luò)接口、初始化、設(shè)置包過濾條件、編譯過濾代碼、捕獲數(shù)據(jù)包等功能函數(shù)。對(duì)捕獲程序而言,只需要調(diào)用數(shù)據(jù)包捕獲函數(shù)庫(kù)的這些函數(shù)就能獲得所期望的 IP 數(shù)據(jù)包。這種捕獲
5、程序與數(shù)據(jù)包捕獲函數(shù)庫(kù)分離的機(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 語(yǔ)言程序,進(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)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年山東華興機(jī)械集團(tuán)有限責(zé)任公司人員招聘筆試備考題庫(kù)含答案詳解(預(yù)熱題)
- 2023國(guó)家能源投資集團(tuán)有限責(zé)任公司第一批社會(huì)招聘筆試備考題庫(kù)附答案詳解ab卷
- 2025福建晉園發(fā)展集團(tuán)有限責(zé)任公司權(quán)屬子公司招聘7人筆試備考題庫(kù)及答案詳解一套
- Rhino+KeyShot產(chǎn)品設(shè)計(jì) 課件全套 第1-10章 認(rèn)識(shí) Rhino - 渲染綜合案例
- 2025年河北省定州市輔警招聘考試試題題庫(kù)含答案詳解(模擬題)
- 2025年Z世代消費(fèi)行為對(duì)新興品牌產(chǎn)品創(chuàng)新的影響報(bào)告
- 2025年K12課外輔導(dǎo)行業(yè)雙減政策下的素質(zhì)教育實(shí)踐案例報(bào)告
- 2024年演出經(jīng)紀(jì)人之演出經(jīng)紀(jì)實(shí)務(wù)考試題庫(kù)帶答案(預(yù)熱題)
- 初中地理八年級(jí)上冊(cè)統(tǒng)編教案
- 衰老對(duì)免疫系統(tǒng)的影響2025
- GB/T 3672.2-2002橡膠制品的公差第2部分:幾何公差
- GB/T 27744-2021異步起動(dòng)永磁同步電動(dòng)機(jī)技術(shù)條件及能效分級(jí)(機(jī)座號(hào)80~355)
- GB 8076-2008混凝土外加劑
- 寶盾轉(zhuǎn)門故障代碼
- 【課件】草原上的小木屋
- DB63-T 241-2021草地毒害草綜合治理技術(shù)規(guī)范
- 四年級(jí)上冊(cè)音樂課件-活動(dòng) 歡騰的那達(dá)慕 人教版(簡(jiǎn)譜) (共17張PPT)
- 醫(yī)務(wù)人員違規(guī)行為與年度考核掛鉤制度
- 空調(diào)維保質(zhì)量保障體系及措施方案
- 四年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)教案-我的時(shí)間我做主 全國(guó)通用
- 論戰(zhàn)術(shù)思想與戰(zhàn)斗作風(fēng)
評(píng)論
0/150
提交評(píng)論