网络数据包的捕获与分析【摘要】网络数据包的捕获对于网络安全有着巨大的作用,为我们更好的分析网络中的数据流提供了帮助。
本论文是基于Windows下开发一个网络监听工具,侧重点在于实现网络数据包的捕获,然后分析并显示捕获到的数据包信息这部分功能的实现,如分析:IP首部协议类型、源IP、目的IP和端口号等。
采用的是Winpcap(Windows Packet Capture)来实现的抓包功能。
通过VC++6.0中MFC编程实现通过一个完整界面来控制调用Winpcap中的函数来实现对网卡信息的捕获和循环捕获数据包,然后通过预先对于IP、TCP、UDP等数据包的定义和TCP/IP等协议来解析其中包含的内容并返回显示捕获到数据包的信息,当然也可以保存捕获到的数据包到指定地点以便进一步分析。
【关键词】Winpcap;数据包;捕获;分析The Capture and Analysis of Network Data PacketsWang Hang(Grade 11,Class 1, Major Network Engineering, Scho ol of Mathematics andComputer Science Dept, Shaanxi University of Technology, Hanzhong 723003, Shaanxi)Tutor: Jia WeiAbstract: The capture of network data packets plays an important part in network security, which is helpful for our better analysis of network data flow.This paper is about a network monitoring tool based on Windows system, which emphasizes particularly on realizing the capture and analysis of network data packets and then displays them. Take analysis as an example, it will check the type of the IP protocol, the source address of IP, the destination address of IP and the port e the Winpcap(Windows Packet Capture)to capture of data packets. In MFC programming of VC++6.0, the capture of network data packets can be realized via the invoking and control of the functions through a full control panel, and then the analysis of IP ,TCP,UDP and TCP/IP will be done before they are displayed. Certainly the information captured can be saved to the appointed destination in order to go through an advanced analysis.Key words:Winpcap;Data Packets;Capture;Analysis目录引言 (1)1概述 (1)1.1课题背景 (1)1.2国内外研究现状 (1)1.3课题研究的意义 (1)1.4课题研究的内容 (1)2相关知识介绍 (2)2.1TCP/IP协议简介 (2)2.1.1什么是 TCP/IP (2)2.1.2TCP/IP整体构架概述 (2)2.1.3TCP/IP中的协议 (2)2.2W IN P CAP开发技术详解 (4)2.2.1Winpcap介绍 (4)2.2.2Winpcap 的组成 (5)2.2.3Winpcap 数据结构 (6)2.2.4Winpcap 函数 (6)3系统设计方案及功能描述 (8)3.1系统设计方案 (8)3.2系统功能描述 (8)4系统编码实现 (10)4.1网络数据包捕获模块的实现 (10)4.1.1网络数据包捕获程序的编写过程 (10)4.1.2在程序中用到的WinPcap内核函数详细介绍 (11)4.1.3网络数据包捕获的应用 (12)4.2网络数据包分析模块的实现 (13)4.2.1网络数据包分析模块主要建立的类 (13)4.2.2IP协议分析类的设计 (13)4.2.3TCP协议分析类的设计 (14)4.2.4UDP协议分析类的设计 (16)4.2.5系统中变量函数的设计 (16)4.3主界面构造 (16)5软件测试 (18)总结 (20)参考文献 (21)致谢 (22)科技外文文献 (23)外文文献翻译 (35)附录A:软件开发源代码 (46)附录B:软件使用说明书 (64)陕西理工学院毕业设计引言随着网络技术的不断发展,通过网络将人与人的距离拉近,因此网络为来自世界各地不同的人、团体、机构构建了一个网络村。
网络的出现方便人们的日常生活及工作,在高度发展的今天,网络已经不仅是浏览信息的品台,还广泛的运用到了商业、办公、金融、政务等各行各业中,网络中的风险也越发突出,进而网络安全问题越来越受到关注。
因此,对网络的监控与管理势在必行,而想要监控和管理网络,首先就要获取网络中所传输的各类信息,才能进一步得进行监控和管理,可以说数据包的捕获是对网络监控与管理的前提,所以研究并开发出一种能够有效地实时捕获网络信息的系统具有极其重要的意义。
在网络中,信息是以数据包的形式传输,所以为了监控计算机当前网络信息,可以通过WinPcap来实现在当前计算机网络中传输的数据包的抓取,然后通过对捕获数据包中数据信息,进行过滤解析,得到所抓数据包的协议、数据长度,以及数据报内容等信息。
此外,此次毕业设计还注重研究,主要体现在应用层协议的识别方面,同时采用了基于正则表达式技术得到某种应用层协议的特征表达式。
而为了实现将抓包获取的数据进行解析并展现出来,本次毕业设计还要通过C++编程将其编写成为软件,以便于操作运用,能让获取的数据包数据进行解析后,在界面中显示出来,方便查看数据包各类信息,以及进一步的进行一些对应操作,达到我们解析数据包的目的,并可在日后能添加新功能,加强对数据包的分析能力。
1概述1.1课题背景随着网络技术的飞速发展,网络的普及,给我们带来了巨大的社会和经济效益,同时网络安全问题变得日益严重,计算机网络的设计、维护难度日益增加,安全问题正威胁着每一个网络用户,对网络安全的研究也越来越重要。
因此,人们迫切的需要能够分析、诊断和测试网络的工具,以防我们的电脑尽可能减少受到侵害。
对于网络数据包的捕获现在也有着很多的实现方法,存在着许多开源的sniffer软件供我们参考,但是其中的某些细节上还是有一些问题的存在,在效果和效率上都有一些问题,分析上也并不是很方便。
所以尝试选择了这个课题。
1.2国内外研究现状现在不论是网上的一些开源的Sniffer软件还是市面上出售的网络监听软件,其实其基础功能都是基于网络数据包捕获功能后扩展开的。
所以我们可以清晰的认识到网络数据包捕获功能的巨大作用和广泛的应用范围。
目前sniffer软件种类繁多,但是很多都存在一些问题,比如说:效率低,效果差,分析困难等等。
有些sniffer软件往往嵌入许多并不怎么使用的功能在里面,增加了操作的复杂性,使用起来反而不便。
所以真正想要找到一款操作简单使用方便的数据包捕获软件并不容易。
作为一名网络工程专业的学生,熟悉常用的各种计算机相关软件,特别是和网络相关的软件是应该的。
现在市场上的国内外的各种防火墙软件、网络监听软件和协议分析软件等软件种类繁多,让人有点眼花缭乱。
这些产品大多数品质都不错,各有各的特点,所以选择起来的难度也挺大。
我总是在一些比较著名的软件下载网站上获取一些比较受好评的软件来使用,然后从中选择适合自己的。
通过一系列的使用和学习,我希望能够自己完成一款功能适合自己使用的操作简单让人可以轻易上手的网络数据包捕获和简单分析的软件。
1.3课题研究的意义随着网络的飞速发展,Internet的迅速普及,网络已经深入到了我们的生活,跟我们息息相关。
伴随着网络带来的便利,网络安全问题也越来越受到人们的关注和重视。
防火墙也成了一个非常热门的课题,带来巨大的社会经济效益,保护我们的合法权益不受到侵害。
我选择的课题是windows下的网络数据包的捕获与分析,所以主要的研究方向和侧重点是在于最基本也是最核心的网络数据包的捕获和分析等功能上。
网络数据包的捕获对于网络安全领域有着无可代替的重要作用,不论是防火墙技术,网络监听技术或者是网络测试都离不开数据包的捕获,这是一切的基础,其他的功能都要基于这个功能才能实现。
1.4课题研究的内容由上所述,加强对网络中数据包传输的监管,已经越发显得重要。
而对网络中所传输的数据包进行捕获则是对网络中数据包管理的前提,通过监控分析网络中的数据包,是建设安全网络的保障。
本实验就是通过研究网络中数据包的传输情况,构建一个简单快捷的数据包抓包及分析软件:一、运用C++开发一个简单的软件实现通过调用winpcap来对网络中的基本数据包进行捕获。
二、通过winpcap中常用的库函数的使用方式,来实现了简单的小型的络数据包抓包器,并通过对原始包文的分析来展示当前网络的运行状况。
三、对捕获的数据包进行解析分类处理,能将所捕获的数据包中的信息解析罗列成数据表,并可导入日志文本存储。
通过以上步骤通过实现数据包的捕获、数据包信息的解析、流量的监控以及数据的导出。
2相关知识介绍2.1TCP/IP协议简介我们捕获数据包的主要目的就是要对捕获的数据包进行分析。
而我们目前使用的网络传输协议就是TCP/IP协议。
所以我们如果想更好的分析数据包就应该对此协议有点初步的了解。
下面我将简单的介绍一下TCP/IP协议。
2.1.1什么是 TCP/IPTCP/IP 是供已连接因特网的计算机进行通信的通信协议。
TCP/IP 指传输控制协议/网际协议(Transmission Control Protocol / Internet Protocol)。
TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准。