任务三计算机网络实验IP数据报捕获与分析.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
任务三计算机网络实验IP数据报捕获与分析 本实验的目的是捕获本机网卡的IP数据报,对捕获的IP包进行解析,并输出以下字段:版本号、总长度、标志位、片偏移、协议、源地址和目的地址。 实验环境平台是Windows,编程环境是VC 6.0,语言是C++。 实验原理中,数据报格式是以太帧由一个包含三个字段的帧头开始,前两个字段包含了物理地址,各六个字节,头部的第三个字段包含了16位的以太帧类型。帧头后面是数据区。根据帧类型可以判断是哪种数据包,一般常用的有0X0080(IP数据包)、0X0806(ARP请求/应答)和0X8035(RARP请求/应答)三种类型。 IP协议提供了无连接的、不可靠的数据传输服务。同时IP协议的一个重要功能是为网络上的包传递提供路由支持。TCP/IP协议使用IP数据报这个名字来指代一个互联网数据包。IP数据报由两部分组成,前面的头部和后面的数据区,头部含有描述该数据报的信息,包括源IP地址和目的IP地址等。 在IP数据报的报头中的众多信息可根据协议类型字段区分出该数据包的类型,常用的有TCP包、UDP包、ICMP包等,各格式分别如下所示: IP数据报格式 TCP数据报格式 ICMP数据报格式 UDP数据报格式 捕获数据包的方法有原始套接字、LibPcap、WinPcap和JPcap等方法。本次实验选用套接字方法。套接字是网络应用编程接口。应用程序可以使用它进行网络通信而不需要知道底层发生的细节。 原始套接字能够生成自己的数据报文,包括报头和数据报本身的内容。通过原始套接字,可以更加自如地控制Windows下的多种协议,而且能够对网络底层的传输机制进行控制。 网络数据包截获机制一般指通过截获整个网络的所有信息流,根据信息源主机、目标主机、服务协议端口等信息,简单过滤掉不关心的数据,再将用户感兴趣的数据发送给更高层的应用程序进行分析。 一般数据包的传输路径依次为网卡、设备驱动层、数据链路层、IP层、传输层、最后到达应用程序。IP数据包的捕获就是将经过数据链路层的以太网帧拷贝出一个备份,传送给IP数据包捕获程序进行相关的处理。 数据包捕获函数库是一个独立于操作系统的标准捕获函数库。主要提供一组可用于查找网络接口名称、打开选定的网络接口、初始化、设置包过滤条件、编译过滤代码、捕获数据包等功能函数。对捕获程序而言,只需要调用数据包捕获函数库的这些函数就能获得所期望的IP数据包。 这种捕获程序与数据包捕获函数库分离的机制,使得编写的程序具有很好的可移植性。IP数据包捕获程序的核心部分就是数据包分析器。数据包分析器应具有识别和理解各种协议格式(IP、TCP、UCP、ICMP协议)和帧格式的能力,并对捕获的数据进行分析和统计处理。 编写数据包捕获程序的主要工作就是如何实现数据包分析器的功能。首先对以太网帧头进行结构体定义,总共有以下13项内容:Version、HeadLen、ServiceType、TotalLen、Identifier、Flags、FragOffset、TimeToLive、Protocol、HeadChecksum、SourceAddr、DestinAddr、Options。 根据数据包的捕获机制,分别对以上13个内容编写捕获的C语言程序,进行一一捕获,通过开始的运行程序中运行编译程序后所得到的.exe文件,就可以看到捕获到的信息。 捕获成功之后,最后将其各个信息进行解析,并写到一个文件之中。以上各个程序的编写都是在Visual Stdio C++ 6.0编译器中完成。 网卡设置为了获取网络中的IP数据包,必须对网卡进行编程,在这里使用套接字进行编程。但是,在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配的数据包或是以广播形式发出的数据包。对于其他形式的数据包,如已到达网络接口,但却不是发送到此地址的数据包,网络接口在骓投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取与自己无关的数据包。 要想获取网络设备的所有数据包,就需要将网卡设置为混杂模式。
- 料峭9952022-12-30资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
- 粉丝: 92
- 资源: 2万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助