文档库 最新最全的文档下载
当前位置:文档库 › 局域网ARP攻击及防御策略的研究

局域网ARP攻击及防御策略的研究

辽宁科技大学继续教育学院

毕业设计(论文)

题目:局域网ARP攻击及防御策略的研究学院、系:鞍山科技大学

专业班级:计算机应用专科

学生姓名:姜明程

指导教师:迟呈英

2013年4 月15 日

局域网ARP攻击及防御策略的研究

摘要

当今的信息社会是建立在计算机网络的基础之上的,网络信息安全形势十分严峻。网络协议安全是网络安全的重要环节,对网络协议的分析、利用越来越受到人们的关注。

ARP协议是网络协议中的基础协议,虽然ARP协议使用起来非常方便快捷,但其中却隐藏着很多漏洞。本文首先对ARP 协议进行了详细的分析,深入了解了ARP 协议的工作原理,并对ARP 欺骗发生的条件和欺骗原理做了深入的介绍,同时总结了ARP 欺骗攻击的检测方法,细致的分析了对各种不同的ARP 欺骗方式相对应的防御手段。

其次针对局域网中出现的ARP 欺骗的攻击方式进行有针对性的分析,使用抓包工具截获攻击包后进行相关研究,并制定出防御局域网中出现的ARP欺骗的方法,同时对该方法进行适当改进以提高防御效率。

ARP欺骗病毒一直是网络中爆发范围较广且很难根除的顽疾,最近几年针对ARP欺骗病毒的防御研究在不断进行,但由于互联网布局的复杂性特征,很难在防御该病毒方面获得统一的管理和部署,本文提出的检测和防御方法经小范围应用取得了较好的效果,希望在以后的继续学习与研究过程中能够将该方法完善并推广。

关键词:ARP欺骗,ARP协议,802.1x协议,认证扩展,病毒防御

目录

摘要 (2)

目录...................................................3-4 第1 章绪论. (7)

1.1 课题背景和意义 (7)

1.2 国内外研究现状 (9)

1.3 论文的研究内容及组织结构 (12)

1.3.1 论文的研究内容 (13)

1.3.2 论文的组织结构 (13)

第2 章 ARP 协议 (14)

2.1 ARP 协议介绍 (14)

2.1.1 地址解析的作用 (14)

2.1.2 直接映射法 (15)

2.1.3 动态地址解析法 (17)

2.1.4 动态地址解析的缓冲区与高效率 (18)

2.2 ARP 协议的应用 (18)

2.2.1 ARP 的标准与历史 (18)

2.2.2 ARP 地址详述与基本操作 (19)

2.2.3 ARP 信息的格式 (21)

2.2.4 ARP 缓存 (22)

2.2.5 代理ARP (24)

2.3 ARP 欺骗 (25)

2.3.1 ARP 欺骗原理 (25)

2.3.2 ARP 欺骗的攻击方式 (27)

2.3.3 ARP 攻击的检测 (29)

2.3.4 ARP 病毒的防御 (30)

2.4 本章小结 (30)

第3 章局域网ARP 病毒检测与防御 (31)

3.1 局域网遭受ARP 病毒攻击的症状及危害 (57)

3.2 检测与分析 (58)

3.2.1 正常网络数据的捕获与分析 (58)

3.2.2 ARP 欺骗数据包的捕获与分析 (59)

3.3 ARP 欺骗的防御 (60)

3.3.1 针对网关ARP 欺骗的防御 (61)

3.3.2 针对网内主机ARP 欺骗的防御 (62)

3.4 ARP 欺骗防御方法的改进 (62)

3.5 本章小结 (63)

总结......... . (35)

参考文献 (35)

第1 章绪论

1.1 课题背景和意义

随着互连网的发展,网络的安全问题随之浮出水面,并一直是计算机网络安全体系的重要方面。网络作为信息的共享平台,其开放性与跨地域性令网络攻击难以循迹,一旦重要的网络信息系统陷入瘫痪,对社会是一种毁灭性的打击。最近几年,网络安全问题日益严重,关于网络安全的报道层出不穷,造成的经济损失越来越大。黑客往往通过网络入侵的手段达到窃取敏感信息的目的,也有人通过网络攻击达到不可告人的目的。

ARP 协议是一个位于TCP/IP 协议栈中网络层的协议,负责将IP 地址解析成对应的MAC 地址。由于网络通信是按照MAC 地址进行传输的,因此,对于局域网而言,ARP 协议是网络正常通信的基础。但基于历史原因,ARP 协议在设计之初,考虑到传输效率的问题,缺乏必要的身份认证和鉴别机制,导致安全性能弱不禁风。ARP 欺骗攻击是一种利用TCP/IP 协议中ARP 协议本身漏洞[3]( 即为了提

高效率,不对发送来的ARP 应答包进行验证,直接更新ARP 地址缓存表)进行攻击的。它通过发送ARP 应答包给目标主机,让目标主机更新自己的ARP地址缓存表,使本应该发送给被冒充机器的数据包发送给了自己,达到了欺骗信息的作用。

因此,制定出一套高效的ARP 欺骗攻击防御策略具有很大的现实意义。

1.2 国内外研究现状

ARP 欺骗攻击的核心思想就是向目标主机发送伪造ARP 应答,

并使目标主机接收应答中伪造的IP 地址与MAC 地址之间的映射对, 以此来更新目标主机的ARP 缓存。ARP 欺骗的原理已经十分明了,但对ARP 欺骗的防范措施却并不十分有效。目前国内外还没有功能

很强的软件能够很好的防御网络中的ARP欺骗。因此,如何防御ARP 欺骗攻击及怎样降低这种攻击所带来的后果引起了全社会网络专家们的广泛关注,并成为目前网络安全界研究的热点问题。

ARP 欺骗攻击主要是利用了ARP 协议的安全缺陷,体现在如下几点:

(1)ARP请求均以广播方式进行:当源主机要和目的主机通信而没有目的主机的MAC 地址时, 便会向整个局域网广播ARP请求数据包。这使得攻击者可以伪装ARP应答, 与真正的目的主机展开竞争, 并由此确定子网内机器什么时候刷新ARP缓存, 以实现最大限度的假冒和欺骗。

(2)ARP 地址转换表自我动态更新:这种机制的动态更新方式较为灵活,但同时也带来了安全隐患。由于正常的ARP 地址转换表都是有时间限制的,这使得假冒者如果在下次交换之前成功修改了源主机的地址,就可以毫无阻拦的进行ARP 欺骗行为。

(3)ARP 响应无控制且无认证:ARP 协议设计之初,为了获得较高的传输效率,在数据链路层没有做安全上的防范,在使用ARP 协议时无需认证,使用ARP协议的局域网假设通信双方是相互信任和相互独立的。

ARP 欺骗的攻击方法主要有以下几种:

(1)中间人攻击:中间人攻击就是攻击者将自己插入两个目标主机通信路径之间,使它如同两个目标主机通信路径上的一个中继,这样攻击者就可以监听两个目标主机之间的通信。

(2)IP 地址冲突:主机发送更改的ARP 报文,将伪装的MAC 地址映射到目标主机的IP 地址,系统检测到两个不同的MAC 地址对应同一个IP 地址,因此表现为IP 地址冲突。

(3)拒绝服务攻击:拒绝服务攻击就是使目标主机不能正常响应外部请求,从而不能对外提供服务的攻击方式。

(4)克隆攻击:通过修改网络接口的MAC 地址,攻击者首先对目标主机实施拒绝服务攻击,使其不能对外部做出任何反应。然后攻击

者就可以将自己的IP地址与MAC 地址分别改为目标主机的IP 地址与MAC 地址,这样攻击者就可以对目标主机进一步实施各种非法攻击,窃取各种通信数据。

(5)ARP 应答畸形包攻击:正常的ARP 报文至少是46 个字节,但是如果我们自己精心构造一个只有30 个字节长的ARP 应答报文,由于目前的网络交换设备没有充分考虑到这种情况的出现,当网络上连续出现这种畸形报文达到一定数量的时候,交换机的MAC 缓存表就无法正常刷新,其严重后果就是整个局域网瘫痪。

针对以上的ARP 欺骗攻击手段,已经制定出如下的防御措施[6,7,8]:

(1)制定静态ARP 缓存表:ARP 协议攻击最根本的原理就是改变IP 地址与MAC 地址的正确对应关系。因此可以在目标主机的ARP 缓存中设置静态地址映射记录来防止ARP 欺骗攻击。但该方法的缺点是如果网络上节点较多或者节点经常发生变化则不易进行管理。

(2)设置ARP 服务器:为了解决静态ARP 缓存表中维护静态记录的工作分散的缺点,可以采用在局域网内部指定一台机器作为ARP 服务器来集中保存和维护一个相对可信的局域网环境下所有主机的IP-MAC 地址映射记录。但该方法首先要保证ARP 服务器的网络安全,如果一旦该主机瘫痪,ARP 缓存表将无法维护,整个网络系统会受到影响。

(3)数据加密传输:例如采用SSH 替代telnet,采用sftp 替代传统的ftp,即使连接被截获,也不可能被轻易伪造数据。该方法的缺点是加密和解密过程相对来说比较消耗系统资源。

(4)交换机绑定端口和MAC 地址:设置交换机的每个端口与唯一的MAC 地址相对应,一旦来自该端口的MAC 地址发生变动,就自动封锁该端口,使主机无法连接到局域网。攻击者就无法发送伪造ARP 数据帧,从而阻止了ARP 欺骗的发生。这种方法的缺点是不灵活。

(5)引入硬件设备:目前, 基于IP 地址变换进行路由的第三层交换

机逐渐被采用,第三层交换技术采用的是P 路由交换协议,以往的数据链路层的MAC 地址和ARP 协议已经不起作用。但第三层交换机的价格普遍比较昂贵,而且普及率不高。

1.3 论文的研究内容及组织结构

1.3.1 论文的研究内容

计算机网络体系包含两大方面,终端体系与网络通信体系。而各自的安全要求则衍生了可信计算平台以及可信网络连接的规范。保护整个终端体系和网络通信体系的完整性与安全性就需要综合考虑两

方面的需求。构建可信网络平台,采用802.1x 在宽带及无线接入方面的优势是显而易见的。同时也被众多互联网服务提供商所广泛采纳。

本文的主要工作是针对ARP 病毒的特点,详细论述了ARP 协议的原理,发展过程以及ARP 协议的应用。对ARP 协议的实现及漏洞进行了详细的分析,并针对ARP 欺骗攻击的特征,对其攻击方法进行了详细的介绍。同时,根据ARP欺骗的攻击方法总结出ARP 欺骗的各种检测方法,并有针对性的制订了ARP 欺骗的防御措施。

由于ARP 欺骗经常在局域网中爆发,局域网是ARP 欺骗病毒肆虐的典型网络。本文结合局域网中ARP 欺骗攻击的实际现象,使用抓包软件对其进行检测并加以分析,再根据常见网络设备的特点逐步制定出防御局域网中ARP欺骗的措施,并加以改进。

1.3.2 论文的组织结构

本文共分为3 个章节,各章节主要内容如下:

第1 章,绪论。介绍了ARP 欺骗的攻击行为与对其进行防御的研究背景和现状,分析了现有防御方法的不足。描述本文的研究内容,给出了本论文的组织结构。

第2 章,ARP 协议。详细的介绍了ARP 协议,ARP 协议的工作原理以及ARP 协议的应用。同时也对ARP 协议本身存在的漏洞,

ARP欺骗攻击的原理,以及对现有的ARP 欺骗攻击既定检测与防御方法进行了细致介绍,并分析了他们各自的优缺点。

第3 章,局域网ARP 病毒检测与防御。该章节针对局域网中频繁出现的ARP 欺骗攻击现象,进行抓包采样,经分析后逐步制定出应对方案,并对其进行适当改进。

第2 章 ARP 协议

2.1 ARP 协议介绍

ARP(Address Resolution Protocol)即地址解析协议,就是用来进行地址解析的协议。网络中的通信是通过使用网络层(OSI 网络结构中的第三层)地址发送数据完成的。但实际上,网络中数据的传输是通过使用数据链路层(OSI 网络结构中的第二层)地址实现的。这就意味着网络中的每一个设备都要拥有网络层地址和数据链路层地址。这就需要定义某种方式将网络层地址与数据链路层地址有效联系起来。那么,这种将网络层地址与数据链路层地址一一映射的过程就被称为

地址解析。

2.1.1 地址解析的作用

当我们研究OSI 网络参考模型时,分别有两层携带地址:网络层与数据链路层。处于网络层以上的各层均通过网络层地址进行信息传输。而网络层地址与数据链路层地址是两种截然不同的地址类型并且具有不同的功能,数据链路层地址用于局域网内两个硬件设备间的信息直传,它们多用于执行基本的LAN,WLAN 与WAN 的网络通信,而网络层地址则用于网际间的等价传输。通俗地说就是数据链路层用于处理直接连接的网络设备间的信息传输,而网络层地址则用于非直连的网络设备间的数据传输。

网络层地址与数据链路层地址的关系:

事实上,当我们通过网络层连接两个设备时,这仅仅是概念上的连接,当你使用IP 发送一个请求,每一跳都发生在数据链路层。当

你的请求传送到本地路由器的网络层时,实际的请求已经被封装在一个桢中,并使用路由器的数据链路层地址传送出去。传送的每一步都是基于第三层的网络地址,但实际的传输执行是使用数据链路层地址进行路由的。

地址解析——将网络层地址转换为数据链路层地址。

IP 地址(网络层地址)对于网络硬件来说是一个处于OSI 网络模型较上层的地址,当你要访问一个网站,输入网址后路由器得到的信息是该网站的IP 地址,但实际上信息是向网络服务器的MAC 地址(数据链路层地址)传送的。在LAN 网络中同样使用这样的传输原理,即使网络服务器就摆设在发送请求电脑的旁边,也一定要通过数据链路层完成这一过程。所以我们需要一种解析这两种地址的方

法,这个过程就叫做地址解析。

地址解析的方法:

地址解析的功能固然重要,但地址解析的效率也不容忽视,耗费大量网络资源的地址解析方法是不可取的。现如今有两种地址解析的方法:

(1)直接映射:有一个公式可以将高层地址转化为底层地址,这是比较简单有效的方法,但当数据链路层地址长度大于网络层地址时会受到一些限制。

(2)动态解析:一个特殊的协议用来通过网络设备的IP 地址就可知道其相应的数据链路层地址,即一个数据链路层地址对应一个给定的IP 地址。这种方法虽然比直接映射法复杂,但具有更大的灵活性。

2.1.2 直接映射法

当每一个数据报在网络中传输的过程中,网络层地址被无数次解

析成数据链路层地址。因此我们希望这个过程能够尽可能的简单快捷,完成这一过程最简单的方法就是将两类地址直接映射。

直接映射法的基本思想就是将对应的网络地址与数据链路层地址存放在一个表中,我们可以通过非常简单的算法通过其中之一找到对应项。无论何时都可以通过网络层地址找到对应的数据链路层地址。

数据链路层地址和网络层地址具有同样的结构和语义是不切实际的,因为这两类地址基于不同的工作目的和完全不相容的执行标准。但如果我们创建的网络层地址足够大,可将数据链路层地址编码入其中的话,我们便可以将两类地址做直接映射。这样,数据链路层地址就成为网络层地址的一部分。

当MAC 地址的长度小于IP 地址时,可以用直接映射的方法从IP 地址中得到硬件地址。这使地址解析变得非常简单,但大大降低了地址编排的弹性。

在硬件地址较大的情况下,直接映射已成为不可能:

不幸的是,只有在MAC 地址作为IP 地址一部分时才能使用直接映射的方法。但在以太网中,MAC 地址直接嵌入硬件,更重要的是MAC 地址长度大于IP 地址,因此这种情况下无法使用直接映射的方法。在现如今,使用最广泛的以太网的数据链路层地址是48 位,而IP 地址仅有32 位,这就是为什么直接映射法无法应用在以太网环境中。

直接映射的缺点:

在下一代网络IPv6 中,由于IPv6 支持128 位的大地址空间,远远大于MAC地址的长度,理论上可以在IPv6 网络环境中使用直接映

射进行地址解析。然而在IPv6 网络中人们决定使用动态地址解析,因为在IPv4 网络中已经使用动态地址解析,更重要的原因是因为直接映射的非弹性化缺点,因为动态地址解析允许IP 地址与MAC 地址相对独立。

2.1.3 动态地址解析法

直接映射法是一种简单且高效的将网络地址解析为数据链路层地址的方法,但这种方法不能应用在如今的主题网络结构中,当数据链路层地址长度大于网络层地址时直接映射法就行不通了。

动态地址解析方法可以很好的弥补直接映射法的缺陷。当设备A 向要向设备B 发送信息时,设备A 只知道设备B 的IP 地址,而不知道设备B 的MAC 地址,设备A 首先向网络中每个设备发送一个包含设备B 的IP 地址的数据报,除设备B 之外的所有设备都忽略这个数据报,因为数据报中含有设备B 的IP 地址,设备B 接收到数据报后向设备A 恢复一个直接应答数据报,告知设备A 究竟设备B 的MAC 地址是什么,这就是动态地址解析的整个过程。

在动态地址解析方法中,网络层地址与数据链路层地址可以有完全不同的结

构与长度,他们之间不用有任何关系。

2.1.4 动态地址解析的缓冲区与高效率

动态地址解析剔除了直接映射法的约束,并且可以很容易的将IP 地址与MAC 地址建立关联,但是不是每次进行地址解析都要发送额外的信息来确认对方的MAC 地址呢?发送单个额外的信息看起来

并不耗费资源,但如果每一步都进行这样的操作,网络的负载就会急剧增加。因此,仅有动态地址解析是不够的,

为了降低该操作带来的影响,我们引入了地址缓冲区。

在一个设备将网络层地址解析为数据链路层地址后,两者之间的

对应关系会被存放在缓存中一段时间。当下次需要用到书数据路层地址时,设备在其缓存中快速进行查询。也就是说每次发送数据包之前,我们只需要在缓存表中查询一下,而不需要发送广播请求。

ARP 缓存在增强动态地址解析能力方面扮演很重要的角色,但如果其他设备的地址信息变更了,存储在缓存表中的信息就会失效,因此缓存表中的数据都会有一个生存周期,过期则信息作废。两个在网络中通讯的设备会互相添加彼此的地址到自己的缓存表中。有了ARP 缓存表,我们只需要做一次地址解析,而不用多次做重复的操作。

2.2 ARP 协议的应用

目前,世界上应用范围最广的网络协议就是TCP/IP 网络协议。而最重要的地址解析协议就是与YCP/IP 协议齐名的ARP 协议了。

2.2.1 ARP 的标准与历史

OSI 网络参考模型的第一层是物理层,第二层是数据链路层,物理层和数据链路层使用数据链路层地址实现物理功能。可是网络协议的功能应用在第三层,也就是网络层,将这些由物理硬件组成的网络连接起来形成一个大的因特网,相

互之间使用网络层地址传输信息。地址解析是将网络层地址解析为数据链路层地址的过程,数据传输一次经过一个设备。

在TCP/IP 协议开发的初期,地址解析所设计的问题就很突出。最初的IP 协议是在以太网的雏形技术上运行的,即便以太网以

IEEE802.3 作为其官方标准,也很有必要定义一种方法使IP 地址与MAC 地址实现映射以便在网际之间实现信息传输。

有两种基本方法用来实现地址解析功能:直接映射与动态地址解析。可是MAC 地址长度是48 位,而IP 地址仅有32 位,这已完全不符合直接映射法,动态地址解析的模型应运而生,这就是TCP/IP 协议的地址解析协议(ARP)。

ARP 协议主要是为了用某种方法改进网络传输的执行效率。最开始的每发一次数据包都进行一次广播,效率很低而且很繁琐。后来使用ARP 缓冲区,使得本地IP 地址与MAC 地址有效关联起来保存在缓冲表中。现在,各种各样的技术已经逐渐被研发出来,用于改进并维护ARP 地址缓冲表。支持跨区域信息传输的代理ARP 技术也早已经问世,并被列入基本ARP 特征库中。

2.2.2 ARP 地址详述与基本操作

地址解析协议的执行是在一台源主机要发送IP 数据包开始的。首先需要确定目标主机是否与它处于同一网络中,如果两者在同一网络中,它向目标主机直接发送信息即可;如果不在同一网络中,源主机需要向与它处于同一网络的路由器发送数据包,之后通过ARP 软件进行地址解析。

ARP 协议最基本的操作就是在本地网络上发送请求或进行应答,源主机发送广播请求得到目标主机的地址,目标主机接收到请求后单播回应,告之源主机它的MAC 地址是什么。

从源主机发向目的主机的信息包和从目的主机发向源主机的数据包是不同的,主机作为发送方与接收方的身份是来回互换的。通信双方都各自有自己的IP地址与MAC 地址,四个地址表达各自的信息:

发送方MAC 地址:ARP 数据包中发送方的数据链路层地址。

发送方IP 地址:ARP 数据包中发送方的网络层地址。

接收方MAC 地址:ARP 数据包中接收方的数据链路层地址。

接收方IP 地址:ARP 数据包中接收方的网络层地址。

这四个地址在ARP 信息包中都有各自固定的位置。而ARP 请求与应答也分为如下几步:

(1)源主机首先在ARP 缓冲表中查找目标主机的硬件地址:源主机首先在自己的ARP 缓冲表中查找其中是否对目标主机进行过地址解析。如果做过,它便可以直接跳到最后一步。

(2)源主机创建ARP 申请报文:源主机创建一个ARP 申请信息,它将其自己的MAC 地址作为发送方的MAC 地址,将其自己的IP 地址作为发送方的IP 地址。而它将目标主机的IP 地址作为接收方的IP 地址,目标主机的MAC 地址是需要确定的信息,将其留作空白。

(3)源主机广播ARP 请求信息:源主机在它所处的局域网内广播ARP 请求信息。

(4)本地局域网设备对ARP 请求信息进行处理:ARP 广播信息被本地局域网中所有主机接收到,所有主机都进行匹配对照,不匹配的将该信息丢弃,如果匹配则进行下一步处理。

(5)目标主机创建ARP 应答信息:自身IP 地址与ARP 申请信息中IP 地址匹配的目标主机创建一个ARP 应答信息,此时该目标主机的身份已经从接收方转换为发送方,信息中包含从ARP 申请信息中获得的发送方的MAC 地址和发送方IP 地址,并将其作为目标主机的MAC 地址与IP 地址,并将它自己的MAC地址与IP 地址作为发送方信息。

(6)目标主机刷新自己的ARP 缓存:作为一种最优化的方法,目标主机将会向自己的ARP 缓存中添加源主机的MAC 地址与IP 地址,这是为目标主机为后续操做做准备。

(7)目标主机发送ARP 应答信息:目标主机发送的ARP 应答信息是专门向源主机单播发送的,因为已经没有必要再发送广播信息了。

(8)源主机处理ARP 应答信息:源主机对接收到的ARP 应答信息进行处理,将发送端(目的主机)的MAC 地址作为目标主机的数据链路层地址,并发送IP 数据包。

(9) 源主机刷新自己的ARP 缓存:源主机用接收到的ARP 应答信息刷新自己的ARP 缓存,以便以后再与该目标主机通信。ARP 协议是一种相对简单的请求/应答协议。源主机通过目标主机的IP 地址发送ARP 请求,目标主机向源主机回送ARP 应答信息告知目标主机的MAC 地址。ARP 缓存的使用和自动更新缓存信息的应用大大增强了地址解析的效率,这也是为什么将其列入ARP 协议特征的重要原因。

2.2.3 ARP 信息的格式

用ARP 协议进行地址解析是通过在源主机与目的主机之间互换信息来完成的。在其他协议中,地址解析的每一步所涉及的信息都包含在其他协议的信息格式中。

ARP 信息的格式相对较简单,其中有用于描述信息类型的信息,还有关于通信双方IP 地址与MAC 地址的信息,为方便不同长度地址的存放,特意为IP地址与MAC 地址划分了不同长度的地址空间。

下面用一个图表来说明ARP 信息中各部分所代表的内容:

当ARP 数据包构造完成后,将其向下传递到数据链路层,然后发送出去。整个ARP 数据包作为有效载荷在网络中传输。由于地址字段的信息是变长的,因此整个ARP 数据包的大小是可变的。但其实一个完整的ARP 数据包是非常小的。

2.2.4 ARP 缓存

ARP 协议是一种动态地址解析协议,也就是说每进行一次地址解析都要求在网络上互换地址信息。虽说ARP 信息包并不大,但如果每一个IP 数据包在网络上的每一跳都这样做,网络上的压力将会达到无法预料的大。那么,相对于简单的直接映射来说,这种方法既耗费资源又浪费时间。总的来说,ARP 请求信息包发送出去后,网络上的每台主机都要把接收到的信息与自己比较一下,看是否与之匹配。

动态地址解析方法效率问题的总体解决方案就是引入地址缓存。另外,为了降低网络交通的压力,地址缓存也保证了地址解析所耗费的时间非常少。这也是地址缓存功能从一开始就被写入ARP 协议的重要原因。

ARP 缓存以表的形式保存映射的IP 地址与MAC 地址对,网络中的每个设备管理其自己的ARP 缓存表。有两种方式向ARP 缓存表中写入数据:

(1)静态ARP 缓存:在进行动态解析时人工向ARP 缓存表中添加记录信息,并在缓存中永久保存。静态记录一般由ARP 管理软件进行管理。

(2)动态ARP 缓存:该方式在经过ARP 地址解析后,IP 地址与MAC 地址对由软件自动填写入ARP 地址缓存中。他们在ARP 地址缓存中仅保存一段时间,之后便从中删除。

一个设备的ARP 缓存中包括动态和静态的记录,每种记录方式都有其优点与缺点。但在大多数情况下使用动态ARP 缓存记录,因为它是自动添加,而且不会牵涉管理员的经历。

在规范网络中,静态ARP 缓存记录得到很好的应用,但这种方法的缺点就是需要人工添加记录,并且一旦MAC 地址或IP 地址有变更需要人工修改。每条静态记录都会占据缓存表的空间,因此,缓存表中静态记录数量有限,不能使用太多静态记录。

动态记录是自动添加进缓存的,不需要人工添加和人工服务。但动态记录不可能永远保存在缓存中,因为随着网络情况的变化,保存

在缓存中的静态记录会因无效而失去作用。

假设主机A 的ARP 缓存中保存着另一网络主机B 的动态映射,如果动态记录永远保存在缓存表中,下列情况就会发生:

(1)主机的硬件发生改变:若主机B 更换了网卡,由于记录中的MAC 地址不会再出现,主机A 的ARP 缓存中保存的动态映射信息变为无效。

(2)主机的IP 地址发生改变:如果设备B 的IP 地址发生了改变,保存在设备A 中的映射记录也会变为无效。

(3)设备被移除:如果设备B 从网络中移除,设备A 不需要再向它发送信息,但映射记录仍旧保存在设备A 的地址缓存中,这样不仅浪费缓存空间,而且还会在设备A 查询缓存表时耗费时间。

为了避免这些问题的出现,将动态地址记录设置一定的生存周期,一般为10 分钟或20 分钟。规定时间过后,记录自动从缓存中删除,下次再通信就需要刷新缓存。相对于静态记录,这种方法在效率上仅存在微乎其微的差距,每10分钟或20 分钟发送两个28 字节的信息对网络几乎没有任何影响。

如果主机A 初次开始地址解析时发送一个标准的ARP 申请,在网络中每个接收到申请信息的主机都需要刷新自己的ARP 缓存记录。然而,第三方设备不必为设备A 创建新的缓存记录。

从对主机A 进行地址解析的角度来说,为主机A 创建新的缓存记录可以为以后的通信提供方便,但这意味着网络中所有设备的ARP 缓存表会很快被其他主机的地址解析信息填满。有些主机可能会创建这样的缓存记录,但一定会把这些记录设置好有效期,以避免缓存表被填满。

2.2.5 代理 ARP

在同一网络中连接的设备通过ARP 协议进行通信。网络中的每台主机都可以向其他主机发送单播或广播信息。通常情况下,如果主机A 和主机B 被路由器分开,主机A 就不能与主机B 直接通信。他们

会通过数据链路层先向路由器传输信息,根据IP 地址经过两跳到达主机B。

与一般情况不同的是,有些网络是由两个网络通过路由器连接组成的,两个网络具有相同的IP 地址段和子网掩码。也就是说,主机A 和主机B 在数据链路层分别处于不同的局域网,但却具有相同的IP 地址段。因此,当发送IP 数据包时,主机A 与主机B 都认为对方和自己处于同一个局域网。如果主机A 要向主机B 发送数据包,可它的地址缓存中并没有主机B 的MAC 地址,则主机A 只好进行地址解析。但实际上主机B 与主机A 并不在同一个局域网中,连接两个网络的路由器并不会自动将主机A 的广播发给主机B 所在的网络,主机B 也不回接收到来自主机A 的请求,因此主机A 不会接到包含主机B 的MAC 地址的回复。

对这种情况所作的ARP 的改进称作ARP 代理。架在两个局域网之间的路由器用来代表主机B 回复主机A 的广播,它告之主机A 的并不是主机B 的MAC地址,即主机A 不可能直接与主机B 通信。而路由器告诉主机A 的是路由器本身的MAC 地址。如果主机A 想与主机B 通信,主机A 先向路由器发送信息。反过来的过程也是一样的。路由器并不自动转发ARP 广播,它只作为一个ARP代理设备。

ARP 代理的优势就是允许通信双方可以处于不同的局域网。当它也有缺点,首先,它增加了复杂度。其次,如果两个有相同IP 地址段的网络中间出现多个路由器,那么问题就会升级。ARP 代理同样会带来潜在的安全问题。因此,ARP代理应该被重新规划设计,并尽可能在两个局域网中架设一个路由器。

2.3 ARP 欺骗

2.3.1 ARP 欺骗原理

当IP 数据报准备发送时,由数据链路层将它封装入以太网数据帧,然后才能在以太网中传送。然而在封装过程中,数据链路层并不知道以太网数据帧头中目的主机的MAC 地址。唯一的信息是IP 数据

相关文档