版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成都工业学院(课程设计实验报告)院系:计算机工程系课程名称:计算机网络设计名称:解析IP数据包专业名称: 网络工程班 级:1305022姓名:牟黎明学 号: 11 指导老师: 刘枝盛老师成绩: 设计时间:2014年12月22日一2014年12月26日成都工业学院 计算机工程系 1305022成都工业学院 计算机工程系 1305022班牟黎明(2013511237) 11号共共18页第页//解析IP包的版本信息voidgetVersion(BYTEb,BYTE&version){version=b>>4; //右移运算}//解析IP包的头部长度voidgetlHL(BYTEb,BYTE&result){result=(b&0x0f)*4;}//解析IP包的服务类型char*parseServiceType_getProcedence(BYTEb){switch(b>>5) //“>>”代表右移运算符 例如:14>>2的值为3,因为14(即二进制的00001110)向右移两位等于3(即二进制的00000011){case7:return"NetworkControl";break;case6:return"InternetworkControl"break;case5:return"CRITIC/ECP";break;case4:return"FlashOverride";break;case3:return"Flsah";break;case2:return"Immediate";break;case1:return"Priority";break;case0:return"Routine";break;default:return"Unknow";break;}}//解析IP包的服务级别char*parseServiceType_getTOS(BYTEb){b=(b>>1)&0x0f;switch(b){case0:return"Normalservice";break;case1:return"Minimizemonetarycost" ;break;case2:return"Maximizereliability";break;case4:return"Maximizethroughput";break;case8:return"Minimizedelay";break;case15:return"Maximizesecurity";break;default:return"Unknow";}}//解析IP包的标志位voidgetFlags(WORD,BYTE&DF,BYTE&MF{DF=(w»14)&0x01;Mf=(w»13)&0x01;}//解析IP包的分段标志位voidgetFragOff(WORWWOR&fragOff){fragOff=W&0x1fff;}//解析IP包的协议类型char*getProtocol(BYTEProtocol){switch(Protocol/*协议*/){case1:return"ICMP";case2:return"IGMP";case4:return"IPinIP";case6:return"TCP";case8:return"EGP"case17:return"UDP"case41:return"IPv6";case46:return"RSVP"case89:return"OSPF"default:return"UNKNOW}//解析完毕,输岀结果,从电脑中读取,并打印到屏幕voidipparse(FILE*file,char*buffer)//IP查询,分析{IP_HEADERp=*(IP_HEADERbuffer;fseek(file,0,SEEK_END//解析IP包的版本信息BYTEversion;getVersion(ip.Version,version);fprintf(file,"版本号=%d\r\n",version);//解析IP包的头部长度BYTEheaderLen;getlHL(ip.HdrLen,headerLen);fprintf(file,"报头标长=%d(BYTE)\r\n",headerLen);//解析IP包的服务类型与等级fprintf(file,"服务类型=%s,%s\r\n",parseServiceType_getProcedence(ip.ServiceType),parseServiceType_getTOS(ip.ServiceType));//解析IP的总长度fprintf(file,"总长度=%d(BYTE)\r\n",ip.TotalLen);//解析IP包的标志符fprintf(file,"标识=%d\r\n",ip.ID);//解析IP包的标志位BYTEDF,MF;getFlags(ip.Flags,DF,MF);fprintf(file,"标志DF=%d,MF=%d\r\n",DF,MF);//解析IP包的分段偏移WORDagOff;getFragOff(ip.FragOff,fragOff);fprintf(file,"分段偏移值=%d\r\n",fragOff);//解析IP包的生存期fprintf(file,"生存期=%d(hopes)\r\n",ip.TimeToLive);//解析IP包的协议类型fprintf(file,"协议=%s\r\n",getProtocol(ip.Protocol));
//解析IP包的头部校验和fprintf(file,"头校验和=0x%0x\r\n",ip.HdrChksum);//解析IP包的IP地址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(fileH*********************************************\r\n");fprintf(fileH*********************************************\r\n");//以下为主函数intmain(){//生成一个txt文件,作为记录IP解析的数据intnRetCode=0;{FILE*file;if((file=fopen("history.txt","wb+"))==NULL{printf("failtoopenfile%s" );return-1;}//fopen函数(C语言书中讲到)用来打开一个文件,其调用的一般形式为件指针名=fopen(文件名,使用文件方式);//其中,“文件指针名”必须是被说明为FILE类型的指针变量//“文件名”是被打开文件的文件名;是字符串常量//“使用文件方式”是指文件的类型和操作要求。 “文件名”是字符串常量或字符串数组//初始化SocketWSADATWsData;WSAStartup(MAKEWORD),&wsData);//建立原始SocketSOCKETock;sock=socket(AF_INETSOCK_RA阳PROTO」P//设置IP头部操作选项,flag设置为trueBOOLIag=TRUEsetsockopt(sock,IPPROTO_ipiP_HDRINCRchar*)&flag,sizeof(flag));//获取本地主机名charhostName[128];gethostname(hostName,100);//获取本地主机IP地址hostent*pHostIP;pHostIP=gethostbyname(hostName);//填充SOCKADDRJN勾sockaddr_inaddr_in;addr_in.sin_addr=*( in_addr*)pHostlP->h_addr_Iist[0];addr_in.sin_family= AF」NETaddr_in.sin_port=htons(6000);//把原始Socket绑定到本地网卡bind(sock,(PSOCKAD)&addr_in,sizeof(addr_in));//设置SOCK_RAWSIO_RCVALL接收所有的IP包DWORDWVaIue=1;#defineIO_RCVALL_WSAIOWOC_VENDQRDWORDWBufferLen[10];DWORDWBufferInLen=1;DWORDWBytesReturned=0;WSAIoctI(sock,IO_RCVAL|&dwBufferInLen,sizeof(dwBufferInLen),&dwBufferLen, sizeof(dwBufferLen),&dwBytesReturned, NULLNULL;#defineBUFFER_SIZE5535//监听经过本机的IP包charbuffer[BUFFER_SIZ]Eprintf("请输入命令符ParsePacket开始抓包!\n");chara[20];gets_s(a);if(strcmp(a,"ParsePacket")==0){printf("开始解析经过本机的IP数据包,请您耐心等待,如果半天没反应,可能为网络未连接,解析较慢:\n");
while(true){intsize=recv(sock,buffer, BUFFER_SIZ,E);if(size>0){ipparse(stdout,buffer);ipparse(file,buffer);printf("请选择是否继续,1:继续;2,退岀。\n");charb[20];gets_s(b);if(strcmp(b,"1")==0){ipparse(stdout,buffer);ipparse(file,buffer);}else{return0;}}}fclose(file);//文件关闭return0;}else{printf("您的输入有误,请退岀后从新打开本程序! \n");system("pause");}}returnnRetCode;}4.3程序运行结果4.3.1.图为登陆界面,提示输入命令符: ParsePacket国BC:\Windcw5\5y5tem32n国BC:\Windcw5\5y5tem32n'cndexe图7程序的运行方式4.3.2.命令符输入错误后将提示你输入有误,不能进入:Fa)*£BFacket-H□C;\Usfs^Administrator\Deslctcp^觸析[陀璨包辻圜ComdeApalicationl\Detuc\ConsoleApiKFa)*£BFacket-H□煲,:荀退岀后从新汀幵本程序!纟米续•…
4.3.3.命令符输入正确后进入本程序进行抓包,图为截获的 IP数据包:解析:版本=4,表示版本是IPv4;头长度=20(BYTE),表示报头字段为20个字节;服务类型4.3.3.命令符输入正确后进入本程序进行抓包,图为截获的 IP数据包:长度=15360(BYTE);分段标志DF=0,MF=0表示数据报可以分片,并且是最后一个分片;分段偏移值=0表示此分片在整个数据包的相对位置为0;生存期=64(hops),表示生存期为64;协议=UDP,表示使用的协议为UDP;头校验和=0xba3e,表示头校验和为0xba3e;源IP地址=27 ;目的IP地址=94.3.4.此时可选择1号键继续抓包,再次抓包结果图为下:(选择 2号键后程序退出)存期■&4(hapas)卑g3-0x1di_-1^2.1&8_1_127illt*39■2)D;\字习文件M算*4阿窘甲暹设1一谓柠卩站舞包汽®改进存期■&4(hapas)卑g3-0x1di_-1^2.1&8_1_127illt*39肓选择杲否謎续・・:魅续;2,退岀.=nauitine^hornaJ.度702枝触D2TDcerui_ce=nauitine^hornaJ.度702枝触D2TDcerui_ce悴走SP=0,riF=0勿啜偏移tt=t4主仔期=64(hopes〉柿=TCP头楼芈利=0"血療【卩:皿址=d92,ifeS-i,刍的IP抱址=1总2.14G.127174A39五、课程设计小结经过一个学期计算机网络的学习, 我学习到了基本的理论知识,了解到了网络协议、网络管理各方面的相关规定和技术,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。这次计算机网络课程设计的解析IP数据包”,通过近一周的上机操作,充分应用了所学的计算机网络和C++的知识、以及c语言的知识,并去图书馆查阅了一些书集和上网搜索一部分相当资料,了解哪些不认识的代码,粗略设计出该程序。总
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 写友谊的中考满分记叙文
- 2027届长治市城区六上数学期末质量检测试题含解析
- C 语言程序设计 期末复习题
- 黑龙江省绥化市北林区2027届六年级数学第一学期期末经典试题含解析
- 专升本真题2022浙江专升本语文真题答案
- 便利店与加油站业务知识2023年相关试题试卷
- 办公作风规范建设管理标准
- 2026年中国制糖杀菌剂市场调查研究报告
- 2026度保密教育线上培训考试题库及答案
- 智能幕墙专项施工方案
- 2026安徽黄山供元财税管理咨询有限公司招聘3人考试备考试题及答案详解
- 应急防暑药品使用课件
- 短视频剪辑审核标准操作流程SOP
- 2026年高三政治秋季开学第一课
- 浙江省丽水市2025-2026学年七年级下期数学期末阶段性学业测试试题卷
- 牙科诊所医疗质量质控手册
- 2025年学校保卫人员招聘考试题库及答案
- 食品进货查验制度全流程培训
- 心脏外科术后疼痛管理
- 2026年邮政营业高级测试题及答案
- 2025-2030长春现代农业示范区冷链物流设施建设项目研究
评论
0/150
提交评论