ARP解析

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

ARP

ARP简介

ARP作用:
把IP地址解析为MAC地址,知道了IP求MAC

对于ARP的理解:

  • ARP和DHCP基本上是终端发出的第一个包
  • ARP是很多协议的辅助协议

ARP工作流程

同网段的通信

查看ARP表。如果ARP表中有目标主机的ARP表项,直接将目标主机的MAC地址放入数据帧头中,完成Ethernet Header+IP+CRC的封装,发送出去。

如果ARP表中没有目标主机对应的表项,则缓存该数据报文。发送ARP请求(ARP请求的目标MAC是全F的广播地址)。

同一个广播域的所有主机都会收到ARP请求,只有目标主机才会对请求进行处理并将请求主机的“IP-MAC”对缓存在本地ARP表中,同时发送ARP应答。ARP应答的目标MAC是请求主机的MAC——单播。

请求主机收到ARP响应报文后,将目标主机的MAC地址加入ARP表,同时将缓冲的数据报文进行封装后发出。

不同网段的通信

简单来说就是从:

  • (同网段)主机————目标主机
  • (不同网段)主机————网关 到 网关————目标主机

两段过程与同网段通信一致

ARP缓存

动态表项

  通过ARP协议学习,能被更新,缺省老化时间120s

静态表项

  手工配置的映射关系,不能被更新,无老化时间

  能够防止ARP欺骗,安全性很高

ARP报文

ARP报文

字段1和2分别是目的MAC和源MAC地址

字段3表示后面的数据类型,ARP请求和ARP应答为0x0806

字段4表示硬件地址类型,以太网类型值为1

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

字段6表示硬件地址长度,字段7表示协议地址长度

字段8表示操作类型,ARP请求——1;ARP应答——2;RARP请求——3;RARP应答——4

ARP报文分析

ARP报文

免费ARP

  免费ARP指主机发送ARP查找自己的IP地址,通常发生在系统引导期间进行接口配置时。与标准ARP的区别就是免费ARP分组的目的IP地址字段封装的是自己的IP地址,即向所在网络请求自己的MAC地址。

免费ARP的作用有

  • 一个主机可以通过它来确定另一个主机是否设置了相同的 IP地址。

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

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

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

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

  • 网关利用免费ARP防止ARP攻击

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

ARP欺骗

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

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

Proxy代理ARP

概念

  代理ARP是为了分割网络,同时又不想划分网段,中间加设一个路由设备并开启ARP代理功能。这样就能通过router代为回应双方的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进行地址解析的网络工作。

参考

  1. songoo的ARP详解
  2. 财务码农小老板的ARP地址解析协议