ARP详解

1.ARP简介

地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。

2.ARP工作流程
在这里插入图片描述
假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:
(1) 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。

(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。

(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。

(4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

3.ARP报文格式

在这里插入图片描述
先要清楚,一般说以太网地址就是指MAC地址。

字段1是ARP请求的目的以太网地址,全1时代表广播地址。

字段2是发送ARP请求的以太网地址。

字段3以太网帧类型表示的是后面的数据类型,ARP请求和ARP应答这个值为0x0806。

字段4表示硬件地址的类型,硬件地址不只以太网一种,是以太网类型时此值为1。

字段5表示要映射的协议地址的类型,要对IPv4地址进行映射,此值为0x0800。

字段6和7表示硬件地址长度和协议地址长度,MAC地址占6字节,IP地址占4字节。

字段8是操作类型字段,值为1,表示进行ARP请求;值为2,表示进行ARP应答;值为3,表示进行RARP请求;值为4,表示进行RARP应答。

字段9是发送端ARP请求或应答的硬件地址,这里是以太网地址,和字段2相同。

字段10是发送ARP请求或应答的IP地址。

字段11和12是目的端的硬件地址和协议地址。

4.抓包分析

下面是抓取的ARP数据包,可以对照上面的说明进行理解。
图中红框圈起来的是一对ARP请求和ARP应答。
在这里插入图片描述

4.1 ARP请求报文

在这里插入图片描述

4.2ARP应答报文

ARP应答分组中,将ARP请求中的源和目的地址进行交换,此外,变化的还有字段8 Opcode。其余字段内容不会发生变化。
在这里插入图片描述

5.其他

5.1 ARP表

设备通过ARP解析到目的MAC地址后,将会在自己的ARP表中增加IP地址到MAC地址的映射表项,以用于后续到同一目的地报文的转发。
在这里插入图片描述

5.1.1 动态ARP表

动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。当到达老化时间、接口down时会删除相应的动态ARP表项。

5.1.2 静态ARP表

静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。
配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。

5.2 免费ARP

免费ARP指主机发送ARP查找自己的IP地址,通常发生在系统引导期间进行接口配置时。与标准ARP的区别就是免费ARP分组的目的IP地址字段封装的是自己的IP地址,即向所在网络请求自己的MAC地址。
免费ARP的作用有:
  1) 一个主机可以通过它来确定另一个主机是否设置了相同的 IP地址。

正常情况下发送免费ARP请求不会收到ARP应答,如果收到了一个ARP应答,则说明网络中存在与本机相同的IP地址的主机,发生了地址冲突。

2)更新其他主机高速缓存中旧的硬件地址信息。

如果发送免费ARP的主机正好改变了硬件地址,如更换了接口卡。

其他主机接收到这个ARP请求的时候,发现自己的ARP高速缓存表中存在对应的IP地址,但是MAC地址不匹配,那么就需要利用接收的ARP请求来更新本地的ARP高速缓存表表项。

3)网关利用免费ARP防止ARP攻击

有些网关设备在一定的时间间隔内向网络主动发送免费ARP报文,让网络内的其他主机更新ARP表项中的网关MAC地址信息,以达到防止或缓解ARP攻击的效果。

4)利用免费ARP进行ARP攻击

ARP协议并不只在发送了ARP请求才接收ARP应答,计算机只要接收到ARP应答数据包,就会使用应答中的IP和MAC地址对本地的ARP缓存进行更新。

主机可以构造虚假的免费ARP应答,将ARP的源MAC地址设为错误的MAC地址,并把这个虚假的免费ARP应答发送到网络中,那么所有接收到这个免费ARP应答的主机都会更新本地ARP表项中相应IP地址对应的MAC地址。更新成功后,这些主机的数据报文就会被转发到错误的MAC地址,从而实现了ARP欺骗的攻击。

5.3 代理ARP

代理ARP就是通过使用一个主机(通常为router),来作为指定的设备使用自己的 MAC 地址来对另一设备的ARP请求作出应答。

为什么需要代理ARP?

先要了解,路由器的重要功能之一就是把局域网的广播包限制在该网内,阻止其扩散,否则会造成网络风暴。

ARP请求是个广播包,它询问的对象如果在同一个局域网内,就会收到应答。但是如果询问的对象不在同一个局域网该如何处理?路由器就提供了代理ARP为这个问题提供了解决方案。

工作过程
在这里插入图片描述
  两台主机A和B处于同一网段但不同的广播段(不在同一物理网络上)时,主机A发送ARP请求主机B的MAC地址时,因为路由器不转发广播包的原因,ARP请求只能到达路由器。如果路由器启用了代理ARP功能,并知道主机B属于它连接的网络,那么路由器就用自己接口的MAC地址代替主机B的MAC地址来对主机A进行ARP应答。主机A接收ARP应答,但并不知道代理ARP的存在。

代理ARP的优缺点

优点:代理ARP能在不影响路由表的情况下添加一个新的Router,使子网对该主机变得透明化。一般代理ARP应该使用在主机没有配置默认网关或没有任何路由策略的网络上。

缺点:从工作工程可以看到,这其实是一种ARP欺骗。而且,通过两个物理网络之间的路由器的代理ARP功能其实互相隐藏了物理网络,这导致无法对网络拓扑进行网络概括。此外,代理ARP增加了使用它的那段网络的ARP流量,主机需要更大的ARP缓存空间,也不会为不使用ARP进行地址解析的网络工作。

5.4 ARP攻击

ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。 基于ARP协议的这一工作特性,黑客向对方计算机不断发送有欺诈性质的ARP数据包,数据包内包含有与当前设备重复的Mac地址,使对方在回应报文时,由于简单的地址重复错误而导致不能进行正常的网络通信。

一般情况下,受到ARP攻击的计算机会出现两种现象:
1)不断弹出“本机的XXX段硬件地址与网络中的XXX段地址冲突”的对话框。
2) 计算机不能正常上网,出现网络中断的症状。

因为这种攻击是利用ARP请求报文进行“欺骗”的,所以防火墙会误以为是正常的请求数据包,不予拦截。因此普通的防火墙很难抵挡这种攻击。

//-------------------------------------

引言

IP协议的设计目标是为跨越不同类型物理网络的分组交换提供互操作,这需要网络层软件所使用的地址能够和底层物理网络硬件使用的地址之间进行转换。地址解析协议(ARP)提供了只用在IPv4地址和各种网络技术使用的硬件地址之间的映射。

注: ARP仅用于IPv4,IPv6使用邻居发现协议,它被合并入ICMPv6。

ARP提供从网络层地址到相关硬件地址的动态映射,ARP是自动执行的且随时间变化,不需要系统管理员重新配置:一台网络设备更换了网卡,从而改变了MAC地址(但保留原IP地址),ARP可以在一段时间后继续正常工作。

注: ARP仅在查询主机与目的主机位于同一IP子网系统时,才能工作。如果要访问的目的主机位于远程(通过判断网络地址前缀来判断),则需要一台可到达目的地的路由器代为转发。详细的说:

如果目的主机在本地(同一局域网下),需要使用ARP将IP地址映射为MAC地址,从而建立与本地主机的通信。
如果目的主机在远程,数据包的MAC地址填为路由器,由路由器代为转发。
一个例子

192.168.0.1在浏览器中访问http://192.168.0.2, 按照如下步骤进行:

应用程序请求TCP协议建立一条到192.168.0.2的链接
通过向192.168.0.2发送第一个IPv4数据报,TCP尝试向远程主机发送一个连接请求。
我们假设192.168.0.2与发送主机位于同一子网,不经过任何路由器。
发送主机必须将32bits的IP地址转换成48bits的以太网物理地址,这是ARP的功能。
检查ARP缓存,是否缓存了目的IP主机的MAC地址。如果有,填充后直接交付。如果没有,进行下面的步骤:
ARP在本地广播域发送ARP请求的以太网帧:如果你的IPv4地址被配置为192.168.0.2, 那么请回复我, 我是192.168.0.1.
所有在广播域中的主机都收到了这个ARP请求,都会更新缓存中的相关条目, 不满足IP地址是192.168.0.2的主机,将主动丢弃该请求。
对于满足IP地址的那个主机,需要应答请求者,这个应答不是广播帧,而时针对性回复给发送者(单播)。
发送者收到回复,将目标的IP->MAC映射添加入缓存。原来引起这次ARP请求/回复的报文现在可以正常发送。
ARP缓存: 在内存中的一个映射表,其正常的到期时间是条目被创建20分钟后。

ARP帧的格式

arp.png
ARP是一个以太帧,处于2层之上,却为3层服务,所以有的地方说ARP工作在2.5层。

ARP中设置了双方的网络地址和硬件地址,区别请求帧和应答帧的字段是操作码字段(目的MAC地址也可以区分)。

相关概念

ARP缓存超时(软状态概念)
ARP条目的生存时间可调整,但是依据RFC建议:

完整的ARP条目生存时间为20分钟
不完整的ARP条目的有效时间为3分钟(所谓不完整,就是请求一个不存在的主机时,没有得到回复)
软状态: 指设定一个超时阈值,在超时前没有更新的条目,在超时后会被丢弃。

软状态刷新:软状态在活跃期间被更新状态,则计时器归零重计。

代理ARP
使一个系统(通常是一个路由器)可代替其它主机回答ARP请求,使得请求者认为代理 系统就是目的主机。代理ARP并不常用。

免费ARP
当一台主机发送ARP请求的目的IP为自身时,称为免费ARP,免费ARP有两个作用:

免费ARP不应该收到回复,如果收到回复,说明存在网络地址冲突的问题。
当自身的硬件地址修改时,可以通过免费ARP广播,使得其它设备在ARP缓存中更新该主机的硬件地址。
ARP相关的网络攻击
大多数ARP的实现使用ARP应答提供的条目去更新原有的条目,这使得攻击者只要不断地发出伪造的ARP响应包就可以更改目标主机ARP缓存中地IP-MAC条目,造成网络中断。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值