ARP包的封装、发送、捕获与解析软件开发毕业论文.doc
《ARP包的封装、发送、捕获与解析软件开发毕业论文.doc》由会员分享,可在线阅读,更多相关《ARP包的封装、发送、捕获与解析软件开发毕业论文.doc(42页珍藏版)》请在三一办公上搜索。
1、ARP包的封装、发送、捕获与解析软件开发摘 要互联网络是时代需求的产物,随着社会需求的不断增长,互联网络技术得到飞速发展,网络规模急剧膨胀,通过研究网络协议来提高网络通信的安全性变得非常重要。ARP协议是TCP/IP协议栈中一个非常重要的网络通信协议。在透彻理解ARP协议,深入了解ARP协议的分组格式和ARP的工作流程,熟悉Winpcap编程的基础上,本文设计开发了一个ARP包的封装、发送、捕获与解析软件,该软件主要用于辅助教学。程序是在Windows环境下使用Visual C+6.0和WinPcap网络编程工具编写的,在程序测试阶段则使用了网络管理工具Sniffer对程序的运行结果和效率进行
2、了测试。本文还对WinPcap以及Sniffer进行了简要介绍,并且在本文最后总结了开发程序过程中遇到的一些问题和解决办法,希望可以为学习网络编程和相关技术的人提供帮助。关键词:ARP协议;WinPcap;ARP数据包;SnifferABSTRACTInternet is the product of the times demand.With the increasing growing of social needs,Internet technologies is rapidly developing and the network size is rapidly expanding.I
3、t is important to improve the security of the network communications through studying network protocols. Arp is a very important network communications protocol in TCP/IP protocols.With the understanding of the Arp protocol and Arp-format and the ARP workflow and Familiaring with Winpcap programming
4、,I designed and developed a software, which is a software of packaging Arp packets, senting,catching and analyzing.This software is used to teaching.This procedure is programmed using Visual C+ 6.0 and WinPcap in Windows environment.In the testing stage,Sniffer is used to text the result of this pro
5、cedure and the efficiency of this procedure.This paper also introduces WinPcap and Sniffer,and concludes that some of the problems encountered in the procedure and their solutions in the end of this paper.I hope that these questions can provide assistance for the people who is learning network progr
6、amming and related technologies.Keywords: ARP protocol; WinPcap; ARP packet; Sniffer目 录第1章 前言11.1 课题研究的意义11.2 课题的研究现状11.3 课题研究的工作任务和预期结果1第2章 ARP协议概述22.1 TCP/IP协议栈22.2 ARP协议的引入32.3 ARP协议的原理42.3.1 ARP的分组格式52.3.2 ARP协议的工作流程6第3章 SNIFFER软件简介83.1 Sniffer概述83.2 Sniffer功能简介83.2.1 Sniffer封装功能介绍83.2.2 Sniffer
7、捕获功能介绍9第4章 网络编程工具124.1 Winpacp概述124.2 WinPcap的结构144.3 Winpcap的安装使用方法15第5章 软件开发175.1 需求规格说明175.1.2 引言175.1.2 数据描述175.1.3 功能需求185.2 概要设计说明195.3 详细设计说明195.4 代码实现245.4.1 本文系统的开发环境255.4.2 封装ARP包的函数255.4.3 发送ARP包的函数275.4.4 捕获、解析ARP包的函数275.5 测试285.5.1 封装测试285.5.2 发送测试295.5.3 捕获测试305.5.4 解析测试305.6 与Sniffer的
8、比较32第6章 毕业设计中遇到的问题及解决办法34第7章 结论36致谢38参考文献39第1章 前 言1.1 课题研究的意义虽然Sniffer是一个功能强大的网络管理工具,但是正是由于它功能强大的原因,它运行时占有的资源也是很大的,因此在某些方面做的不是很好,比如在捕获数据包的时候,由于它消耗的资源很大,因此当它捕获到数据包的时候并不能及时处理这些数据包,只能把这些数据包丢掉,这样对于我们教学来说并不是有利的,因此为了能够更好的帮助大家了解、掌握ARP协议及其运作过程,本人在透彻理解ARP协议和熟悉Winpcap编程的基础上,设计开发了一个ARP包的封装、发送、捕获与解析软件用于辅助教学。1.2
9、 课题的研究现状虽然ARP地址解析协议的定义已经给出了非常明确的解释,但是由于该协议工作在网络层以下的链路层上,是属于较底层的协议,国内外很少有人关心该协议的数据包通信过程,也正是因为这个原因,该协议下的攻击往往不容易被发现。随着网络攻击技术的发展,网络黑客越来越侧重于用采用较底层的协议,而且这种危害也日趋严重,比如现在的ARP欺骗技术1就是一个典型的例子。该技术主要是利用ARP协议中协议漏洞伪装目标主机的MAC地址非法窃取该主机的信息或者破坏该主机的正常的网络通信。鉴于这种现状,ARP协议的研究变得非常的重要,只有准确全面的研究ARP协议,解决ARP协议通信安全问题才能更好的提高网络通信的安
10、全性2。1.3 课题研究的工作任务和预期结果(1)构造ARP包,选择并打开网卡,将ARP包发送出去;(2)获取网络中的ARP数据包;(3)解析数据包的内容,将结果标准输出,并同时写入日志文件;(4)与Sniffer做对比,测试和评价该软件。第2章 ARP协议概述2.1 TCP/IP协议栈TCP/IP协议包含了一系列构成互联网基础的网络协议。这些协议最早发源于美国国防部的ARPA互联网项目。TCP/IP字面上代表了两个协议:TCP传输控制协议和IP互联网协议3。时间回放到1983年1月1日,在这天,互联网的前身Arpanet中,TCP/IP协议取代了旧的网络核心协议NCP(Network Cor
11、e Protocol),从而成为今天的互联网的基石。最早的的TCP/IP由Vinton Cerf和Robert Kahn两位开发,慢慢地通过竞争战胜了其它一些网络协议的方案,比如国际标准化组织ISO的OSI模型。TCP/IP成功的另一个因素在与对为数众多的低层协议的支持。这些低层协议对应与OSI模型中的第一层(物理层)和第二层(数据链路层)。每层的所有协议几乎都有一半数量的支持TCP/IP,例如:以太网(Ethernet),令牌环(Token Ring),光纤数据分布接口(FDDI),端对端协议(PPP),X.25,帧中继(Frame Relay),ATM,Sonet,SDH等。TCP/IP协
12、议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据
13、包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial、Line等)来传送数据。2.2 ARP协议的引入在任何时候,当主机或路由器有数据报要发送给另一个主机或路由器时,它必须有接收端的逻辑(IP)地址。但是IP数据报必须封装成祯才能通过物理网络。这就表示,发送端必须有接收端的物理地址。因此需要从逻辑地址到物理地址的映射4。使用静态映射和动态映射都可做到这
14、点,逻辑地址和物理地址之间的关联可以静态地存储在地址映射表中。发送端可在表中查找出对应于逻辑地址的物理地址。但这不是解决问题的好方法。每当物理地址发生变化时,这个表就必须更新。频繁地在所有的机器上对表进行更新是非常麻烦的任务。但这种映射可做成动态的,即发送端在需要时可请求接收端宣布它的物理地址。ARP就是为这个目的而设计的。ARP把IP地址和它的物理地址关联起来。在典型的物理网络上,如局域网,链路上的每一个设备都用通常是写在NIC中的物理地址或站地址来标识。任何时候当主机或路由器需要找出这个网络上的另一个主机或路由器的物理地址时,它就发送ARP查询分组。这个分组包括发送端的物理地址和IP地址,
15、以及接收端的IP地址。当发送端不知道接收端的物理地址,它就会在网络上以广播的形式发送一个ARP请求报文5。在网络上的每一个主机或路由器都接收和处理这个ARP查询分组,但只有预期的接收者才识别ARP查询分组的IP地址,并发回ARP响应分组。这个响应分组包含接收者的IP地址和物理地址。这个分组用单播直接发送给查询者,它使用收到的查询分组中所用的物理地址。2.3 ARP协议的原理IP数据包常通过以太网发送。以太网设备并不识别32位IP地址,它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器必须把IP目的地址转换成以太网网目的地址。在这两种地址之间存在着某种静态的或算法的映射,常常需要查看一
16、张表。地址解析协议(Address Resolution Protocol,ARP)就是用来确定这些映象的协议。ARP是一个位于TCP/IP协议栈中的低层协议,它工作在数据链路层,用于将网络中的协议地址(当前网络中大多是IP地址)解析为本地的硬件地址(MAC地址)6。为了节省ARP缓冲区内存,被解析过的ARP条目的寿命都是有限的。如果一段时间内该条目没有被参考过,则条目被自动删除。在工作站PC的Windows环境中,ARP条目的寿命是2分钟,在大部分Cisco交换机中,该值是5分钟。反向ARP(Reverse ARP,RARP)用于把物理地址(MAC地址)转换到对应的IP地址。例如,在无盘工作
17、站启动的时候,因为无法从自身的操作系统获得自己的IP地址配置信息。这时,无盘工作站可发送广播请求获得自己的IP地址信息,而RARP服务器则响应IP请求消息,为无盘工作站分配1个未用的IP地址(通过发送RARP应答包)7。代理ARP(PROXY ARP)也被称作混杂ARP(Promiscuous ARP)一般被像路由器这样的设备使用,用来代替处于另一个网段的主机回答本网段主机的ARP请求7。无故(Gratuitous ARP,GARP)ARP也称为无为ARP。主机有时会使用自己的IP地址作为目标地址发送ARP请求。这种ARP请求称为无故ARP,GARP,主要有两个用途:(1)检查重复地址(如果收
18、到ARP响应表明存在重复地址)。(2)用于通告一个新的数据链路标识。当一个设备收到一个arp请求时,发现arp缓冲区中已有发送者的IP地址,则更新此IP地址的MAC地址条目。2.3.1 ARP的分组格式物理帧头(14B)ARP帧结构(28B)填充数据(18B)CRC(4B)表2-1 ARP分组格式的示意图 注:因为物理帧最小长度为64B,所以要填充18B。2.3.1.1 物理帧头表2-2 物理帧头的结构 目的MAC(6B)源MAC(6B)类型(2B)2.3.1.2 ARP帧结构表2-3 ARP帧结构的示意图 硬件类型 协议类型 硬件长度 协议长度 操作(请求1,回答2) 发送站硬件地址 (例如
19、,对以太网是6字节) 发送站协议地址 (例如,对IP是4字节) 目标硬件地址(在请求中填入) (例如,对以太网是6字节) 目标协议地址 (例如,对IP是4字节)ARP分组具有如下的一些字段:HTYPE(硬件类型):这是16位字段,用来定义运行ARP的网络的类型。每一个局域网为其类型指派一个整数。例如,以太网是类型1。ARP可使用在任何网络上。PTYPE(协议类型):这是16位字段,用来定义协议的类型。例如,对IPv4协议,这个字段的值是080016。ARP可用于任何高层协议。HLEN(硬件长度):这是8位字段,用来定义以字节为单位的物理地址长度。例如,对以太网这个值是6。PLEN(协议长度):
20、这是一个8位字段,用来定义以字节为单位的逻辑地址长度。例如,对IPv4协议这个值是4。OPER(操作):这是16位字段,用来定义分组的类型。已定义了两种类型:ARP请求(1)和ARP回答(2)。SHA(发送端硬件地址):这是可变长度字段,用来定义发送端的物理地址长度。例如,对以太网这个字段是6字节长。SPA(发送端协议地址):这是可变长度字段,用来定义发送端的逻辑(例如,IP)地址长度。对于IP协议,这个字段是4字节长。THA(目标硬件地址):这是可变长度字段,用来定义目标的物理地址长度。例如,对以太网这个字段是6字节长。对于ARP请求报文,这个字段是全0,因为发送端不知道目标的物理地址。TP
21、A(目标协议地址):这是可变长度字段,用来定义目标的逻辑地址(例如,IP地址)长度。对于IPv4协议,这个字段是4字节长。2.3.2 ARP协议的工作流程(1)首先,每台主机都会在自己的ARP缓冲区(ARP Cache)中建立一个ARP列表,以表示IP地址和MAC地址的对应关系;(2)当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址;(3)
22、网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包,如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址;(4)源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败;第3章 Sniffer软件简介3.1 Sniffer概述Sniffer软件是NAI公司推出的功
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARP包的封装、发送、捕获与解析软件开发 毕业论文 ARP 封装 发送 捕获 解析 软件 开发
链接地址:https://www.31ppt.com/p-2386420.html