IP数据包的捕获与分析设计报告

更新时间:2023-10-26 21:59:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

CENTRAL SOUTH UNIVERSITY

计算机网络课程设计报告

题 目IP数据包的捕获与分析 学生姓名 胡 壮

班级学号 计科1106班 0909112924

指导教师 穆 帅 设计时间 2014年1月

1

目录

第一章 绪论 ............................................................3

1.1课题研究的意义 ..................................................3 1.2捕获数据包的常用方法 ............................................3 第二章 系统需求分析 ....................................................4

2.1课程设计题目与要求 ..............................................4 2.2 IP数据包格式 ...................................................6 2.3程序流程图 ......................................................7 2.4实验环境 ........................................................9 第三章系统总体框架 .....................................................9

3.1套接字模块 ......................................................9 3.2 IP数据包的捕获模块 .............................................9 3.3 IP数据包分析模块 ...............................................9 3.4输出模块 ........................................................9 第四章详细设计与实现 ..................................................10

4.1数据结构的定义 .................................................10 4.2初始化工作 .....................................................11 4.3套接字的创建和设置 .............................................12 4.4数据包的捕获与分析 .............................................13 4.5信息的输出 .....................................................14 第五章程序运行结果与分析 ..............................................15

5.1程序运行结果截图 ...............................................15 5.2程序中有待改进的地方 ...........................................16 第六章 总结 ...........................................................17 参考文献 ..............................................................17 附 录 ..............................................................18

2

第一章 绪论

现如今,计算机网络已经彻彻底底地改变了人们的生活。大量的数据都是经过计算机网络传输的,而TCP/IP协议是计算机网络中最重要的协议之一。计算机网络中绝大多数数据都是以IP数据包的形式发送和接受的。所以IP数据包的捕获是很多计算机安全技术的基础。

1.1课题研究的意义

计算机之间进行通信时,交互的所有信息都封装在数据包中。因此,通过采集网络数据并对其进行相应的分析,可以清楚地了解到进行通信的计算机的通信目的。首先,分析采集到的数据包,可以确定网络是否受到攻击入侵;其次,也可以使用采集到的数据包来分析网络应用程序可能出现的问题的原因;此外,通过网络数据采集和统计可以清楚的了解整个网络在各个时段内的网络负载情况,从而判断网络使用得是否合理。除了以上谈到的几个方面以外,数据包采集分析还有其他很多用途.在研究IPv4网络的同时,我们还对IPv6协议进行了初步的研究并通过对数据报的分析,了解了在不同网络环境下IPv6数据包的封装格式以及在网络中的传输路径。目前,在同一子网范围内,可以通过邻居计算机发现协议自动配置主机的本地一链路IPv6地址,并获取子网内其他主机的通信地址,通过该地址可以实现子网内的主机间纯IPv6环境下的通信。但由于现在整个因特网并不支持IM协议,因此IPv6数据包要在网间传输,必须通过基于双协议栈的IPv4隧道(Tunnel)技术,将EM数据报封装在IPv4包头中,并通过指定的支持IM协议的路由在Internet中传送到目的地,再由目的主机进行数据报解析。获取IPv6数据报中的信息。

1.2捕获数据包的常用方法

目前常用的捕获数据包的方法有原始套接字、LibPcap、WinPcap和JPcap等方法。它们各有特点,实现起来有难有易,如何选择取决于具体需求与程序员的喜好。下面分别对它们作简单介绍。

套接字是网络应用编程接口。应用程序可以使用它进行网络通信而不需要知道底层发生的细节。有时需要自己生成一些定制的数据包或者功能并希望绕开Socket提供的功能,原始套接字(RawSocket)满足了这样的要求。原始套接字能够生成自己的数据报文,包括报头和数据报本身的内容。通过原始套接字,可以更加自如地控制Windows下的多种协议,而且能够对网络底层的传输机制进行控制。

3

LibPcap是一种与系统无关,采用分组捕获机制的分组捕获函数库,用于访问数据链路层,它在不同的平台上采用统一的编程接口,使用LibPcap编写的程序可自由的跨平台使用。同时LibPcap是一个独立于系统接口的用户级的抓包库,它为底层网络监听提供了可移植框架。它的应用包括网络统计集合、安全监听、网络调试等。

WinPcap是一个基于Win32的捕获数据包和网络分析的体系结构,它包括一个内核级的包过滤器,一个底层的动态链接库(Packet.dll),一个高层并且与系统无关的库(WPcap.dll,基于LibPcap0.6.2版本)。WinPcap是集成于

Windows95,98,ME,NT,2000和XP操作系统的设备驱动程序,它可以从网卡捕获或者发送原始数据,同时能够过滤并且存储数据包。

JPcap是一个能够捕获、发送网络数据包的Java类库包。这个包用到了LibPcap和原始套接字API。JPcap支持Ethernet,IPv4,IPv6,ARP/RARP,TCP,UDP,ICMPv4协议。JPcap是一个Java类集合,它为网络数据包的捕获提供接口和系统支持。其最初版本是2000年6月发布的JPcap0.01版,此后几经修改,到2003年4月发布了最新的JPcap0.4版。

第二章 系统需求分析

2.1课程设计题目与要求

本次实验的要求在网络环境,使用VC++编写程序实现捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

程序的具体要求如下:

l)以命令行形式运行:ipparse logfile,其中ipparse是程序名,而logfile则代表记录结果的日志文件。

2)在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。 3)当程序接收到键盘输入Ctrl+C时退出。

2.2 IP数据包格式

4

只有先了解IP数据包的格式,才能对IP数据包进行解析,下图是IP数据包的格式:

IP数据包由首部和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的,可选字段之后是数据部分。其中,首部固定部分中的各字段的长度及意义如下:

(1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。

(2)首部长度 占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。

(3)区分服务 占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。

(4)总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为2^16-1=65535字节。在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送

5

本文来源:https://www.bwwdw.com/article/guk2.html

Top