ARP

计算机网络 admin 暂无评论

地址解析协议,即ARPAddress Resolution Protocol),是根据IP地址 获取物理地址的一个TCP/IP协议。主机发送信息时 将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后 将该IP地址和物理地址存入本机ARP缓存中 并保留一定时间,下次请求时直接查询ARP缓存 以节约资源。

地址解析协议是建立在网络中各个主机 互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时 不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息 无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARPNDP用于在IPv6中代替地址解析协议。


地址解析协议由互联网工程任务组(IETF)在198211月发布的RFC 826中描述制定。地址解析协议是IPv4中必不可少的协议,而IPv4是使用较为广泛的互联网协议版本。OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32IP地址)、第二层(48MAC地址)的报头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。

地址解析协议工作过程如下

主机AIP地址为192.168.1.1MAC地址为0A-11-22-33-44-01

主机BIP地址为192.168.1.2MAC地址为0A-11-22-33-44-02

当主机A要与主机B通信时,地址解析协议可以将主机BIP地址(192.168.1.2)解析成主机BMAC地址,以下为工作流程:

1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。

2步:如果主机AARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机AIP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。

3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机AIP地址和MAC地址映射添加到本地ARP缓存中。

4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A

5步:当主机A收到从主机B发来的ARP回复消息时,会用主机BIPMAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机BMAC地址一旦确定,主机A就能向主机B发送IP通信了。

ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址-->MAC地址的对应表,表中每一个条目分别记录了 网络上其他主机的IP地址和对应的MAC地址。每一个以太网或令牌环网络适配器 都有自己单独的表。当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。

为使广播量最小,ARP维护IP地址到MAC地址映射的缓存以便将来使用。ARP缓存可以包含动态和静态项目。动态项目随时间推移自动添加和删除。每个动态ARP缓存项的潜在生命周期是10分钟。新加到缓存中的项目带有时间戳,如果某个项目添加后2分钟内没有再使用,则此项目过期并从ARP缓存中删除;如果某个项目已在使用,则又收到2分钟的生命周期;如果某个项目始终在使用,则会另外收到2分钟的生命周期,一直到10分钟的最长生命周期。静态项目一直保留在缓存中,直到重新启动计算机为止。

地址解析协议是通过报文工作的。报文包括如下字段:

硬件类型、   

协议类型、 

硬件地址长度、     

协议长度、    

操作类型

ARP缓存中包含一个或多个表,它们用于存储IP地址及其经过解析的MAC地址。ARP命令用于查询本机ARP缓存中IP地址-->MAC地址的对应关系、添加或删除静态对应关系等。如果在没有参数的情况下使用,ARP命令将显示帮助信息。

常见用法

arp -aarp g

用于查看缓存中的所有项目。-a-g参数的结果是一样的,多年来-g一直是UNIX平台上用来显示ARP缓存中所有项目的选项,而Windows用的是arp -a-a可被视为all,即全部的意思),但它也可以接受比较传统的-g选项。

地址解析协议是建立在网络中各个主机互相信任的基础上的,它的诞生使得网络能够更加高效的运行,但其本身也存在缺陷:

ARP地址转换表是依赖于计算机中高速缓冲存储器 动态更新的,而高速缓冲存储器的更新是受到更新周期的限制的,只保存最近使用的 地址映射关系表项,这使得攻击者有了可乘之机,可以在高速缓冲存储器更新表项之前修改地址转换表,实现攻击。ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表。  ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。

防御措施

不要把网络安全信任关系建立在IP基础上或MAC基础上(RARP同样存在欺骗的问题),理想的关系应该建立在IP+MAC基础上。

设置静态的MAC-->IP对应表,不要让主机刷新设定好的转换表。

除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。

使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。

地址解析协议是IPv4中必不可少的协议,但在IPv6中将不再存在地址解析协议。在IPv6中,地址解析协议的功能将由NDP,即 邻居发现协议 实现,它使用一系列IPv6控制信息报文(ICMPv6)来实现相邻节点(同一链路上的节点)的交互管理,并在一个子网中保持网络层地址和数据链路层地址之间的映射。邻居发现协议中定义了5种类型的信息:路由器宣告、路由器请求、路由重定向、邻居请求和邻居宣告。与ARP相比,NDP可以实现路由器发现、前缀发现、参数发现、地址自动配置、地址解析(代替ARPRARP)、下一跳确定、邻居不可达检测、重复地址检测、重定向等更多功能。

IPv4中地址解析协议是独立的协议,负责IP地址到MAC地址的转换,对不同的数据链路层协议 要定义不同的地址解析协议。IPv6NDP包含了ARP的功能,且运行于因特网控制信息协议ICMPv6上,更具有一般性,包括更多的内容,而且适用于各种数据链路层协议;

地址解析协议以及ICMPv4路由器发现 ICMPv4重定向报文基于广播,而NDP的邻居发现报文基于高效的组播和单播。

综上,详细介绍了地址解析协议,通过地址解析协议,主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址。

转载请注明:维修电工知识 » ARP

喜欢 ()or分享