计算机网络课设IP数据包的捕获

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1北京理工大学珠海学院网络编程实践报告_2014_—_2015_学年第_1_学期题目:IP数据包捕获学院:计算机学院专业班级:网络工程2班学号:1202050210152015年1月4日2IP数据包捕获摘要摘要:IP数据报的内容体现了网际互联层的网间协议的协议机制。解析IP数据报,对把握网络的运行情况以及协议机理都很有帮助。很多具体应用也与此紧密相关。在VC++环境下用套接字进行编程,实现了对网络节点上的数据报的捕获,并对其中各个参数域进行了解析。最后通过实例进行了演示。关键词:IP数据报;VC++目录3第一章相关背景知识与相关技术..........................错误!未定义书签。1.1背景知识...........................................................错误!未定义书签。1.2开发环境的术介绍.............................................错误!未定义书签。1.3网络编程技术介绍.............................................错误!未定义书签。第二章总体设计......................................................错误!未定义书签。2.1模块化设计总方案.................................................错误!未定义书签。2.2模块功能设计.........................................................错误!未定义书签。第三章详细设计......................................................错误!未定义书签。3.1数据结构设计..........................................................错误!未定义书签。3.2模块接口设计.........................................................错误!未定义书签。3.3模块实现设计..........................................................错误!未定义书签。第四章调试与测试..................................................错误!未定义书签。4.1调试过程中的主要问题.........................................错误!未定义书签。4.2测试过程与结果.....................................................错误!未定义书签。参考文献.......................................................................错误!未定义书签。心得体会.......................................................................错误!未定义书签。4一、相关背景知识与相关技术1.2背景知识计算机网络是计算机技术与通信技术紧密结合的产物,网络技术队信息产业的发展产生深远的影响,而且将发挥越来越大的作用。本章在介绍网络形成于发展历史的基础上,对网络定义、分类与拓扑构型等问题进行了系统的讨论,并对网络的应用、网络技术的研究与发展进行了探讨,以帮助人们对网络技术与应用有一个全面和准确的认识。IP数据包作为网络层的数据必然要通过帧来传输。一个数据包可能要通过多个不同的网络。每一个路由器都要讲接收到的帧进行拆包和处理,然后封装成另外一个帧。帧的格式与长度取决于网络所采用的协议。从网络层—数据链路层来看,由于IP数据包的最大长度为65535B,那么它所使用的网络的数据链路层最大传输单元的长度为65535B,那么传输的效率一定会很高。但是实际上大量使用的网络的最大传输单元长度都比IP数据包的最大长度短。以太网的MTU长度为1500B,它远小于IP数据包的最大长度。因此,使用这些网络传输IP数据包时,要对IP数据包进行分成若干较小的片濑传输,这些片的长度小于或等于数据链路层MTU的长度。1.2开发环境技术介绍本系统前台采用Microsoft公司的VisualC++6.0作为主要开发工具;该系统在安全、准确性和运行速度方面都占有一定优势。1.3网络编程技术介绍本次课程设计主要是通过用VC++编程实现对网络中IP数据包流量的统计,实际上是编制程序,监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址统计出该源地址在该时间段内发出的IP包的个数,通过本次课程设计可以将VC++在一段时间内对IP数据包的捕获。加深了对VC++的理解和运用能力,同时也增长了知识,开阔了视野,对于以后的学习有很大的帮助。5二、总体设计1.IP数据包各个部分理解IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移量、生存时间、上层协议类型、头校验合、源IP地址和目的IP地址等内容。2.基本要求根据IP数据包的标准格式,编写程序捕获IP数据包并进行解析,并将解析后各IP包的头部与数据字段写入输出文件。三、系统设计1.系统功能结构通过对相应的IP数据包进行分析可以得出:●IP数据包版本的信息●IP数据包头长度的信息●IP数据包服务类型的信息●IP数据包数据包总长度的信息●IP数据包数据包标识的信息●IP数据包分段标志的信息●IP数据包分段偏移值的信息●IP数据包源IP地址的信息●IP数据包目的IP地址的信息通过对以上的IP数据报的分析可以得到具体的网络流量状况,并通过对其进行分析,得到当前网络的状况的流量分析结果,从而实现高效的管理。62.设计流程图生成输出文件创建原始套接字捕获IP数据包解析IP数据包退出系统3.具体功能实现1)网卡设置为了获取网络中的IP数据包,必须对网卡进行编程,在这里使用套接字(socket)进行编程。但是,在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配的数据包或是以广播形式发出的数据包。对于其他形式的数据包,如已到达网络接口,但却不是发送到此地址的数据包,网络接口在骓投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取与自己无关的数据包。我们要想获取网络设备的所有数据包,就是需要将网卡设置为混杂模式。2)接受数据包在程序中可使用recv()函数接收经过的IP包。该函数有四个参数,第一个参数接收操作所用的套接字描述符;第二个参数接收缓冲区的地址;第三个参数接收缓冲区的大小,也就是所要接收的字节数;第四个参数是一个附加标志,如果对所发送的数据没特殊要求,直接设为0。因为IP数据包的最大长度是65535B,因此缓冲区的大小不能小于65535B。设置缓冲区后,可利用循环来反复监听接收IP包,用recv()函数实现接收功能。73)定义IP头数据结构没有详细的进行IP数据包的定义,而是利用IP数据包的结构进行调用使得成为一个虚拟的IP数据报。例如:ip.Version就是从IP头中取出IP数据源的。inet_ntoa(*(in_addr*)&ip.DstAddr)就是从IP头中取出目的IP地址的。后面的依次同理进行求解。4)IP包解析解析IP包的字段有两种策略。针对长度为8位、16位和32位的字段(或子字段)时,可以利用IP-HEADER的成员直接获取。要解析长度不是8位倍数的字段(或子字段)时,可以利用C语言中的移位以人、及与、或操作完成。4.实验结果如上图所示,上半部分是IP数据包各个部分的解析,当IP数据包中协议类型为UDP时在下方会相应显示UDP数据包的解析。8四、实验心得通过这次的课程设计,我基本掌握了用套接字编程来实现获取并解析IP数据包的方法。当然,过程要比想象艰辛得多。首先是一个设计思想的问题。众所周知,IP数据报的格式说明了IP协议都具有什么功能。但是由于在数据报环节知识的薄弱,我查阅了相关资料,才大致了解了IP数据报的各种位与协议的概念和意义。进而在脑中才形成了解决问题的理念——网卡可以接收流经其的各种数据报,所以毫无疑问的应当围绕它进行编程实现。但是这也正是我最迷惑的地方——因为完全不知道如何使用套接字socket()函数——毕竟是以前从未接触过的领域。后来通过在一些网络编程教材上的了解和与做同类题目同学的讨论,我编程的思路才逐渐清晰起来。这次课程设计教会我的不仅仅只是如何实践运用与其相关的知识,更重要的是让我懂得个人的实践比单纯的讨论重要,要单纯的讨论比单纯的空想有效。同时,本次课设也大大提高了我编程的自信,让我感受到了成功的喜悦。9五、附录1.参考文献《计算机网络(第四版)》主编:谢希仁出版社:电子工业出版社出版时间:2004年7月《计算机网络课程设计》主编:吴功宜胡晓英张仁何云王宁出版社:机械工业出版社出版或修订时间:2005年9月《计算机网络设计》主编:易建勋出版社:人民邮电出版社出版或修订时间:2007年10月《计算机网络》主编:吴功宜出版社:清华大学出版社2.实验代码#includewinsock2.h#includews2tcpip.h#includeiostream.h#includestdio.h#pragmacomment(lib,ws2_32.lib)typedefstruct_IP_HEADER{union{BYTEVersion;BYTEHeadlen;};BYTEServiceType;WORDTotalLen;WORDID;union{WORDFlags;//标志(前3位)WORDFragOff;//报头标长(后4位),IP头的长度};BYTETTL;BYTEProtocol;WORDHdrChksum;//头校验和DWORDSrcAddr;//源地址DWORDDstAddr;//目的地址BYTEOptions;}IP_HEADER;10typedefstruct_UDP_HEADER{unsignedshortsourport;unsignedshortdestport;unsignedshortuslength;unsignedshortchecksum;}UDP_HEADER,*PUDP_HEADER;voidgetVersion(BYTEb,BYTE&version){version=b4;}voidgetIHL(BYTEb,BYTE&total_len){total_len=(b&0x0f)*4;}char*parseServiceType_getProcedence(BYTEb){switch(b5){case7:returnNetworkControl;break;case6:returnInternetworkControl;break;case5:returnCRITIC/ECP;break;case4:returnFlashOverride;break;case3:returnFlsah;break;case2:returnImmediate;break;case1:returnPriority;break;case0:11returnRoutine;break;default:returnUnknow;break;}}char*parseServiceType_getTOS(BYTEb){b=(b1)&0x0f;switch(b){case0:returnNormalservice;break;case1:returnMinimizemonetarycost;break;case2:returnMaximizereliability;break;case4:returnMaximizethroughput;break;c

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功