解析IP數(shù)據(jù)包課程設(shè)計(jì)報(bào)告_第1頁(yè)
解析IP數(shù)據(jù)包課程設(shè)計(jì)報(bào)告_第2頁(yè)
解析IP數(shù)據(jù)包課程設(shè)計(jì)報(bào)告_第3頁(yè)
解析IP數(shù)據(jù)包課程設(shè)計(jì)報(bào)告_第4頁(yè)
解析IP數(shù)據(jù)包課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

沈陽(yáng)理工大學(xué)課程設(shè)計(jì)專用紙 No沈陽(yáng)理工大學(xué)課程設(shè)計(jì)專用紙 Noii沈陽(yáng)理工大學(xué)沈陽(yáng)理工大學(xué)成績(jī)?cè)u(píng)定表學(xué)生姓名張澤凡班級(jí)學(xué)號(hào)1303050326專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)課程設(shè)計(jì)題目解析IP數(shù)據(jù)包評(píng)語組長(zhǎng)簽字:成績(jī)?nèi)掌?014年12月29日

課程設(shè)計(jì)任務(wù)書學(xué)院信息科學(xué)與工程學(xué)院專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生姓名張澤凡班級(jí)學(xué)號(hào)1303050326課程設(shè)計(jì)題目解析IP數(shù)據(jù)包實(shí)踐教學(xué)要求與任務(wù):任務(wù):解析IP數(shù)據(jù)包。要求:1.設(shè)一個(gè)解析IP數(shù)據(jù)包的程序。2. 根據(jù)這個(gè)程序,說明IP數(shù)據(jù)包的結(jié)構(gòu)及IP協(xié)議的相關(guān)問題。工作計(jì)劃與進(jìn)度安排:計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)時(shí)間安排在教學(xué)第 18周、第19周內(nèi)完成,按上述題目要求完成查閱資料、程序設(shè)計(jì)、調(diào)試、運(yùn)行等工作。時(shí)間安排如下:1、查閱資料、與初步設(shè)計(jì);1-2天2、整體功能設(shè)計(jì)、代碼編碼與初步調(diào)試。1-3天3、調(diào)試和軟件功能的測(cè)試和驗(yàn)收。1-3天4、答辯與論文撰寫。1-2天指導(dǎo)教師:2014年12月日專業(yè)負(fù)責(zé)人:2014年12月日學(xué)院教學(xué)副院長(zhǎng):2014年12月日沈陽(yáng)理工大學(xué)課程設(shè)計(jì)專用紙 No沈陽(yáng)理工大學(xué)課程設(shè)計(jì)專用紙 Noiii沈陽(yáng)理工大學(xué)沈陽(yáng)理工大學(xué)TOC\o"1-5"\h\z\o"CurrentDocument"1課程設(shè)計(jì)目的 1\o"CurrentDocument"2 課程設(shè)計(jì)要求 2\o"CurrentDocument"3相關(guān)知識(shí) 3\o"CurrentDocument"4課程設(shè)計(jì)分析 6\o"CurrentDocument"5程序代碼 11\o"CurrentDocument"6運(yùn)行結(jié)果與分析 18\o"CurrentDocument"7參考文獻(xiàn) 18沈陽(yáng)理工大學(xué)課程設(shè)計(jì)專用紙 No沈陽(yáng)理工大學(xué)課程設(shè)計(jì)專用紙 No沈陽(yáng)理工大學(xué)沈陽(yáng)理工大學(xué)return"NetworkControl";break;case6:return"InternetworkControl";break;case5:return"CRITIC/ECP";break;case4:return"FlashOverride";break;case3:return"Falsh";break;case2:return"Immediate";break;case1:return"Priority";break;case0:return"Routine";break;default:return"Unknown"}}char*parseServiceType_getTOS(BYTEb){ .b=(b>>1)&0x0f;switch(b){case0:return"Normalservice";break;return"Minimizemonetarycost";break;return"Maximizereliability";break;case4:return"Maximizethroughput";break;case8:return"Minimizedelay";break;case15:return"Maximizesecurity";break;default:return"Unknown";}}voidgetFlags(WORDw,BYTE&DF,BYTE&MF){DF=(w>>14)&0x01;MF=(w>>13)&0x01;}voidgetFragoff(WORDw,WORD&fragoff){fragoff=w&0x1ffff;}char*getProtocol(BYTEProtocol){switch(Protocol){return"ICMP";return"IGMP";case4:return"IPinIP";case6:return"TCP";case8:return"EGP";case17:return"UPD";case41:return"IPv6";case46:return"OSPF";default:return"UNKNOWN";}}voidipparse(FILE*file,char*buffer){IP_HEADERip=*(IP_HEADER*)buffer;fseek(file,0,SEEK_END);BYTEversion;getVersion(ip.Version,version);fprintffile,"版本二%d\r\n",version);BYTEheaderLen;getIHL(ip.HdrLen,headerLen);fprintf(file,"頭長(zhǎng)度=%d(BYTE)\r\n",headerLen);fprintffile,"服務(wù)類型=%s,%s\r\n");parseServiceType_getProcedence(ip.ServiceType);parseServiceType_getTOS(ip.ServiceType);fprintffile,”數(shù)據(jù)報(bào)長(zhǎng)度=%d(BYTE)\r\n",ip.TotalLen);fprintffile,"數(shù)據(jù)報(bào)ID=%d\r\n",ip.ID);BYTEDF,MF;getFlags(ip.Flags,DF,MF);fprintffile,"分段標(biāo)志DF=%d,MF=%d\r\n",DF,MF);WORDfragOff;getFragOff(ip.FragOff,fragOff);fprintffile,"分段偏移值=%d\r\n",fragOff);fprintf(file,"生存期=%d(hops)\r\n",ip.TimeToLive);fprintf(file,"協(xié)議二%s\r\n",getProtocol(ip.Protocol));fprintffile,"頭校驗(yàn)和=0x%0x\r\n",ip.HdrChksum);fprintf(file,"源IP地址二%s\r\n",inet-ntoa(*(in-addr*)&ip.SrcAddr));fprintf(file,”目的IP地址二%s\r\n",inet_ntoa(*(in-addr*)&ip.DstAddr));fprintf(file,"\r\n");intmain(intargc,char*argv口){if(argc!=2){printf("usageerror!\n");return-1;}FILE*file;if((file=foopen(argv[1],"wb+"))==NULL){printf("failtoopenfile%s",argv{1});return-1;}WSADATAwsData;if(WSAStartup(MAKEWORD(2,2),$WSdATA)!=0){PRINTF("WSAStartupFAILED!\n");return-1;}SOCKETsock;if((sock=socket(AF_INET,SOCK_RAW,ippROTO_IP))==INVALID_SOCKET){PRINTF("CREATEsocketfailed!\n");return-1;}BOOLflag=TRUE;IF(setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(CHAR*)&FLAG,sizeof(flag))==SOCKET_ERROR){printf("setsockoptfailed!\n");return-1;}charhostName[128];if(gethostname(hostName,100)==SOCKET_ERROR){ ―printf("gethostnamefailed!\n");return-1;hostent*pHostIP;if(pHostIP=gethostbyname(hostName))==NULL){printf("gethostbynamefailed!\n");return-1;}sockaddr_inaddr_in;addr_in.sin_addr=*(in_addr*)pHostIP->h_addr_list[0];addr_in.sin_family=AF_INET;addr_in.sin_port=htone(6000);if(bind(sock,(PSOCKADDR)&addr_in,sizeof(addr_in))==SOCKET_ERROR){printf("bindfailed");return-1;}DWORDdwValue=1;#defineIO_RCVALL_WSAIOW(IOC_VENDOR,1)DWORDdwBufferLen[10];DWORDdwBufferInLen=1;DWORDdwBytesReturned=0;if(WSAIoctl(sock,IO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),&dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL)==NULL,NULL)==SOCKET_ERROR){printf("icotlsocketfailed\n");return-1;}#defineBUFFER_SIZE65535charbuffer[BUFFER_SIZE];printf("開始解析\n\n");while(true){intsize=recv(sock,buffer,BUFFER_SIZE,0);if(size>0){ipparse(stdout,buffer);ipparse(filebuffer);}}fclose(file);return0:}6運(yùn)行結(jié)果與分析本程序設(shè)計(jì)也可以利用Winpcap完成,部分核心代碼的簡(jiǎn)略提示如下。獲取所有存在的網(wǎng)絡(luò)設(shè)備的鏈表。Pcap_if_t*alldevs;// 網(wǎng)絡(luò)設(shè)備結(jié)構(gòu)鏈表Charerrbuf[PCAP_ERRBUF_SIZE];//錯(cuò)誤信息/*所有網(wǎng)絡(luò)設(shè)備的信息^以鏈表形式存在alldevs中*/pcap_findalldevs(&alldevs,errbuf);從鏈表中選擇物理Ethernet卡后,用混雜模式打開,調(diào)用的函數(shù)為pcap_open_live(constchar*device,intsnaplen,intpromisc,intto_ms,char*errbuf).在這個(gè)函數(shù)中,第一個(gè)參數(shù)為要打開的設(shè)備名稱,這里是Ethernet卡,可以從設(shè)備鏈表alldevs中選出。第二個(gè)參數(shù)應(yīng)為捕獲的數(shù)據(jù)包長(zhǎng)度,填入 65535以保證在鏈路層的整個(gè)數(shù)據(jù)包都被捕獲。第三個(gè)參數(shù)為打開模式,填入1表明用混雜模式打開網(wǎng)卡。最后兩個(gè)參數(shù)本別為讀入超時(shí)的時(shí)間和保存錯(cuò)誤信息。編譯、設(shè)置過濾器。charpacket_filter[]="ip”;pcap_compile(adhandle,&fcode,packet_filter,1,netmask);〃 編譯過濾器pcap_setfilter(adhandle,&fcode);// 設(shè)置過濾器adhandle參數(shù)為網(wǎng)卡描述符,fcode參數(shù)是一個(gè)BPF偽匯編程序,packet_

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論