ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:231.84KB ,
资源ID:9068966      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9068966.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网络数据包的协议分析程序的设计开发毕业设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

网络数据包的协议分析程序的设计开发毕业设计.docx

1、网络数据包的协议分析程序的设计开发毕业设计网络数据包的协议分析程序的设计开发摘 要本文设计与实现了一个基于Linux下Libpcap库函数的网络数据包协议分析程序。程序的主要功能包括网络数据包捕获和常用网络协议分析。程序由输入/输出模块、规则匹配模块、数据捕获模块、协议分析模块组成。其中数据捕获模块和协议分析模块是本程序最关键、最主要的模块。本文的主要内容如下:首先介绍了网络数据包协议分析程序的背景和概念。其次进行了程序的总体设计:确定了程序的功能,给出了程序的结构图和层次图,描述了程序的工作流程,对实现程序的关键技术做出了分析。接着,介绍完数据包捕获的相关背景和Libpcap函数库后,阐述了

2、如何利用Libpcap函数库实现网络数据包捕获模块。然后对协议分析流程进行了详细的讲解,分析了常用网络协议。最后进行了程序的测试与运行:测试了程序能否按照预期的效果正确执行,印证了预期结果。关键词:Libpcap;Linux;数据包捕获;应用层;协议识别The Design and Development of Network Packet Protocol Analyzing ProgramAbstractThe thesis is an attempt to introduce an implementation of network protocol analyzing program

3、which is based on Libpcap, a famous network packet capture library on Linux. It has a rich feature set which includes capturing network packets and analyzing popular network protocols on Internet. The program is made up of an input/output module, a rules matching module, a packet capturing module an

4、d a protocol analyzing module. And the last two modules are key modules.The research work was described as followed. firstly, we introduce the background and concepts about network protocol analyzing programs; and we make an integrated design on the program, define functions of it, figure out its st

5、ructure and hierarchical graphs, describe the workflow of it, and analyze the key techniques used in it; Secondly, after elaborating on the background of packet capture and the Libpcap library, we state a approach to implement a packet capture module with Libpcap; Thirdly, we explain the workflow ab

6、out protocol analysis, and analyze common network protocols; Finally, we test our program to see whether it works as expected, fortunately, it does.Key words: Libpcap; Linux; Network packet capturing; Application layer; Protocol identification 目 录论文总页数:23页1 引言 11.1 课题背景 11.2 网络数据包协议分析程序简介 21.3 国内外研究

7、现状 22 网络数据包协议分析程序的总体设计 32.1 网络数据包协议分析程序的功能分析 32.2 系统的组成结构和工作流程 32.2.1 系统的结构框图 32.2.2 系统的结构和功能 42.2.3 程序的工作流程 52.3 系统实现的关键技术分析 63 网络数据包捕获模块的实现 73.1 网络数据包捕获简介 73.2 基于Libpcap的网络数据包捕获的实现 83.2.1 Libpcap安装 83.2.2 Libpcap中基本的数据结构和函数 83.3 数据捕获模块的实现 114 协议分析模块的实现 114.1 网络协议分析的总体流程 124.2 对TCP/IP模型中各层协议的分析 144

8、.2.1 以太网首部的分析与提取 144.2.2 IP首部的分析与提取 154.2.3 TCP/UDP首部的分析与提取 164.2.4 应用层协议的识别与分析 185 程序运行与测试 205.1 测试环境 205.1.1 硬件环境 205.1.2 程序运行环境 205.2 测试步骤 205.3 测试结果评价 20结 论 20参考文献 21致 谢 22声 明 231 引言1.1 课题背景随着计算机网络的不断发展,全球信息化已成为当今社会发展的趋势。但由于计算机网络自身所特具有的特点,比如联结形式多样性和网络的开放性、互连性等特征,所以导致网络易受黑客还有一些病毒的攻击。所以网上信息的安全和保密是

9、一个至关重要的问题。对于军用的自动化指挥网络和银行等传输敏感数据的计算机网络系统而言,其网上信息的安全和保密尤为重要。因此,网络必须有足够强的安全措施,否则该网络将是个无用、甚至会危及国家安全的网络。在计算机网络的世界里,存在着很多潜在的威胁,因此网络的安全措施应能全方位地应对各种不同的威胁,这样才可以真正的做到网络服务于社会,体现网络的先进性。计算机网络所面临的威胁大体可分为两种:一是对网络中信息的威胁;二是对网络中设备的威胁。影响计算机网络的因素很多,有些因素可能是有意的,也可能是无意的;可能是人为的,也可能是非人为的;可能是外来黑客对网络系统资源的非法使有,归结起来,针对网络安全的威胁主

10、要有三种:(1)人为的无意失误:如操作员安全配置不当造成的安全漏洞,用户安全意识不强,用户口令选择不慎,用户将自己的帐号随意转借他人或与别人共享等都会对网络安全带来威胁。(2)人为的恶意攻击:这是计算机网络所面临的最大威胁,敌手的攻击和计算机犯罪就属于这一类。此类攻击又可以分为以下两种:一种是主动攻击,它以各种方式有选择地破坏信息的有效性和完整性;另一类是被动攻击,它是在不影响网络正常工作的情况下,进行截获、窃取、破译以获得重要机密信息。这两种攻击均可对计算机网络造成极大的危害,并导致机密数据的泄漏。(3)网络软件的漏洞和“后门”:网络软件不可能是百分之百的无缺陷和无漏洞的,然而,这些漏洞和缺

11、陷恰恰是黑客进行攻击的首选目标,曾经出现过黑客攻入网络内部的事件,这些事件的大部分就是因为安全措施不完善所招致的苦果。另外,软件的“后门”都是软件公司的设计编程人员为了自便而设置的,一般不为外人所知,但一旦“后门”洞开,其造成的后果将不堪设想。为了及早发现并制止网络上的各种攻击,我们需要通过对网络上的数据进行分析来发现并找出问题,提前预防。这也是本论文的一个重要目的。网络安全管理员运用网络封包截获技术,抓取网络中有用的数据包,然后通过对数据包内容进行分析,确定哪些是有害的或者含有攻击企图的包,以此来达到对网络攻击的预防。同时许多防火墙也是基于包过滤技术的。本文将介绍网络数据包协议分析程序的工作

12、原理以及它的实现。1.2 网络数据包协议分析程序简介网络数据包协议分析程序是一种用于收集网络中有用数据的程序,这些数据可以是用户的帐号和密码,也可以是一些商用机密数据等。它是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。网络数据包协议分析程序的正当用处主要是分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用网络数据包协议分析程序来作出精确的问题判断。在合理的网络中,网络数据包协议分析程序的存在对系统管理员是至关重要的,系统管理员通过网络数据包协议分析程序可以诊断出大量的不可见模

13、糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯,有些甚至牵涉到各种的协议,借助于网络数据包协议分析程序系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机是哪一台、大多数通讯目的地是哪台主机、报文发送占用多少时间、或着相互主机的报文传送间隔时间等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。1.3 国内外研究现状现在国内外已经有很多成熟并且功能强大的网络数据包协议分析软件。比较著名的网络数据包协议分析软件有:开源软件:Wireshark、TcpDump。商用软件:EtherPeek下面对这几种软件进行简要的介绍:Wireshark: Wire

14、shark是一个开放源码的网络分析系统,也是是目前最好的开放源码的网络协议分析器,支持Linux和Windows平台。Wireshark起初由Gerald Combs开发,随后由一个松散的Wireshark团队组织进行维护开发。它目前所提供的强大的协议分析功能完全可以媲美商业的网络分析系统,自从1998年发布最早的0.2版本至今,大量的志愿者为Wireshark添加新的协议解析器,如今Wireshark已经支持五百多种协议解析。很难想象如此多的人开发的代码可以很好的融入系统中;并且在系统中加入一个新的协议解析器很简单,一个不了解系统的结构的新手也可以根据留出的接口进行自己的协议开发。这都归功于

15、Wireshark良好的设计结构。事实上由于网络上各种协议种类繁多,各种新的协议层出不穷。一个好的协议分析器必需有很好的可扩展性和结构。这样才能适应网络发展的需要不断加入新的协议解析器。TcpDump:顾名思义,TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。用尽量简单的话来定义TcpDump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。TcpDump以其强大的功能,灵活的截取策略,成为每个高

16、级的系统管理员分析网络,排查问题等所必备的工具之一。EtherPeek:这个工具软件开始只是一个网络分析器型的数据包监测软件,经过这些年的发展已经成为一个真正的网络管理工具并具有网站监视和分析等新的功能,被美国联邦调查局用来追踪逃犯、贩卖毒品的人、电脑黑客和一些被怀疑为外国间谍的人。是一个直观,功能强大的以太网网络和协议分析器。支持Macintosh和Windows平台。EtherPeek把查找和修复多平台上的复杂网络任务变得简单化。EtherPeek采用工业标准,非常容易使用,提供解码、过滤和诊断网络的功能。以友好图形界面出名,EtherPeek提供非常详细且多样化的网络使用信息,网络结点的

17、会话和数据包内容。在有问题的局域网络中使用EtherPeek执行一个自定的诊断测试,监控网络的通信和事件,跟踪非法的网络活动,测试和调试网络软硬件。2 网络数据包协议分析程序的总体设计2.1 网络数据包协议分析程序的功能分析对于网络数据包协议分析程序进行功能分析的第一步是要确立程序所要实现的目标,也就是程序最终要解决的问题。本程序所要实现的目标就是在共享式以太网中捕获根据过滤规则设置的流经本地网卡的数据包,并且对数据包中的信息进行分析。网络数据包协议分析程序必须完成对常用协议的识别和分析:要求至少实现TCP/IP协议簇几个基本协议的分析(ARP、RARP、TCP、UDP),以及应用层的常用协议

18、分析。为了减少设计的复杂度,程序采用字符界面。对网络数据包的捕获、规则过滤和对数据包的分析是本程序的主要功能。2.2 系统的组成结构和工作流程2.2.1 系统的结构框图基于以上分析,本文设计了网络数据包协议分析程序,图2-1是程序的结构框图。图2-1网络数据包协议分析程序结构框图下面对该程序的整体结构进行一下描述:该程序的运行环境是Fedora Core 4 linux。Fedora Core是linux的一个发行版,他的前身是Redhat linux。本程序通过调用安装在linux上的Libpcap函数库抓取经过本地网卡的数据包,从而完成数据包的捕获。然后将捕获后的数据包交给上层的数据处理模

19、块,进行协议分析。最后将分析后的数据显示在用户界面上。2.2.2 系统的结构和功能网络数据包的协议分析程序是一个基于Libpcap开发库,应用与共享以太网的网络分析程序如图2-2所示,系统主要包括4大模块:图2-2网络数据包的协议分析程序的层次图1、数据输入模块。该模块主要功能是接收用户输入用于捕获数据包的信息。其中包括选择用于捕获的网络接口和需要过滤的内容。2、数据捕获模块。该模块的主要功能是捕获流经本地网卡的所有数据。其原理是通过把网卡设置为混杂模式,使得网卡对所有流经它的数据包都交给上层程序处理。3、规则匹配模块,该模块的主要功能是根据用户的需求对需要捕获的数据包进行过滤设置。因为不是所

20、有经过本地网卡的数据报都对我们分析网络有用,而且如果将所有经过网卡的数据捕获会增加系统的开销。因此我们设置了一个规则匹配模块,当所捕获的信息与我们设置的规则相符时我们就把它交给数据处理模块,否则就丢弃。4、数据处理模块。该模块的主要功能是对捕获的数据进行分析显示处理。主要是调用协议分析模块和显示模块。41 协议分析模块。该模块的主要功能是对捕获的数据包进行协议分析。把数据包捕获下来后,我们需要对其分析才能知道网络中存在的安全问题。该模块主要是对TCP/IP各层的协议进行分析。42 显示模块。该模块的主要功能是将分析的结果显示给用户。对数据包进行协议分析后要把结果显示给用户本程序才结束。因为数据

21、包中包含的信息太多,如果全部显示给用户有所不便,所以我们挑选其中比较重要的信息输出给用户。2.2.3 程序的工作流程图2-3为本程序的流程图,下面其进行简要的叙述:1、程序开始时首先查找计算机上所有可用的网卡,并让用户选择用于捕获数据包的网卡。2、用户输入用于捕获数据包的网卡和过滤规则。只过滤用户所关心的信息。3、程序判断该网卡所在的网络是否为以太网,不是则中止,是则继续。因为本程序只能在共享以太网中进行数据捕获。4、编译用户设置的过滤规则。5、开始进行捕获,并分析数据,将数据显示给用户。当用户停止时就结束程序,否则继续捕获。图2-3 网络数据包的协议分析程序的流程图2.3 系统实现的关键技术

22、分析前面给出了网络数据包协议分析程序的总体结构、功能模块和工作流程。要实现程序预定的功能,就必须解决实现程序的关键技术。网络数据包协议分析程序要实现的关键技术包括:数据包捕获技术、对TCP/IP各层基本协议进行分析的技术、协议识别技术。1、数据包捕获技术:本程序要对网络中的数据进行分析,首先就要将网络中的数据包捕获下来。因此实现数据包捕获是本程序设计的基础也是首先要解决的技术问题。要实现共享以太网中的数据捕获,各个平台有不同的技术。在Linux有一个专门为程序员编写数据包捕获程序而开发的库:Libpcap。Libpcap是用户态的数据包截获API,具有独立性和可移植性,支持BPF过滤机制等。通

23、过调用Libpcap库函数可以轻易的实现共享以太网中数据包的截获,而且实时性相当的强,因为Libpcap是处于用户态所以减少了系统的开销。Libpcap是一个基于BPF的开放源码的捕包函数库。现有的大部分Linux捕包系统都是基于这套函数库或者是在它基础上做一些针对性的改进。2、对TCP/IP各层基本协议分析的技术:要对TCP/IP各层的基本协议进行分析,主要是要对所要分析的协议有充分的了解,特别是对各种协议的报头格式要有深入的了解。对各种协议进行分析时主要是将报头中的重要信息显示给用户,还有可能对数据包的正文信息解码。3、协议识别技术:由于OSI的7层协议模型,协议数据是从上到下封装后发送的

24、。对于协议的识别需要从下至上进行。例如,首先对网络层的协议识别后进行脱去网络层协议头。将里面的数据交给传输层分析,这样一直进行下去直到应用层。应用层以下的各种协议一般都可以通过下一层的协议中的关键信息来识别。但是应用层的协议种类相当多,无法从下层协议中识别。对于应用层协议识别的方法目前有几种技术:基于特征串的应用层协议识别、Venus Fast Protocol Recognition、以及端口识别。在本程序中我们采用的是端口识别技术。端口识别的原理是常用协议使用固定端口来进行通信。端口识别的优点是:简单、容易实现。缺点是:一些不常用协议不能被识别,常用协议修改端口后也无法识别。3 网络数据包

25、捕获模块的实现3.1 网络数据包捕获简介网络数据包截获一般指通过截获整个网络的所有信息流量,根据信息源主机,目标主机,服务协议端口等信息简单过滤掉不关心的数据,再将用户感兴趣的数据发送给更高层的应用程序进行分析。一方面要,网络截取模块要能保证截取到所有网络上的数据包,尤其是检测到被分片的数据包(这可能蕴涵着攻击)。另方面,数据截取模块截取数据包的效率也是很重要的。它直接影响整个入侵检测系统的运行速度。从广义的角度上看,一个包捕获机制包含三个主要部分:最底层是针对特定操作系统的包捕获机制,最高层是针对用户程序的接口,第三部分是包过滤机制。不同的操作系统实现的底层包捕获机制可能是不一样的,但从形式

26、上看大同小异。数据包常规的传输路径依次为网卡、设备驱动层、数据链路层、IP层、传输层、最后到达应用程序。而数据包捕获机制是在数据链路层增加一个旁路处理,对发送和接收到的数据包做过滤/缓冲等相关处理,最后直接传递到应用程序。值得注意的是,包捕获机制并不影响操作系统对数据包的网络栈处理。对用户程序而言,包捕获机制提供了一个统一的接口,使用户程序只需要简单的调用若干函数就能获得所期望的数据包。这样一来,针对特定操作系统的捕获机制对用户透明,使用户程序有比较好的可移植性。包过滤机制是对所捕获到的数据包根据用户的要求进行筛选,最终只把满足过滤条件的数据包传递给用户程序。3.2 基于Libpcap的网络数

27、据包捕获的实现3.2.1 Libpcap安装Libpcap提供了系统独立的用户级别网络数据包捕获接口,并充分考虑到应用程序的可移植性。Libpcap可以在绝大多数类unix平台下工作。在windows平台下,一个与Libpcap很类似的函数包winpcap提供捕获功能,其官方网站是http:/winpcap.polito.it/ Libpcap软件包可从http:/www.tcpdump.org/下载,解压后依此执行下列三条命令即可安装。./configuremakemake install但如果希望Libpcap能在linux上正常工作,则必须使内核支持“packet”协议,也即在编译内核时

28、打开配置选项CONFIG_PACKET(选项缺省为打开)。3.2.2 Libpcap中基本的数据结构和函数主要函数:int pcap_findalldevs(pcap_if_t *alldevsp, char *errbuf)功能:枚举系统所有网络设备的信息参数:alldevsp:是一个pcap_if_t结构体的指针,如果函数pcap_findalldevs函数执行成功,将获得一个可用网卡的列表,而里面存储的就是第一个元素的指针。Errbuf:存储错误信息的字符串。返回值:int,如果返回0则执行成功,错误返回-1。pcap_t *pcap_open_live(char *device, in

29、t snaplen, int promisc, int to_ms, char *ebuf)功能:设置一个抓包描述符参数:其第一个参数是我们在上一节中指定的设备,snaplen是整形的,它定义了将被pcap捕获的最大字节数。当promisc设为true时将置指定接口为混杂模式(然而,当它置为false时接口仍处于混杂模式的特殊情况也是有可能的)。to_ms是读取时的超时值,单位是毫秒(如果为0则一直嗅探直到错误发生,为-1则不确定)。最后,ebuf是一个我们可以存入任何错误信息的字符串(就像上面的errbuf)。int pcap_compile(pcap_t *p, struct bpf_pr

30、ogram *fp, char *str, int optimize, bpf_u_int32 netmask)功能:编译过滤规则参数:第一个参数是会话句柄(pcap_t *handle在前一节的示例中)。接下来的是我们存储被编译的过滤器版本的地址的引用。再接下来的则是表达式本身,存储在规定的字符串格式里。再下边是一个定义表达式是否被优化的整形量(0为false,1为true,标准规定)。最后,我们必须指定应用此过滤器的网络掩码。函数返回-1为失败,其他的任何值都表明是成功的。int pcap_setfilter(pcap_t *p, struct bpf_program *fp)功能:设置过

31、滤规则。参数:这非常直观,第一个参数是会话句柄,第二个参数是被编译表达式版本的引用(可推测出它与pcap_compile()的第二个参数相同)。int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)功能:循环抓包直到用户中止。参数:第一个参数是会话句柄,接下来是一个整型,它告诉pcap_loop()在返回前应捕获多少个数据包(若为负值则表示应该一直工作直至错误发生)。第三个参数是回调函数的名称(正像其标识符所指,无括号)。最后一个参数在有些应用里有用,但更多时候则置为NULL。数据结构:struct pcap

32、_ifstruct pcap_if *next;char *name;char *description;struct pcap_addr *addresses;u_int flags;pcap_if *next; 如果非空,指向链的下一个元素。如果为空是链的最后一个元素。char *name; 指向一个字符串,该字符串是传给pcap_open_live()函数的设备名;char *description; 如果非空,指向一个对设备的人性化的描述字符串。pcap_addr *addresses; 指向网卡地址链中的第一个元素。u_int flags; PCAP_IF_网卡的标志。现在唯一可用的标识是PCAP_IF_LOOKBACK,它被用来标识网卡是不是lookback网卡。struct pcap_pkthdr struct timeval ts;/*ti

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1