欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)_IP數(shù)據(jù)包的捕獲與分析[范文]

      時(shí)間:2019-05-14 02:09:17下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)_IP數(shù)據(jù)包的捕獲與分析[范文]》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)_IP數(shù)據(jù)包的捕獲與分析[范文]》。

      第一篇:計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)_IP數(shù)據(jù)包的捕獲與分析[范文]

      CENTRAL SOUTH UNIVERSITY

      計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告

      目錄

      第一章 課程設(shè)計(jì)的目的與要求..........................錯(cuò)誤!未定義書簽。1.1 課程設(shè)計(jì)的目的...................................錯(cuò)誤!未定義書簽。1.2 課程設(shè)計(jì)的要求....................................................1 第二章 課程設(shè)計(jì)的內(nèi)容.................................................3 2.1 課程設(shè)計(jì)的內(nèi)容....................................................3 2.2 內(nèi)容的要求........................................................3 第三章 程序分析與設(shè)計(jì).................................................4 3.1 IP數(shù)據(jù)包..........................................................4 3.1.1 IP數(shù)據(jù)包的格式說(shuō)明..........................................4 3.1.2 IP數(shù)據(jù)包的格式..............................................4 3.1.3 IP數(shù)據(jù)包的C++定義...........................................5 3.1.4 IP數(shù)據(jù)包的解析..............................................6 3.2 套接字............................................................7 3.1.4 套接字的使用.................................................7 3.1.4 使用原始套接字...............................................7 3.3 接受數(shù)據(jù)包........................................................7 第四章 實(shí)驗(yàn)結(jié)果.......................................................10 4.1 程序截圖.........................................................10 第五章 總結(jié)..........................................................11 5.1 實(shí)驗(yàn)心得.........................................................11 第六章 附錄..........................................................12 6.1 源代碼...........................................................12

      第一章 課程設(shè)計(jì)的目的與要求

      1.1 課程設(shè)計(jì)的目的

      計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)的目的,是為了讓學(xué)生更深入地掌握計(jì)算機(jī)網(wǎng)絡(luò)的核心內(nèi)容,實(shí)現(xiàn)理論與實(shí)踐相結(jié)合。讓學(xué)生用具體的實(shí)踐成果,體現(xiàn)對(duì)理論知識(shí)的掌握程度。有利于學(xué)生提高計(jì)算機(jī)網(wǎng)絡(luò)的實(shí)踐能力,加深對(duì)計(jì)算機(jī)網(wǎng)絡(luò)理論知識(shí)的理解。

      1.2 課程設(shè)計(jì)的要求

      (1)編寫程序,實(shí)現(xiàn)系統(tǒng)的基本功能,鼓勵(lì)自行增加新功能;

      (2)要有用戶界面:要求至少采用文本菜單界面;鼓勵(lì)采用圖形菜單界面;(3)寫課程設(shè)計(jì)報(bào)告,內(nèi)容包括: ? 封面(參見(jiàn)附錄I)

      ? 需求分析:以無(wú)歧義的陳述說(shuō)明程序設(shè)計(jì)的任務(wù),強(qiáng)調(diào)的是程序要做什么?給出功能模塊圖和流程圖。同時(shí)明確規(guī)定:輸入的形式和輸出值的范圍;輸出的形式;程序所能夠達(dá)到的功能;測(cè)試數(shù)據(jù),包括正確的輸入及其輸出結(jié)果和含有錯(cuò)誤的輸入及其輸出結(jié)果。

      ? 概要設(shè)計(jì):包括程序設(shè)計(jì)組成框圖,程序中使用的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)說(shuō)明(如果指定存儲(chǔ)結(jié)構(gòu)請(qǐng)寫出該存儲(chǔ)結(jié)構(gòu)的定義)。

      ? 詳細(xì)設(shè)計(jì):包括模塊功能說(shuō)明(如函數(shù)功能、入口及出口參數(shù)說(shuō)明,函數(shù)調(diào)用關(guān)系描述等),每個(gè)模塊的算法設(shè)計(jì)說(shuō)明(可以是描述算法的流程圖)。其中源程序要按照寫程序的規(guī)則來(lái)編寫,結(jié)構(gòu)清晰,重點(diǎn)函數(shù)的重點(diǎn)變量,重點(diǎn)功能部分要加上清晰的程序注釋。

      ? 運(yùn)行結(jié)果:包括典型的界面、輸入和輸出數(shù)據(jù)等;

      ? 總結(jié):包括課程設(shè)計(jì)中遇到的問(wèn)題,解決問(wèn)題的過(guò)程及體會(huì)、收獲、對(duì)課程設(shè)計(jì)的認(rèn)識(shí)與思考等。

      ? 附錄:包括主要程序清單,要有適當(dāng)?shù)淖⑨?,使程序容易閱讀。

      (4)課程設(shè)計(jì)報(bào)告書寫規(guī)范參見(jiàn)附錄II,不按照規(guī)范書寫的,成績(jī)不能評(píng)為“優(yōu)”或“良”。

      (5)無(wú)論在校外、校內(nèi),都要嚴(yán)格遵守學(xué)校和所在單位的學(xué)習(xí)和勞動(dòng)紀(jì)律、1 規(guī)章制度,學(xué)生有事離校必須請(qǐng)假。課程設(shè)計(jì)期間,無(wú)故缺席按曠課處理;缺席 時(shí)間達(dá)四分之一以上者,其成績(jī)按不及格處理。

      第二章 課程設(shè)計(jì)的內(nèi)容

      2.1 課程設(shè)計(jì)的內(nèi)容

      本次實(shí)驗(yàn)的要求在網(wǎng)絡(luò)環(huán)境,使用VC++編寫程序?qū)崿F(xiàn)捕獲網(wǎng)絡(luò)中的IP數(shù)據(jù)包,解析數(shù)據(jù)包的內(nèi)容,將結(jié)果顯示在標(biāo)準(zhǔn)輸出上,并同時(shí)寫入日志文件。

      2.2 內(nèi)容的要求

      (1)以命令行形式運(yùn)行(應(yīng)如程序名+參數(shù)名):ipparse logfile,其中ipparse是程序名,而logfile為該程序所帶參數(shù),其代表記錄結(jié)果的日志文件。(2)在標(biāo)準(zhǔn)輸出和日志文件中寫入捕獲的IP包的版本、頭長(zhǎng)度、服務(wù)類型、數(shù)據(jù)包總長(zhǎng)度、數(shù)據(jù)包標(biāo)識(shí)、分段標(biāo)志、分段偏移值、生存時(shí)間、上層協(xié)議類型、頭校驗(yàn)和、源IP地址和目的IP地址等內(nèi)容。(3)當(dāng)程序接收到鍵盤輸入Ctrl+C時(shí)退出。

      第三章 程序設(shè)計(jì)與分析

      3.1 IP數(shù)據(jù)包

      3.1.1 IP數(shù)據(jù)包的格式說(shuō)明

      IP數(shù)據(jù)包格式包含了標(biāo)頭固定部分,標(biāo)頭可變部分和數(shù)據(jù)區(qū)三部分。IP數(shù)據(jù)報(bào)標(biāo)頭部分固定為20個(gè)字節(jié),其中包含了12個(gè)參數(shù)域,各參數(shù)域隱含著網(wǎng)間協(xié)議的傳輸機(jī)制。IP具體的標(biāo)頭格式如圖1所示。

      各參數(shù)域的具體含義如下:

      1)版本號(hào):長(zhǎng)度4位,表示所使用的IP協(xié)議的版本。IPv4版本號(hào)字段值為4;IPV6版本號(hào)字段號(hào)的值為6.2)標(biāo)頭長(zhǎng):長(zhǎng)度4位,定義了一個(gè)以4B為一個(gè)單位的IP包的報(bào)頭長(zhǎng)度 3)服務(wù)類型:共8位,高3位組成優(yōu)先級(jí)子域,隨后4位組成服務(wù)類型子域。4)數(shù)據(jù)報(bào)總長(zhǎng)度:總長(zhǎng)度為2B(即6位)。定義了以字節(jié)為單位的數(shù)據(jù)報(bào)的總長(zhǎng)度。5)重裝標(biāo)識(shí):長(zhǎng)度16位,用于識(shí)別IP數(shù)據(jù)報(bào)的編號(hào),讓目的主機(jī)判斷新來(lái)的數(shù)據(jù)屬于哪個(gè)分組。

      6)分片標(biāo)識(shí):共3位,最高位為0;DF禁止分片標(biāo)識(shí)。DF=0,可以分片;DF=1,不能分片。MF:分片標(biāo)識(shí)。MF=0,表示接的是最后一個(gè)分片;MF=1,不是最后一個(gè)分片。

      7)片偏移值:共13位,說(shuō)明分片在整個(gè)數(shù)據(jù)報(bào)中的相對(duì)位置。

      8)生存周期:8位,用來(lái)設(shè)置數(shù)據(jù)數(shù)據(jù)報(bào)在整個(gè)網(wǎng)絡(luò)傳輸過(guò)程中的壽命。常以一個(gè)數(shù)據(jù)報(bào)可以經(jīng)過(guò)的最多的路由器跳步數(shù)來(lái)控制。9)協(xié)議類型:共8位,表示該IP數(shù)據(jù)報(bào)的高層協(xié)議類型。10)標(biāo)頭校驗(yàn)和:共16位,用于存放檢查報(bào)頭錯(cuò)誤的校驗(yàn)碼。

      11)源、宿主機(jī)地址:共32位,分別表示發(fā)送和接受數(shù)據(jù)報(bào)的源主機(jī)和宿主機(jī)的IP地址。

      選項(xiàng)數(shù)據(jù)域:0-40B,用于控制和測(cè)試

      3.1.2 IP數(shù)據(jù)包的格式

      4位版本4位首部長(zhǎng)度8位服務(wù)類型(TOS)3位標(biāo)志8位協(xié)議32位源IP地址32位目的IP地址16位總長(zhǎng)度(字節(jié)為單位)13位片偏移16位首部檢驗(yàn)和16位標(biāo)識(shí)8位生存時(shí)間(TTL)

      3.1.3 IP數(shù)據(jù)包的C++定義 typedef struct _IP { union {

      BYTE Version;// 版本

      BYTE HdrLen;//IHT };BYTE ServiceType;// 服務(wù)類型 WORD TotalLen;// 總長(zhǎng)

      WORD ID;// 標(biāo)識(shí)

      union {

      WORD Flags;// 標(biāo)志

      WORD FragOff;// 分段偏移

      };BYTE TimeToLive;// 生命期

      BYTE Protocol;// 協(xié)議

      WORD HdrChksum;// 頭校驗(yàn)和

      DWORD SrcAddr;// 源地址

      DWORD DstAddr;// 目的地址 BYTE Options;// 選項(xiàng)

      } IP;

      3.1.4 IP數(shù)據(jù)包的解析

      通過(guò)IP_HEADER解析IP頭各個(gè)字段的代碼: /*獲取版本字段*/ ip.Version>>4;/*獲取頭部長(zhǎng)度字段*/ ip.HdrLen & 0x0f;/*獲取服務(wù)類型字段中的優(yōu)先級(jí)子域*/ ip.ServiceType>>5;/*獲取服務(wù)類型字段中的TOS子域*/(ip.ServiceType>>1)&0x0f;/*獲取總長(zhǎng)度字段*/ ip.TotalLen;/*獲取標(biāo)識(shí)字段*/ ip.ID;/*解析標(biāo)志字段*/ DF =(ip.Flags>>14)& 0x01;MF =(ip.Flags>>13)& 0x01;/*獲取分段偏移字段*/ ip.FragOff & 0x1fff;/*獲取生存時(shí)間字段*/ ip.TimeToLive;/*獲取協(xié)議字段*/ ip.Protocol;/*獲取頭校驗(yàn)和字段*/ ip.HdrChksum;/*解析源IP地址字段*/ inet_ntoa(*(in_addr*)&ip.SrcAddr);/*解析目的IP地址字段*/ inet_ntoa(*(in_addr*)&ip.DstAddr);3.2 套接字

      3.2.1 套接字的使用

      本程序使用套接字socket編程,將網(wǎng)卡設(shè)為能夠接受流經(jīng)網(wǎng)卡的所有類型的數(shù)據(jù)包。首先,初始化套接字,然后監(jiān)聽(tīng)數(shù)據(jù)包,解析數(shù)據(jù)包。

      SOCKET sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP)用來(lái)創(chuàng)建套接字,其參數(shù)為通信發(fā)生的區(qū)字段和套接字的類型。

      WSAIoctl(sock,IO_RCVALL ,&dwBufferInLen , sizeof(dwBufferInLen)函數(shù)用來(lái)把網(wǎng)卡設(shè)置為混雜模式。

      recv(sock,buffer,65535,0)函數(shù)用來(lái)接收經(jīng)過(guò)的IP包,其參數(shù)分別是套接字描述符,緩沖區(qū)的地址,緩沖區(qū)的大小。

      3.2.1 使用原始套接字

      要進(jìn)行IP層數(shù)據(jù)包的接收和發(fā)送,應(yīng)使用原始套接字。創(chuàng)建原始套接字的代碼如下:

      SOCKET sock;sock=WSASoccket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0, WSA_FLAG_OVERLAPPED);在WSASoccket函數(shù)中,第一個(gè)參數(shù)指定通信發(fā)生的區(qū)字段,AF_INET是針對(duì)Internet的,允許在遠(yuǎn)程主機(jī)之間通信。第二個(gè)參數(shù)是套接字的類型,在AF_INET地址族下,有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW三種套接字類型。在這里,設(shè)置為SOCK_RAW,表示聲明的是一個(gè)原始套接字類型。第三個(gè)參數(shù)依賴于第二個(gè)參數(shù),用于指定套接字所有的特定協(xié)議,這里使用IP協(xié)議。第四個(gè)參數(shù)為WSAPROTOCOL_INFO位,該位可以置空。第五個(gè)參數(shù)保留,永遠(yuǎn)置0。第六個(gè)參數(shù)是標(biāo)志位,WSA_FLAG_OVERLAPPED表明可以使用發(fā)送接收超時(shí)設(shè)置。

      創(chuàng)建原始套接字后,IP頭就會(huì)包含在接收的數(shù)據(jù)中。然后,可以設(shè)置IP頭操作選項(xiàng),調(diào)用setsockopt函數(shù)。其中flag設(shè)置為true,并設(shè)定IP_HDRINCL選項(xiàng),表明用戶可以親自對(duì)IP頭進(jìn)行處理。

      BOOL flag=true;setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(CHAR*)&flag,sizeof(flag));之后,使用如下代碼完成對(duì)socket的初始化工作: /*獲取主機(jī)名*/ char hostName[128];gethostname(hostName,100);/*獲取本地IP地址*/ hostent * pHostIP;pHostIP = gethostbyname(hostName);/*填充SOCKADDR_IN結(jié)構(gòu)的內(nèi)容*/ sockaddr_in addr_in;addr_in.sin_addr = *(in_addr *)pHostIP->h_addr_list[0];addr_in.sin_family = AF_INET;addr_in.sin_port = htons(6000);/*綁定socket*/ bind(sock,(PSOCKADDR)&addr_in,sizeof(addr_in));填寫sockaddr_in的內(nèi)容時(shí),其地址值應(yīng)填寫為本機(jī)IP地址,本機(jī)IP地址可以通過(guò)gethostbyname()函數(shù)獲取;端口號(hào)可以隨便填寫,但不能與系統(tǒng)沖突;協(xié)議族應(yīng)填為AF_INET。使用htons()函數(shù)可以將無(wú)符號(hào)短整型的主機(jī)數(shù)據(jù)轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序的數(shù)據(jù)。最后使用bind(0函數(shù)將socket綁定到本機(jī)網(wǎng)卡上。綁定網(wǎng)卡后,需要用WSAIoctl()函數(shù)把網(wǎng)卡設(shè)置為混雜模式,使網(wǎng)卡能夠接收所有網(wǎng)絡(luò)數(shù)據(jù),其關(guān)鍵代碼如下:

      #define SIO_RCVALL_WSAIOW(IOC_VENDOR,1)DWORD dwBufferLen[10];DWORD dwBufferInLen = 1;DWORD dwBytesReturned = 0;WSAIoct1(SnifferSocket, IO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),&dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL);如果接收的數(shù)據(jù)包中的協(xié)議類型和定義的原始套接字匹配,那么接收到的數(shù)據(jù)就拷貝到套接字中。因此,網(wǎng)卡就可以接收所有經(jīng)過(guò)的IP包。

      3.3 接收數(shù)據(jù)包 在程序中可使用recv()函數(shù)接收經(jīng)過(guò)的IP包。該函數(shù)有四個(gè)參數(shù),第一個(gè)參數(shù)接收操作所用的套接字描述符;第二個(gè)參數(shù)接收緩沖區(qū)的地址;第三個(gè)參數(shù)接收緩沖區(qū)的大小,也就是所要接收的字節(jié)數(shù);第四個(gè)參數(shù)是一個(gè)附加標(biāo)志,如果對(duì)所發(fā)送的數(shù)據(jù)沒(méi)特殊要求,直接設(shè)為0。因?yàn)镮P數(shù)據(jù)包的最大長(zhǎng)度是65535B,因此,緩沖區(qū)的大小不能小于65535B。設(shè)置緩沖區(qū)后,可利用循環(huán)來(lái)反復(fù)監(jiān)聽(tīng)接收IP包,用RECV()函數(shù)實(shí)現(xiàn)接收功能的代碼如下:

      #define BUFFER_SIZE 65535 char buffer[BUFFER_SIZE];//while(true){ recv(sock,buffer,BUFFER_SIZE,0);// /*然后是解析接收的IP包*/ }

      設(shè)置緩沖區(qū) 接收數(shù)據(jù)包

      第四章 實(shí)驗(yàn)結(jié)果

      4.1 程序截圖

      第五章 總結(jié)

      通過(guò)這次課程設(shè)計(jì),我們了解到關(guān)于計(jì)算機(jī)網(wǎng)絡(luò)數(shù)據(jù)傳送及處理過(guò)程中,軟件起到了巨大的作用。熟悉了C++語(yǔ)言在計(jì)算機(jī)網(wǎng)絡(luò)方面的應(yīng)用,是一次難得的機(jī)會(huì)。此外,我還了解了網(wǎng)絡(luò)通信協(xié)議的基本工作原理及套接字的使用,雖然剛開(kāi)始的時(shí)候比較模糊,但是通過(guò)與同學(xué)共同探討和網(wǎng)上查閱資料,最終我成功完成了實(shí)驗(yàn)。這次課程設(shè)計(jì)培養(yǎng)了我們基本掌握網(wǎng)絡(luò)編程的基本思路和方法,讓我們懂得如何去學(xué)習(xí)這類東西。同時(shí)提高我們對(duì)所學(xué)計(jì)算機(jī)網(wǎng)絡(luò)理論知識(shí)的理解能力,提高和挖掘我們對(duì)所學(xué)知識(shí)的實(shí)際應(yīng)用能力和創(chuàng)新能力。同學(xué)們的合作是實(shí)驗(yàn)成功的必要條件,而謹(jǐn)慎對(duì)待事物的態(tài)度是成功的關(guān)鍵。

      第六章 附錄

      6.1 源代碼

      #include #include #include #include #pragma comment(lib,“Ws2_32.lib”)#define BUFFER_SIZE 65535 #define IO_RCVALL _WSAIOW(IOC_VENDOR,1)typedef struct _IP_HEADER

      //定義IP頭 { union {

      BYTE Version;

      //版本(前4位)

      BYTE HdrLen;

      //報(bào)頭標(biāo)長(zhǎng)(后4位),IP頭長(zhǎng)度

      };BYTE ServiceType;

      //服務(wù)類型

      WORD TotalLen;

      //數(shù)據(jù)報(bào)總長(zhǎng)

      WORD ID;

      //標(biāo)識(shí)

      union {

      WORD Flags;

      //標(biāo)識(shí)(前3位)

      WORD FragOff;

      //分段偏移(后13位)

      };BYTE TimeToLive;

      //生存周期

      BYTE Protocol;

      //協(xié)議

      WORD HdrChksum;

      //頭校驗(yàn)和

      DWORD SrcAddr;

      //源地址

      DWORD DstAddr;

      //目地地址

      BYTE Options;

      //選項(xiàng) }IP_HEADER;

      char * parseServiceType_getProcedence(BYTE b){ switch(b>>5)

      //獲取服務(wù)類型字段中優(yōu)先級(jí)子域

      { case 7:

      return “Network Control”;

      //網(wǎng)絡(luò)控制

      break;case 6:

      return “Internet work Control”;

      //網(wǎng)絡(luò)控制

      break;case 5:

      return “CRITIC/ECP”;

      break;case 4:

      return “Flash Override”;

      //最優(yōu)先信號(hào)

      break;case 3:

      return “Flsah”;

      break;case 2:

      return “Immediate”;

      break;case 1:

      return “Priority”;

      //協(xié)議

      break;case 0:

      return “Routine”;

      //路由

      break;default:

      return “Unknow”;

      break;} } char * parseServiceType_getTOS(BYTE b){ b=(b>>1)&0x0f;

      //獲取服務(wù)類型字段中的TOS子域

      switch(b)

      {

      case 0:

      return “Normal service”;

      //正常運(yùn)行

      break;case 1:

      return “Minimize monetary cost”;

      //成本

      break;case 2:

      return “Maximize reliability”;

      //可靠性

      break;case 4:

      return “Maximize throughput”;

      //吞吐量

      break;case 8:

      return “Minimize delay”;

      //延遲

      break;case 15:

      return “Maximize security”;

      //安全性

      break;default:

      return “Unknow”;

      } } char * getProtocol(BYTE Protocol)

      //獲取協(xié)議字段共8位 { switch(Protocol)

      //以下為協(xié)議號(hào)說(shuō)明:

      {

      case 1:

      return “ICMP”;

      //Internet控制報(bào)文協(xié)議

      case 2:

      return “IGMP”;

      //Internet組管理協(xié)議

      case 4:

      return “IP in IP”;

      //移動(dòng)IP數(shù)據(jù)封裝和隧道

      case 6:

      return “TCP”;

      //傳輸控制協(xié)議

      case 8:

      return “EGP”;

      //外部網(wǎng)關(guān)協(xié)議

      case 17:

      return “UDP”;

      //用戶數(shù)據(jù)報(bào)文協(xié)議

      case 41:

      return “IPv6”;case 46:

      return “RSVP”;

      //資源預(yù)留協(xié)議

      case 89:

      return “OSPF”;

      //Open Shortest Path First 開(kāi)發(fā)式最短路徑優(yōu)先

      default:

      return “UNKNOW”;} } void ipparse(FILE* file,char* buffer){ IP_HEADER ip=*(IP_HEADER*)buffer;

      //通過(guò)指針把緩沖區(qū)的內(nèi)容強(qiáng)制轉(zhuǎn)化為IP_HEADER數(shù)據(jù)結(jié)構(gòu)

      fseek(file,0,SEEK_END);

      fprintf(file,“_______________________________________________rn”);fprintf(file,“版本號(hào):IPV%drn”,ip.Version>>4);fprintf(file,“報(bào)頭標(biāo)長(zhǎng):%d(BYTE)rn”,((ip.HdrLen & 0x0f)*4));fprintf(file,“服務(wù)器類型 : %s,%srn”,parseServiceType_getProcedence(ip.ServiceType),parseServiceType_getTOS(ip.ServiceType));fprintf(file,“總長(zhǎng)度 : %d(BYTE)rn”,ip.TotalLen);fprintf(file,“標(biāo)識(shí) : %drn”,ip.ID);fprintf(file,“標(biāo)志位 DF:%d , MF=%drn”,((ip.Flags>>14)&0x01),((ip.Flags>>13)&0x01));fprintf(file,“分段偏移值 : %drn”,(ip.FragOff&0x1fff));

      fprintf(file,“生存期 : %d(hops)rn”,ip.TimeToLive);fprintf(file,“協(xié)議 : %srn”,getProtocol(ip.Protocol));fprintf(file,“頭校驗(yàn)和 : 0x%0xrn”,ip.HdrChksum);fprintf(file,“源IP地址 : %srn”,inet_ntoa(*(in_addr*)&ip.SrcAddr));fprintf(file,“目的IP地址 : %srn”,inet_ntoa(*(in_addr*)&ip.DstAddr));fprintf(file,“________________________________________________rn”);}

      int main(){

      FILE * file;if((file=fopen(“l(fā)ogfile.txt”,“wb+”))==NULL){

      printf(“fail to open file %s”);

      return-1;

      }

      WORD rv;WSADATA WSAData;

      //定義了能夠儲(chǔ)存WSAStarup調(diào)用返回值的結(jié)構(gòu)

      rv=MAKEWORD(2,2);

      //Winsock2版本

      WSAStartup(rv,&WSAData);

      SOCKET sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP);//創(chuàng)建套接字,sock為套接字描述符

      BOOL flag=true;setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(CHAR*)&flag,sizeof(flag));//任意類型、任意狀態(tài)套接口的設(shè)置選項(xiàng)值

      char hostName[128];gethostname(hostName,100);

      //獲取主機(jī)名

      hostent * pHostIP;

      //獲取本地IP地址

      pHostIP = gethostbyname(hostName);

      sockaddr_in addr_in;addr_in.sin_addr=*(in_addr *)pHostIP->h_addr_list[0];addr_in.sin_family = AF_INET;addr_in.sin_port = htons(6000);//將無(wú)符號(hào)短整型主機(jī)數(shù)據(jù)轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序數(shù)據(jù)

      bind(sock,(PSOCKADDR)&addr_in,sizeof(addr_in));

      DWORD dwBufferLen[10];

      //設(shè)置網(wǎng)卡為混雜模式

      DWORD dwBufferInLen=1;DWORD dwBytesReturned=0;WSAIoctl(sock, IO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen), &dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL);

      char buffer[BUFFER_SIZE];

      //設(shè)置緩沖區(qū)

      char i,a;

      printf(“

      *************************************n”);

      printf(“

      *

      IP數(shù)據(jù)包捕獲程序

      *n”);

      printf(“

      *

      捕獲并解析本機(jī)的數(shù)據(jù)包輸入Y

      *n”);

      printf(“

      *

      放棄執(zhí)行輸入N

      *n”);

      printf(“

      *

      退出程序按 Ctrl+c

      *n”);

      printf(“

      *************************************n”);cin>>i;system(“cls”);while(true&&i=='Y'||i=='y'){

      int size=recv(sock,buffer,BUFFER_SIZE,0);

      //接收數(shù)據(jù)包

      if(size>0)

      {

      printf(“nnIP數(shù)據(jù)包捕獲解析程序n”);

      ipparse(stdout,buffer);

      ipparse(file,buffer);

      printf(“是否要繼續(xù)捕獲并解析本機(jī)的IP數(shù)據(jù)包? Y/N n”);

      fflush(stdin);

      cin>>i;

      continue;

      }

      else

      fclose(file);

      return 0;}

      closesocket(sock);}

      計(jì)算機(jī)網(wǎng)絡(luò)課程的結(jié)束已經(jīng)過(guò)去將近1年,當(dāng)時(shí)的學(xué)習(xí)也僅限于上課和考試。這次計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)給予了我一次難得的鍛煉機(jī)會(huì)。剛拿到題目的時(shí)候,感覺(jué)還無(wú)從下手。后來(lái)通過(guò)上網(wǎng)查詢各種資料和查閱書籍,我們慢慢摸索探討出了整個(gè)組網(wǎng)的設(shè)計(jì)過(guò)程。該組網(wǎng)只是一個(gè)簡(jiǎn)單的酒店網(wǎng)絡(luò)模擬,它離實(shí)際還是有相當(dāng)?shù)木嚯x,需要進(jìn)行不斷地補(bǔ)充和完善。通過(guò)本次課程設(shè)計(jì)我們學(xué)到了不少新的東西,也發(fā)現(xiàn)了大量的問(wèn)題,有些在設(shè)計(jì)過(guò)程中已經(jīng)解決,有些還有待今后慢慢學(xué)習(xí)只要學(xué)習(xí)就會(huì)有更多的問(wèn)題,有更多的難點(diǎn),但也會(huì)有更多的收獲。本次課程設(shè)計(jì)用到的packet tracer軟件是我們第一次接觸,但通過(guò)自學(xué)和網(wǎng)絡(luò)的幫助,我們慢慢掌握了packet tracer軟件的使用方法。從一開(kāi)始的無(wú)處著手到通過(guò)自己的努力,我基本上完成了這次的任務(wù),但是由于知識(shí)的欠缺及時(shí)間的限制,我們的成果僅限于現(xiàn)在完成的部分,還有很大的改善空間。總的來(lái)說(shuō),本次課程設(shè)計(jì)讓我獲益匪淺,希望以后還有這樣鍛煉自己的機(jī)會(huì)。

      第二篇:計(jì)算機(jī)網(wǎng)絡(luò) 課程設(shè)計(jì) IP數(shù)據(jù)包解析

      課設(shè)名稱:IP數(shù)據(jù)包解析

      級(jí):

      學(xué)

      號(hào):

      名:

      指導(dǎo)老師:

      日期: 2012.6.15

      計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告

      目錄

      1.課程設(shè)計(jì)目的..............................................................1

      2.課程設(shè)計(jì)要求..............................................................1

      3.程序設(shè)計(jì)分析..............................................................1

      3.1 網(wǎng)卡設(shè)置................................................................1

      3.2 使用套接字..............................................................2

      3.2.2 接收數(shù)據(jù)包.............................................................2

      3.3 定義IP頭部的數(shù)據(jù)結(jié)構(gòu)....................................................3

      3.4 IP包的解析..............................................................3

      3.5 協(xié)議的定義..............................................................4

      3.6捕獲處理.................................................................4

      4.運(yùn)行結(jié)果..................................................................5

      5.總結(jié)......................................................................5

      6.源程序代碼................................................................6

      Ip數(shù)據(jù)包解析

      1.課程設(shè)計(jì)目的

      本課程設(shè)計(jì)的目的就是設(shè)計(jì)一個(gè)捕獲并解析IP數(shù)據(jù)包的程序,并根據(jù)這個(gè)程序,說(shuō)明IP數(shù)據(jù)包的結(jié)構(gòu)及IP協(xié)議的相關(guān)問(wèn)題,從而對(duì)IP層的工作原理有更好的理解和認(rèn)識(shí)。

      2.課程設(shè)計(jì)要求

      本設(shè)計(jì)的目標(biāo)是捕獲網(wǎng)絡(luò)中的IP數(shù)據(jù)包,解析數(shù)據(jù)包的內(nèi)容,將結(jié)果顯示在標(biāo)準(zhǔn)輸出上,并同時(shí)寫入日志文件。程序的具體要求如下:

      1)以命令行形式運(yùn)行:ipparse logfile,其中ipparse是程序名, 而logfile則代表記錄結(jié)果的日志文件。

      2)在標(biāo)準(zhǔn)輸出和日志文件中寫入捕獲的IP包的版本、頭長(zhǎng)度、服務(wù)類型、數(shù)據(jù)包總長(zhǎng)度、數(shù)據(jù)包標(biāo)識(shí)、分段標(biāo)志、分段偏移值、生存時(shí)間、上層協(xié)議類型、頭校驗(yàn)和、源IP地址和目的IP地址等內(nèi)容。

      3)當(dāng)程序接收到鍵盤輸入Ctrl+C時(shí)退出

      3.程序設(shè)計(jì)分析

      3.1 網(wǎng)卡設(shè)置

      為了獲取網(wǎng)絡(luò)中的IP數(shù)據(jù)包,必須對(duì)網(wǎng)卡進(jìn)行編程,在這里使用套接字(socket)進(jìn)行編程。但是,在通常情況下,網(wǎng)絡(luò)通信的套接字程序只能響應(yīng)與自己硬件地址相匹配的數(shù)據(jù)包或是以廣播形式發(fā)出的數(shù)據(jù)包。對(duì)于其他形式的數(shù)據(jù)包,如已到達(dá)網(wǎng)絡(luò)接口,但卻不是發(fā)送到此地址的數(shù)據(jù)包,網(wǎng)絡(luò)接口在騅投遞地

      Ip數(shù)據(jù)包解析

      址并非自身地址之后將不引起響應(yīng),也就是說(shuō)應(yīng)用程序無(wú)法收取與自己無(wú)關(guān)的數(shù)據(jù)包。我們要想獲取網(wǎng)絡(luò)設(shè)備的所有數(shù)據(jù)包,就是需要將網(wǎng)卡設(shè)置為混雜模式。

      3.2 使用套接字

      套接字分為三種,即流套接字(Stream socket)、數(shù)據(jù)報(bào)套接字(Datagram Socket)和原始套接字(Raw Socket)。要進(jìn)行IP層數(shù)據(jù)包的接收和發(fā)送,應(yīng)使用原始套接字。創(chuàng)建原始套接字的代碼如下: Socket sock: Sock=wsasocket(af_inet,sock_raw,ipproto-ip,null,0,wsa-flag-overlapped): 本設(shè)計(jì)不用考慮超時(shí)情況。

      創(chuàng)建套接后,IP頭就會(huì)包含在接收數(shù)據(jù)包中。然后,我可以設(shè)置IP頭操作選項(xiàng),調(diào)用setsockopt函數(shù)。其中flag設(shè)置為true,并設(shè)定IP-HDRINCL選項(xiàng),表明用戶可以親自對(duì)IP頭進(jìn)行處理。最后使用bind()函數(shù)將socket綁定到本地網(wǎng)卡上。綁定網(wǎng)卡后,需用WSAIoctl()函數(shù)把網(wǎng)卡設(shè)置為混雜模式,使網(wǎng)卡能夠接收所有的網(wǎng)絡(luò)數(shù)據(jù)。如果接收的數(shù)據(jù)包中的協(xié)議類型和定義的原始套接字匹配,那么接收的數(shù)據(jù)就拷貝到套接字中,因此,網(wǎng)卡就可以接收所有經(jīng)過(guò)的IP包。

      3.2.2 接收數(shù)據(jù)包

      在程序中可使用recv()函數(shù)接收經(jīng)過(guò)的IP包。該函數(shù)有四個(gè)參數(shù),第一個(gè)參數(shù)接收操作所用的套接字描述符;第二個(gè)參數(shù)接收緩沖區(qū)的地址;第三個(gè)參數(shù)接收緩沖區(qū)的大小,也就是所要接收的字節(jié)數(shù);第四個(gè)參數(shù)是一個(gè)附加標(biāo)志,如

      Ip數(shù)據(jù)包解析

      果對(duì)所發(fā)送的數(shù)據(jù)沒(méi)特殊要求,直接設(shè)為0。因?yàn)镮P數(shù)據(jù)包的最大長(zhǎng)度是65535B,因此緩沖區(qū)的大小不能小于65535B。設(shè)置緩沖區(qū)后,可利用循環(huán)來(lái)反復(fù)監(jiān)聽(tīng)接收IP包,用recv()函數(shù)實(shí)現(xiàn)接收功能。

      3.3 定義IP頭部的數(shù)據(jù)結(jié)構(gòu)

      程序需要定義一個(gè)數(shù)據(jù)結(jié)構(gòu)表示IP頭部。其代碼如下: struct IP_HEADER { unsigned short ip_version, /*IP的版本號(hào) */ ip_hdr_len; /*IP包頭的長(zhǎng)度*/ ip_tos; /*IP包的服務(wù)類型*/ ip_total_len; /*IP包的總長(zhǎng)度*/ ip_id; /*IP包的分段標(biāo)識(shí)*/ ip_flags; /*IP包的分段標(biāo)志*/ ip_frag_offset; /*IP包的分段偏移*/ ip_ttl; /*IP包的生存時(shí)間*/ ip_proto; /*IP包的高層協(xié)議*/ ip_hdr_chksum;/*IP包的校驗(yàn)和*/ struct IPADDRESS ip_src_addr; /*IP包的源IP地址*/ ip_dest_addr; /*IP包的目的IP地址*/ }ipheader;3.4 IP包的解析

      Ip數(shù)據(jù)包解析

      解析IP包的字段有兩種策略。針對(duì)長(zhǎng)度為8位、16位和32位的字段(或子字段)時(shí),可以利用IP-HEADER的成員直接獲取。要解析長(zhǎng)度不是8位倍數(shù)的字段(或子字段)時(shí),可以利用C語(yǔ)言中的移位以人、及與、或操作完成。

      3.5 協(xié)議的定義

      (包含相應(yīng)的頭文件#include #include):

      DWORD dwIoControlCode=SIO_RCVALL, /*接收所有的IP包*/ dwProtocol=IPPROTO_IP;/*協(xié)議類型為IP*/

      3.6捕獲處理

      1.加載 Winsock;

      2.創(chuàng)建一個(gè)接收原始IP包的socket連接; 3.綁定到一個(gè)接口;

      4.進(jìn)行WSAIoctl設(shè)置,接收所有的IP數(shù)據(jù)包。代碼如下:

      if(WSAIoctl(s, dwIoControlCode, &optval, sizeof(optval), NULL, 0, &dwBytesRet, NULL, NULL)== SOCKET_ERROR)5.接著設(shè)定一個(gè)線程進(jìn)行捕獲:(1)創(chuàng)建一個(gè)接收IP包的鏈表頭;

      (2)設(shè)置一個(gè)標(biāo)識(shí),為真,則不斷進(jìn)行IP包的捕獲;(3)建立一個(gè)新的結(jié)點(diǎn),將捕獲的數(shù)據(jù)包加入到該結(jié)點(diǎn);

      (4)如果鏈表的長(zhǎng)度達(dá)到指定的長(zhǎng)度,創(chuàng)建一個(gè)線程對(duì)該鏈表的IP包進(jìn)行解析;再設(shè)置一個(gè)在IP數(shù)據(jù)包鏈表不足給定的長(zhǎng)度,而又中止IP捕獲時(shí),對(duì)鏈表的處理;

      Ip數(shù)據(jù)包解析

      (5)為下一個(gè)IP包鏈表創(chuàng)建一個(gè)鏈表頭。

      6.建立一個(gè)進(jìn)行IP包解析并顯示的線程,進(jìn)行解析IP數(shù)據(jù)包,然后顯示IP數(shù)據(jù)包。

      4.運(yùn)行結(jié)果

      截獲IP數(shù)據(jù)包程序運(yùn)行結(jié)果如下:

      5.總結(jié)

      在本次課程設(shè)計(jì)中,通過(guò)多次上機(jī)的實(shí)踐,充分利用所學(xué)的計(jì)算機(jī)網(wǎng)絡(luò)以及socket編程與C語(yǔ)言編程的知識(shí),并上網(wǎng)搜索一部分相當(dāng)資料,粗略設(shè)計(jì)出該程序。

      通過(guò)本次課程設(shè)計(jì),充分運(yùn)用了所學(xué)的計(jì)算機(jī)網(wǎng)絡(luò)知識(shí),設(shè)計(jì)出了如何解析IP數(shù)據(jù)包,從而更加深刻的了解到了IP數(shù)據(jù)包的結(jié)構(gòu)及IP協(xié)議的相關(guān)問(wèn)題,從而對(duì)IP層的工作原理有更好的理解和認(rèn)識(shí)。

      Ip數(shù)據(jù)包解析

      在課程設(shè)計(jì)的過(guò)程也碰到的不少問(wèn)題。例如:對(duì)IP數(shù)據(jù)包的結(jié)構(gòu)不了解、IP層工作原理也不熟悉、C語(yǔ)言編程基礎(chǔ)差等一系列問(wèn)題。讓我認(rèn)識(shí)到了自己的很大不足,在以后的學(xué)習(xí)過(guò)程中還將努力提高。

      6.源程序代碼

      #include “winsock2.h” #include “ws2tcpip.h” #include “iostream.h” #include “stdio.h”

      #pragma comment(lib, “ws2_32.lib”)

      #define IO_RCVALL _WSAIOW(IOC_VENDOR,1)#define BUFFER_SIZE 65535

      /* 定義IP頭部數(shù)據(jù)結(jié)構(gòu) */ typedef struct _IP_HEADER{

      union{

      };BYTE ServiceType;//服務(wù)類型 WORD TotalLen;//總長(zhǎng)度 WORD ID;//標(biāo)識(shí) union{

      };BYTE TimeToLive;WORD Flags;WORD FragOff;BYTE Version;//版本(前4位)

      BYTE HdrLen;//報(bào)頭標(biāo)長(zhǎng)(后四位),IP頭長(zhǎng)度

      Ip數(shù)據(jù)包解析

      BYTE Protocol;WORD HdrChksum;DWORD SrcAddr;DWORD DstAddr;BYTE Options;}IP_HEADER;

      //逐位解析IP頭中的信息,獲取版本號(hào) void getVersion(BYTE b,BYTE &version){ }

      void getIHL(BYTE b,BYTE &result){ }

      //解析服務(wù)類型

      char * parseServiceType_getProcedence(BYTE b){

      version = b>>4;result =(b & 0x0f)*4;switch(b>>5){

      case 7: return “Network Control”;case 6: return “Internet work Control”;case 5: return “CRITIC/ECP”;case 4: return “Flash Override”;

      Ip數(shù)據(jù)包解析

      }

      } case 3: return “Falsh”;case 2: return “Immediate”;case 1: return “Priority”;case 0: return “Routine”;default: return “Unknown”;char * parseServiceType_getTOS(BYTE b){

      b=(b>>1)&0x0f;switch(b){ case 0: return “Normal service”;

      case 1:

      return “Minimize monetary cost”;case 2: return “Maximize reliability”;case 4: return “Maximize throughput”;case 8: return “Minimize delay”;case 15: return “Maximize security”;default: return “Unknown”;

      Ip數(shù)據(jù)包解析

      } } /* 獲取禁止分片標(biāo)志和分片標(biāo)志 */ void getFlags(WORD w,BYTE &DF, BYTE &MF){

      }

      /* 獲取分片偏移量 */ void getFragoff(WORD w,WORD &fragoff){ }

      //獲取協(xié)議

      char * getProtocol(BYTE Protocol){

      DF=(w>>14)&0x01;MF=(w>>13)&0x01;fragoff=w&0x1ffff;switch(Protocol){

      case 1: return “ICMP”;case 2: return “IGMP”;case 3: return “GGP”;case 4: return “IP in IP ”;case 6: return “TCP”;case 8: return “EGP”;case 17:

      Ip數(shù)據(jù)包解析

      }

      } return “UDP”;case 41: return “IPv6”;case 46: return “OSPF”;default: return “UNKNOWN”;/* 解析IP數(shù)據(jù)包 */ void ipparse(FILE * file,char *buffer){

      IP_HEADER ip = *(IP_HEADER *)buffer;fseek(file,0,SEEK_END);BYTE version;getVersion(ip.Version,version);fprintf(file,“版本=IPV%drn”,version);BYTE headerLen;getIHL(ip.HdrLen,headerLen);fprintf(file,“頭長(zhǎng)度=%d(BYTE)rn”,headerLen);fprintf(file,“服務(wù)類型=%s,%srn”, parseServiceType_getProcedence(ip.ServiceType), parseServiceType_getTOS(ip.ServiceType));fprintf(file,“數(shù)據(jù)報(bào)長(zhǎng)度=%d(BYTE)rn”,ip.TotalLen);fprintf(file,“數(shù)據(jù)報(bào)ID=%drn”,ip.ID);/* DF表示禁止分片標(biāo)志,MF表示分片標(biāo)記 */ BYTE DF,MF;getFlags(ip.Flags,DF,MF);fprintf(file,“分段標(biāo)志 DF=%d,MF=%drn”,DF,MF);WORD fragOff;

      Ip數(shù)據(jù)包解析

      } getFragoff(ip.FragOff,fragOff);fprintf(file,“分段偏移值=%drn”,fragOff);fprintf(file,“生存期=%d(hops)rn”,ip.TimeToLive);fprintf(file,“協(xié)議=%srn”,getProtocol(ip.Protocol));fprintf(file,“頭校驗(yàn)和=0x%0xrn”,ip.HdrChksum);fprintf(file,“源IP地址=%srn”,inet_ntoa(*(in_addr*)&ip.SrcAddr));fprintf(file,“目的IP地址=%srn”,inet_ntoa(*(in_addr*)&ip.DstAddr));fprintf(file,“__________________________________rn”);

      /* 程序入口 */ int main(int argc,char *argv[]){

      /* cmd參數(shù) */ if(argc!=2){

      } printf(“usage error!n”);return-1;FILE *file;/* 以讀寫的方式建立一個(gè)文本文件logfile.txt */ if((file=fopen(argv[1],“w+”))==NULL){

      }

      WSAData wsData;/* 啟動(dòng)2.2版本的Socket,并將Socket版本信息保存到wsData中 */ if(WSAStartup(MAKEWORD(2,2),&wsData)!=0){ printf(“WSA startup failed!n”);return-1;printf(“fail to open file %s”,“l(fā)ogfile.txt”);return-1;

      Ip數(shù)據(jù)包解析

      } fprintf(file,“Socket初始化...rn”);fprintf(file,“==================================rn”);fprintf(file,“描述:%srn”,wsData.szDescription);fprintf(file,“狀態(tài):%srn”,wsData.szSystemStatus);fprintf(file,“==================================rn”);SOCKET sock;/* 創(chuàng)建原始套接字 */ if((sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP))==INVALID_SOCKET){

      }

      BOOL flag=true;/* 設(shè)置IP頭操作選項(xiàng) */ if(setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(CHAR*)&flag,sizeof(flag))==SOCKET_Eprintf(“Can not create socket!n”);return-1;RROR){

      } printf(“setsockopt failed!n”);return-1;char hostName[128];/* 獲取本地主機(jī)名 */ if(gethostname(hostName,100)==SOCKET_ERROR){

      }

      hostent *pHostIP;printf(“gethostname failed!n”);return-1;

      Ip數(shù)據(jù)包解析

      R){

      /* 根據(jù)主機(jī)名獲取主機(jī)信息 */ if((pHostIP=gethostbyname(hostName))==NULL){

      } printf(“Hostname: %srn”,pHostIP->h_name);printf(“IPAddress: %srn”,inet_ntoa(*((struct in_addr *)pHostIP->h_addr)));printf(“gethostbyname failed!n”);return-1;/* 封裝IP地址信息 */ sockaddr_in addr_in;addr_in.sin_addr=*(in_addr*)pHostIP->h_addr_list[0];addr_in.sin_family=AF_INET;addr_in.sin_port=htons(6000);//監(jiān)聽(tīng)的端口號(hào) /* 把Socket綁定到本地網(wǎng)卡 */ if(bind(sock,(PSOCKADDR)&addr_in,sizeof(addr_in))==SOCKET_ERROR){

      }

      DWORD dwBufferLen[10];DWORD dwBufferInLen=1;DWORD dwBytesReturned=0;/* 設(shè)置網(wǎng)卡為混雜模式 */ if(WSAIoctl(sock,IO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen), printf(“bind failed”);return-1;&dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL)==SOCKET_ERRO

      } printf(“icotlsocket failedn”);return-1;

      Ip數(shù)據(jù)包解析

      }

      char buffer[BUFFER_SIZE];printf(“=============開(kāi)始解析=============rn”);while(true){

      } /* 解除Socket綁定 */ if(WSACleanup()==SOCKET_ERROR){

      } /* 關(guān)閉文件 */ fclose(file);return 0;printf(“WSACleanup failed!n”);return-1;/* 從套接字接收IP數(shù)據(jù)報(bào) */ int size=recv(sock,buffer,BUFFER_SIZE,0);if(size>0){

      } ipparse(stdout,buffer);ipparse(file,buffer);

      第三篇:計(jì)算機(jī)網(wǎng)絡(luò) 課程設(shè)計(jì) 發(fā)送TCP數(shù)據(jù)包

      課設(shè)名稱:發(fā)送TCP數(shù)據(jù)包

      班級(jí):

      學(xué)號(hào):

      姓名:

      指導(dǎo)老師: 日期: 2012.6.15

      計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告

      目錄

      一.設(shè)計(jì)題目與要求........................................................................................................2

      1.設(shè)計(jì)題目................................................................................................................2

      2.設(shè)計(jì)要求................................................................................................................2

      二.需求分析...................................................................................................................2三.詳細(xì)設(shè)計(jì)...................................................................................................................2

      1.創(chuàng)建一個(gè)原始套接字,并設(shè)置IP頭選項(xiàng).................................................................3

      2.構(gòu)造IP頭和TCP頭...............................................................................................3

      3.計(jì)算校驗(yàn)和的子函數(shù)..............................................................................................4

      4.流程圖...................................................................................................................6

      四.調(diào)試分析...................................................................................................................7

      五.運(yùn)行結(jié)果...................................................................................................................7

      六.總結(jié)..........................................................................................................................8

      七.源程序......................................................................................................................9

      發(fā)送TCP數(shù)據(jù)包

      一.設(shè)計(jì)題目與要求

      1.設(shè)計(jì)題目

      發(fā)送TCP數(shù)據(jù)包 2.設(shè)計(jì)要求

      本設(shè)計(jì)的功能是填充一個(gè)TCP數(shù)據(jù)包,并發(fā)送給目的主機(jī)。

      1)以命令行形式運(yùn)行:TCP source_ip source_port dest_ip dest_port,其中SendTCP是程序名,source_ip為源端IP地址,source_port為源端口號(hào),dest_ip為目的地址,dest_port為目的端口號(hào)。

      2)其他的TCP頭部參數(shù)請(qǐng)自行設(shè)定。3)數(shù)據(jù)字段為“hello”。

      4)成功發(fā)送后在屏幕上輸出“send OK”。

      二.需求分析

      1.本程序需完成發(fā)送一個(gè)TCP數(shù)據(jù)包給目的主機(jī)

      2.程序的輸入:TCP source_ip source_port dest_ip dest_port,然后根據(jù)提示輸入要發(fā)送的數(shù)據(jù),回車即可。

      3.程序的輸出:Send OK!

      4.測(cè)試數(shù)據(jù) TCP 192.168.1.100 200 192.168.1.101 200

      三.詳細(xì)設(shè)計(jì)

      本課程設(shè)計(jì)的目標(biāo)是發(fā)送一個(gè)TCP數(shù)據(jù)包,可以利用原始套接字來(lái)完成這個(gè)工作。整個(gè)程序由初始化原始套接字和發(fā)送TCP數(shù)據(jù)包兩個(gè)部分組成。

      2發(fā)送TCP數(shù)據(jù)包

      1.創(chuàng)建一個(gè)原始套接字,并設(shè)置IP頭選項(xiàng)

      SOCKET sock;sock = socket(AF_INET,SOCK_RAW,IPPROTO_IP);或者:

      sock=WSASoccket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERLAPPED);這里,設(shè)置了SOCK_RAW標(biāo)志,表示我們聲明的是一個(gè)原始套接字類型。為使用發(fā)送接收超時(shí)設(shè)置,必須將標(biāo)志位置位置為WSA_FLAG_OVERLAPPED。在本課程設(shè)計(jì)中,發(fā)送TCP包時(shí)隱藏了自己的IP地址,因此我們要自己填充IP頭,設(shè)置IP頭操作選項(xiàng)。其中flag設(shè)置為ture,并設(shè)定 IP_HDRINCL 選項(xiàng),表明自己來(lái)構(gòu)造IP頭。

      setsockopt(sock, IPPROTO_IP, IP_HDRINCL,(char *)&Flag, sizeof(Flag));int timeout=1000; setsockopt(sock, sizeof(timeout));在這里我們使用基本套接字SOL_SOCKET,設(shè)置SO_SNDTIMEO表示使用發(fā)送超時(shí)設(shè)置,超時(shí)時(shí)間設(shè)置為1000ms。2.構(gòu)造IP頭和TCP頭

      這里,IP頭和TCP頭以及TCP偽部的構(gòu)造請(qǐng)參考下面它們的數(shù)據(jù)結(jié)構(gòu)。

      typedef struct _iphdr //定義IP首部 { UCHAR h_lenver;//4位首部長(zhǎng)度+4位IP版本號(hào) UCHAR tos;//8位服務(wù)類型TOS

      USHORT total_len;//16位總長(zhǎng)度(字節(jié))USHORT ident;//16位標(biāo)識(shí)

      USHORT frag_and_flags;//3位標(biāo)志位 UCHAR ttl;//8位生存時(shí)間 TTL

      UCHAR proto;//8位協(xié)議(TCP, UDP 或其他)

      SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,3發(fā)送TCP數(shù)據(jù)包

      USHORT checksum;//16位IP首部校驗(yàn)和 ULONG sourceIP;//32位源IP地址

      ULONG destIP;//32位目的IP地址

      }IP_HEADER;typedef struct psd_hdr //定義TCP偽首部 { ULONG saddr;ULONG daddr;//源地址 //目的地址

      UCHAR mbz;//沒(méi)用 UCHAR ptcl;

      USHORT tcpl;//協(xié)議類型 //TCP長(zhǎng)度

      }PSD_HEADER;typedef struct _tcphdr //定義TCP首部 { USHORT th_sport;//16位源端口 USHORT th_dport;//16位目的端口 ULONG th_seq;//32位序列號(hào) ULONG th_ack;//32位確認(rèn)號(hào)

      UCHAR th_lenres;//4位首部長(zhǎng)度/6位保留字 UCHAR th_flag;//6位標(biāo)志位 USHORT th_win;//16位窗口大小 USHORT th_sum;//16位校驗(yàn)和 USHORT th_urp;//16位緊急數(shù)據(jù)偏移量

      }TCP_HEADER;

      3.計(jì)算校驗(yàn)和的子函數(shù)

      在填充數(shù)據(jù)包的過(guò)程中,需要調(diào)用計(jì)算校驗(yàn)和的函數(shù)checksum兩次,分別用于校驗(yàn)IP頭和TCP頭部(加上偽頭部),其實(shí)現(xiàn)代碼如下:

      USHORT checksum(USHORT *buffer, int size)

      4發(fā)送TCP數(shù)據(jù)包

      { unsigned long cksum=0;while(size >1){ cksum+=*buffer++;size-=sizeof(USHORT);} if(size){ cksum += *(UCHAR*)buffer;} cksum =(cksum >> 16)+(cksum & 0xffff);cksum +=(cksum >>16);return(USHORT)(~cksum);}

      5發(fā)送TCP數(shù)據(jù)包

      4.流程圖

      開(kāi)始構(gòu)造原始套接字并初始化填充IP首部計(jì)算IP首部校驗(yàn)和構(gòu)造TCP偽首部填充TCP首部計(jì)算TCP首部校驗(yàn)和填充發(fā)送緩沖區(qū)填入目的地址發(fā)送數(shù)據(jù)包結(jié)束

      6發(fā)送TCP數(shù)據(jù)包

      四.調(diào)試分析

      本程序流程簡(jiǎn)單,調(diào)試過(guò)程中沒(méi)有出現(xiàn)大的問(wèn)題。

      調(diào)試過(guò)程中沒(méi)有出現(xiàn)重大的語(yǔ)法錯(cuò)誤,主要是運(yùn)行的結(jié)果不理想,和預(yù)期的結(jié)果有差距。填充數(shù)據(jù)包的程序部分是不容易出錯(cuò)的。至于數(shù)據(jù)包的發(fā)送,由于是利用函數(shù)sendto()來(lái)實(shí)現(xiàn)的,而sendto()是面向UDP的,將協(xié)議類型修改為UDP(Header.proto=IPPROTO_UDP;)后,調(diào)試運(yùn)行成功,問(wèn)題得到解決。

      調(diào)試時(shí),要添加 #include #include #pragma comment(lib,“ws2_32.lib”)不然編譯出錯(cuò)。

      五.運(yùn)行結(jié)果

      1.輸入:TCP 192.168.1.100 200 192.168.1.101 200

      7發(fā)送TCP數(shù)據(jù)包

      2.輸入要發(fā)送的字符串:“hello”按Ctrl+Z發(fā)送

      六.總結(jié)

      通過(guò)本次課程設(shè)計(jì),我對(duì)發(fā)送TCP數(shù)據(jù)包的原理有了一定的了解。理解了TCP數(shù)據(jù)報(bào)的報(bào)文格式、TCP連接時(shí)的三次握手和TCP連接結(jié)束時(shí)的四次握手的過(guò)程及它們的作用。此外,在設(shè)計(jì)過(guò)程中,通過(guò)查閱資料,也讓我對(duì)TCP的三大特點(diǎn)(流量控制、差錯(cuò)控制、擁塞控制)有了認(rèn)識(shí)。,在課程設(shè)計(jì)過(guò)程中,由于編程知識(shí)的欠缺,使我在課程設(shè)計(jì)過(guò)程中不是很順利,編程知識(shí)的欠缺是我的最大障礙,不過(guò),這也給了我動(dòng)力,我會(huì)努力去學(xué)好編程的相關(guān)知識(shí),為以后的學(xué)習(xí)和工作打下基礎(chǔ)。最后,感謝老師安排了此次課程設(shè)計(jì)。

      發(fā)送TCP數(shù)據(jù)包

      七.源程序

      #include #include #include #include #include #include #include #include #pragma comment(lib,“ws2_32.lib”)

      #define IPVER 4 //IP協(xié)議預(yù)定 #define MAX_BUFF_LEN 65500 //發(fā)送緩沖區(qū)最大值

      typedef struct ip_hdr //定義IP首部 {

      UCHAR h_verlen;//4位首部長(zhǎng)度,4位IP版本號(hào) UCHAR tos;//8位服務(wù)類型TOS USHORT total_len;//16位總長(zhǎng)度(字節(jié))USHORT ident;//16位標(biāo)識(shí) USHORT frag_and_flags;//3位標(biāo)志位 UCHAR ttl;//8位生存時(shí)間 TTL UCHAR proto;//8位協(xié)議(TCP, UDP 或其他)USHORT checksum;//16位IP首部校驗(yàn)和 ULONG sourceIP;//32位源IP地址 ULONG destIP;//32位目的IP地址

      發(fā)送TCP數(shù)據(jù)包

      }IP_HEADER;

      typedef struct tsd_hdr //定義TCP偽首部 {

      ULONG saddr;//源地址 ULONG daddr;//目的地址 UCHAR mbz;//沒(méi)用 UCHAR ptcl;//協(xié)議類型 USHORT tcpl;//TCP長(zhǎng)度

      }PSD_HEADER;

      typedef struct tcp_hdr //定義TCP首部 {

      USHORT th_sport;//16位源端口 USHORT th_dport;//16位目的端口 ULONG th_seq;//32位序列號(hào) ULONG th_ack;//32位確認(rèn)號(hào)

      UCHAR th_lenres;//4位首部長(zhǎng)度/6位保留字 UCHAR th_flag;//6位標(biāo)志位 USHORT th_win;//16位窗口大小 USHORT th_sum;//16位校驗(yàn)和

      USHORT th_urp;//16位緊急數(shù)據(jù)偏移量

      }TCP_HEADER;

      //CheckSum:計(jì)算校驗(yàn)和的子函數(shù)

      USHORT checksum(USHORT *buffer, int size){ unsigned long cksum=0;while(size >1)

      發(fā)送TCP數(shù)據(jù)包

      { cksum+=*buffer++;size-=sizeof(USHORT);} if(size){ cksum += *(UCHAR*)buffer;} cksum =(cksum >> 16)+(cksum & 0xffff);cksum +=(cksum >>16);return(USHORT)(~cksum);}

      int ReadData(char *str,int maxlen){ int readlen=0;char ch=NULL;if(str==NULL||maxlen<=0){

      printf(“ReadData Error!!n”);

      return 0;//failed } printf(“Input Data(End By Ctrl+Z): n”);while(maxlen){

      ch=getchar();

      if(ch==EOF)break;

      str[readlen++]=ch;maxlen--;

      發(fā)送TCP數(shù)據(jù)包

      } } str[readlen]=NULL;return readlen;int main(int argc, char* argv[]){ WSADATA WSAData;SOCKET sock;

      IP_HEADER ipHeader;TCP_HEADER tcpHeader;PSD_HEADER psdHeader;

      char Sendto_Buff[MAX_BUFF_LEN];//發(fā)送緩沖區(qū)

      unsigned short check_Buff[MAX_BUFF_LEN];//檢驗(yàn)和緩沖區(qū) char tcp_send_data[1000];

      BOOL flag;int rect,nTimeOver;if(argc!= 5){ printf(“Usage: SendTcp soruce_ip source_port dest_ip dest_port n”);return false;} read_data_len=ReadData(tcp_send_data,1000);int read_data_len=0;

      發(fā)送TCP數(shù)據(jù)包

      if(read_data_len<=0)return 1;

      if(WSAStartup(MAKEWORD(2,2), &WSAData)!=0){ printf(“WSAStartup Error!n”);return false;} if((sock=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,NULL,0, WSA_FLAG_OVERLAPPED))==INVALID_SOCKET){ printf(“Socket Setup Error!n”);return false;} flag=true;if(setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(flag))==SOCKET_ERROR){ printf(“setsockopt IP_HDRINCL error!n”);return false;} nTimeOver=1000;if(setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO,(char*)&nTimeOver, sizeof(nTimeOver))==SOCKET_ERROR){ printf(“setsockopt SO_SNDTIMEO error!n”);return false;}

      發(fā)送TCP數(shù)據(jù)包

      //填充IP首部

      ipHeader.h_verlen=(IPVER<<4 | sizeof(ipHeader)/sizeof(unsigned long));ipHeader.tos=(UCHAR)0;ipHeader.total_len=htons((unsigned short)sizeof(ipHeader)+sizeof(tcpHeader)+read_data_len);ipHeader.ident=0;//16位標(biāo)識(shí) ipHeader.frag_and_flags=0;//3位標(biāo)志位 ipHeader.ttl=128;//8位生存時(shí)間 ipHeader.proto=IPPROTO_TCP;//協(xié)議類型 ipHeader.checksum=0;//檢驗(yàn)和暫時(shí)為0 ipHeader.sourceIP=inet_addr(argv[1]);//32位源IP地址 ipHeader.destIP=inet_addr(argv[3]);//32位目的IP地址

      //計(jì)算IP頭部檢驗(yàn)和

      memset(check_Buff,0,MAX_BUFF_LEN);memcpy(check_Buff,&ipHeader,sizeof(IP_HEADER));ipHeader.checksum=checksum(check_Buff,sizeof(IP_HEADER));

      //構(gòu)造TCP偽首部

      psdHeader.saddr=ipHeader.sourceIP;psdHeader.daddr=ipHeader.destIP;psdHeader.mbz=0;psdHeader.ptcl=ipHeader.proto;psdHeader.tcpl=htons(sizeof(TCP_HEADER)+read_data_len);

      //填充TCP首部

      tcpHeader.th_dport=htons(atoi(argv[4]));//16位目的端口號(hào) tcpHeader.th_sport=htons(atoi(argv[2]));//16位源端口號(hào)

      發(fā)送TCP數(shù)據(jù)包

      tcpHeader.th_seq=0;//SYN序列號(hào) tcpHeader.th_ack=0;//ACK序列號(hào)置為0 //TCP長(zhǎng)度和保留位

      tcpHeader.th_lenres=(sizeof(tcpHeader)/sizeof(unsigned long)<<4|0);tcpHeader.th_flag=2;//修改這里來(lái)實(shí)現(xiàn)不同的標(biāo)志位探測(cè),2是SYN,1是//FIN,16是ACK探測(cè) 等等

      tcpHeader.th_win=htons((unsigned short)16384);//窗口大小 tcpHeader.th_urp=0;//偏移大小 tcpHeader.th_sum=0;//檢驗(yàn)和暫時(shí)填為0

      //計(jì)算TCP校驗(yàn)和

      memset(check_Buff,0,MAX_BUFF_LEN);memcpy(check_Buff,&psdHeader,sizeof(psdHeader));

      memcpy(check_Buff+sizeof(psdHeader),&tcpHeader,sizeof(tcpHeader));

      //填充發(fā)送緩沖區(qū)

      memset(Sendto_Buff,0,MAX_BUFF_LEN);memcpy(Sendto_Buff,&ipHeader,sizeof(IP_HEADER));

      memcpy(Sendto_Buff+sizeof(IP_HEADER), &tcpHeader,sizeof(TCP_HEADER));memcpy(check_Buff+sizeof(PSD_HEADER)+sizeof(TCP_HEADER), tcp_send_data,read_data_len);tcpHeader.th_sum=checksum(check_Buff,sizeof(PSD_HEADER)+ sizeof(TCP_HEADER)+read_data_len);memcpy(Sendto_Buff+sizeof(IP_HEADER)+sizeof(TCP_HEADER), tcp_send_data,read_data_len);

      發(fā)送TCP數(shù)據(jù)包

      int datasize=sizeof(IP_HEADER)+sizeof(TCP_HEADER)+read_data_len;//發(fā)送數(shù)據(jù)報(bào)的目的地址 SOCKADDR_IN dest;memset(&dest,0,sizeof(dest));dest.sin_family=AF_INET;dest.sin_addr.s_addr=inet_addr(argv[3]);dest.sin_port=htons(atoi(argv[4]));

      rect=sendto(sock,Sendto_Buff,datasize, 0,(struct sockaddr*)&dest, sizeof(dest));if(rect==SOCKET_ERROR){ printf(“send error!:%dn”,WSAGetLastError());return false;} else

      closesocket(sock);WSACleanup();return 1;} printf(“nsend ok!n”);

      第四篇:基于數(shù)據(jù)包捕獲與分析的個(gè)人防火墻論文

      基于數(shù)據(jù)包捕獲與分析的個(gè)人防火墻論文

      本套設(shè)計(jì)論文描述及運(yùn)行界面展示

      摘 要

      數(shù)據(jù)包過(guò)濾是一個(gè)用軟件或硬件設(shè)備對(duì)向網(wǎng)絡(luò)上傳或從網(wǎng)絡(luò)下載的數(shù)據(jù)流進(jìn)行有選擇的控制過(guò)程。數(shù)據(jù)包過(guò)濾的功能通常是在將數(shù)據(jù)包從一個(gè)網(wǎng)站向另一個(gè)網(wǎng)絡(luò)傳送的過(guò)程中允許或阻止它們的通過(guò)(更為常見(jiàn)的是在從英特網(wǎng)向內(nèi)部網(wǎng)絡(luò)傳輸數(shù)據(jù)時(shí),或從內(nèi)部網(wǎng)絡(luò)向英特網(wǎng)傳輸)。若要完成數(shù)據(jù)包過(guò)濾,你就要設(shè)置好規(guī)則來(lái)指定哪些類型的數(shù)據(jù)包被允許通過(guò)和哪些類型的數(shù)據(jù)包將會(huì)被阻止。

      基于數(shù)據(jù)包過(guò)濾的防火墻,能夠很好地保護(hù)用戶在與網(wǎng)絡(luò)連接時(shí)的安全性。

      我們的目標(biāo),就是通過(guò)截獲數(shù)據(jù)包,并且對(duì)其進(jìn)行分析,來(lái)放行或阻止網(wǎng)絡(luò)訪問(wèn),從而達(dá)到保護(hù)計(jì)算機(jī)安全的目的。

      本論文主要講述了下面幾點(diǎn):

      一、數(shù)據(jù)包捕獲及網(wǎng)絡(luò)安全技術(shù)

      二、系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

      三、測(cè)試及其他

      關(guān)鍵字:數(shù)據(jù)包捕獲;防火墻;網(wǎng)絡(luò)安全

      Abstract Packet Filtering is the process a piece of software or device takes to selectively control the flow of data to and from a network.Packet Filters allow or block packets, usually while routing them from one network to another(most often from the Internet to an internal network, and vice-versa).To accomplish packet filtering, you set up rules that specify what types of packets are to be allowed and what types are to be blocked.The packet filtering based firewall can protect the security of computers very well.Our goal is to capture and analysis data packets ,so we can examines all packets that pass in and out of it to prevent packets from passing through ,and the computer is protected.The thesis presents these aspects:

      1、Technology of Packet Filtering and Network Security

      2、How to implement the system

      3、Testing document and others Key Words: Packet Filtering、Firewall、network security

      目 錄 第一章 緒論 1 第一節(jié) 課題意義1 第二節(jié) 課題綜述1

      一、國(guó)內(nèi)外發(fā)展情況 1

      二、網(wǎng)絡(luò)安全技術(shù)介紹 4

      三、防火墻介紹 6

      四、防火墻技術(shù)發(fā)展趨勢(shì)8

      五、防火墻產(chǎn)品發(fā)展趨勢(shì)10 第二章 需求分析 11 第一節(jié) 需求分析11

      一、功能調(diào)查11

      二、初步設(shè)計(jì)12 第二節(jié) 可行性分析 12

      一、技術(shù)可行性及方案選擇 12 第三節(jié) 開(kāi)發(fā)環(huán)境及工具 13

      一、開(kāi)發(fā)環(huán)境13

      二、開(kāi)發(fā)工具14 第三章 基礎(chǔ)實(shí)現(xiàn)技術(shù)介紹 15 第一節(jié) MFC介紹15 第二節(jié) 數(shù)據(jù)包過(guò)濾技術(shù) 15

      一、數(shù)據(jù)包 15

      二、數(shù)據(jù)包過(guò)濾是怎樣工作的16

      三、包過(guò)濾的優(yōu)點(diǎn) 16 第四章 系統(tǒng)總體設(shè)計(jì)18 第一節(jié) 功能分析18 第二節(jié) 系統(tǒng)工作流程 19

      一、系統(tǒng)工作流程圖 18

      二、原理分析20

      三、系統(tǒng)工作過(guò)程描述 21 第五章 子模塊設(shè)計(jì) 22 第一節(jié) 模塊分析21

      一、模塊劃分原則 22

      二、模塊劃分23

      三、模塊接口定義 25 第二節(jié) 子模塊詳細(xì)設(shè)計(jì) 26

      一、注冊(cè)模塊26

      二、查詢模塊28

      三、流量統(tǒng)計(jì)模塊 29 第六章 出現(xiàn)問(wèn)題及解決辦法 32 第一節(jié) 出現(xiàn)問(wèn)題32 第二節(jié) 無(wú)法解決的問(wèn)題 33 第七章 測(cè)試 34 第一節(jié) 測(cè)試方案34 第二節(jié) 測(cè)試實(shí)例35 第三節(jié) 測(cè)試總結(jié)39 結(jié)束語(yǔ) 40 致謝 41 參考文獻(xiàn)42

      第五篇:數(shù)據(jù)包捕獲與協(xié)議實(shí)驗(yàn)報(bào)告

      計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)(實(shí)習(xí))報(bào)告

      Ⅰ.實(shí)驗(yàn)(實(shí)習(xí))名稱 :數(shù)據(jù)包捕獲與協(xié)議分析

      實(shí)驗(yàn)(實(shí)習(xí))日期

      專業(yè)姓名:學(xué)號(hào):(或使用青島農(nóng)業(yè)大學(xué)實(shí)驗(yàn)報(bào)告紙)

      1、實(shí)驗(yàn)?zāi)康模?)掌握網(wǎng)絡(luò)協(xié)議分析工具Ethereal的使用方法;

      (2)截獲數(shù)據(jù)包并對(duì)它們觀察和分析,了解協(xié)議的運(yùn)行機(jī)制;

      2、實(shí)驗(yàn)內(nèi)容:

      (1)設(shè)計(jì)一個(gè)捕獲HTTP實(shí)現(xiàn)的完整過(guò)程,并對(duì)捕獲的結(jié)果進(jìn)行分析和統(tǒng)計(jì)。

      要求:

      (2)設(shè)計(jì)一個(gè)捕獲TCP實(shí)現(xiàn)的完整過(guò)程,并對(duì)捕獲的結(jié)果進(jìn)行分析和統(tǒng)計(jì)。

      要求:給出捕獲某一數(shù)據(jù)包后的屏幕截圖。以16進(jìn)制形式顯示其包的內(nèi)容,并分析

      TCP報(bào)文(源端口、目的端口、序號(hào)、確認(rèn)號(hào),ACK、SYN、窗口等)。

      (3)設(shè)計(jì)一個(gè)捕獲ICMP實(shí)現(xiàn)的完整過(guò)程,并對(duì)捕獲的結(jié)果進(jìn)行分析和統(tǒng)計(jì)

      要求:給出捕獲某一數(shù)據(jù)包后的屏幕截圖。以16進(jìn)制形式顯示其包的內(nèi)容,并分析

      該ICMP報(bào)文。

      (4)設(shè)計(jì)一個(gè)捕獲IP數(shù)據(jù)包的過(guò)程,并對(duì)捕獲的結(jié)果進(jìn)行分析和統(tǒng)計(jì)

      要求:給出捕獲某一數(shù)據(jù)包后的屏幕截圖。以16進(jìn)制形式顯示其包的內(nèi)容,并分析

      在該數(shù)據(jù)包中的內(nèi)容:版本首部長(zhǎng)度、服務(wù)類型、總長(zhǎng)度、標(biāo)識(shí)、片偏移、壽命、協(xié)議、源Ip地址、目的地址

      3.實(shí)驗(yàn)總結(jié)(掌握了哪些內(nèi)容?遇到了什么問(wèn)題?如何解決的?你的體會(huì)或收獲如何?)

      下載計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)_IP數(shù)據(jù)包的捕獲與分析[范文]word格式文檔
      下載計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)_IP數(shù)據(jù)包的捕獲與分析[范文].doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        目 錄 1.課題描述 ........................................................ 1 2 系統(tǒng)設(shè)計(jì)概述 ................................................... 1 3 課程設(shè)計(jì)的主......

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)報(bào)告書學(xué)院: 班級(jí):通信0902 姓名: 學(xué)號(hào): 指導(dǎo)老師: 實(shí)驗(yàn)三 交換機(jī)VLAN實(shí)驗(yàn) SWITCH2的拓?fù)鋱D 規(guī)劃IP: PCA的ip為:10.65.1.1 PCB的ip為:10.66.1.1 PCC的ip為:10.65.1......

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)——IP數(shù)據(jù)報(bào)流量統(tǒng)計(jì) 摘 要 本課程設(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......

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        目錄 一﹑實(shí)驗(yàn)室概述 ............................................................................................................................... 2 二、設(shè)計(jì)需......

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        第1章 概述 1.1醫(yī)院簡(jiǎn)介 沈陽(yáng)市第一人民醫(yī)院創(chuàng)建于1962年,是集醫(yī)療、科研、教學(xué)、預(yù)防保健于一體,以腦科為龍頭、多科系協(xié)調(diào)發(fā)展的大型綜合醫(yī)院,是遼寧中醫(yī)學(xué)院和沈陽(yáng)醫(yī)學(xué)院的......

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        課 程 設(shè) 計(jì) 說(shuō) 明 書 題 目: 計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì) 院(系): 專 業(yè): 班 級(jí): 學(xué) 號(hào): 姓 名:指導(dǎo)老師:完成時(shí)間: 201X年7月4日~201X年7月8日成績(jī):目錄 1 引言 ..............................

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        實(shí)驗(yàn)一交換式以太網(wǎng)路由互聯(lián) 一、 實(shí)驗(yàn)?zāi)康? 學(xué)習(xí)掌握交換式以太網(wǎng)主機(jī)連接配置和用路由器直接交付路由實(shí)現(xiàn)簡(jiǎn)單的網(wǎng)絡(luò)互連,了解交換式以太網(wǎng)絡(luò)內(nèi)部和多個(gè)交換式以太網(wǎng)絡(luò)之......

        計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)

        五邑大學(xué)大學(xué)計(jì)算機(jī)網(wǎng)絡(luò)原理課程設(shè)計(jì) 計(jì)算機(jī)網(wǎng)絡(luò)原理課程設(shè)計(jì) 說(shuō)明書 學(xué)號(hào):11080511 姓名:黃秉輝 五邑大學(xué) 計(jì)算機(jī)學(xué)院 五邑大學(xué)大學(xué)計(jì)算機(jī)網(wǎng)絡(luò)原理課程設(shè)計(jì) 一、課程設(shè)計(jì)......