一篇文章攻略ARP协议

ARP协议全称地址解析协议( Address Resolution Protocol),即通过IP地址解析MAC地址的协议。

当主机之间需要相互通信,并且已经获取到对方主机的IP地址后,处于三层的数据包要向下封装,为了能让数据通过物理链路传输到对方,需要知道对方的MAC地址。ARP协议就是通过目的IP地址去寻找目的MAC地址的协议。

报文格式

首先查看一下ARP协议的报文格式

Source/Destination Hardware/Protocol Address: 从之前所述可以得知ARP协议通过IP地址去查找MAC地址,因此报文中必定含有源目IP地址和源目MAC地址。同时据此也可以看出ARP协议是工作在网络层的。除此之外,还有一些其他字段

Hardware/Protocol Type:MAC地址/IP地址类型,一般硬件地址类型是以太网,三层协议类型是IP

Hardware/Protocol Length:MAC地址/IP地址长度,单位是字节

基本工作流程

看完了ARP报文的基本结构,接下来就让我们看看ARP协议是如何具体工作的吧

动态ARP

ARP协议最常见的应用就是动态ARP

如图,假设新加入的一台主机Host_1想要向Host_3发送数据,此时Host_1已经拥有了Host_3的IP地址

1.ARP请求

ARP协议会维护ARP表,里面存放着IP地址和MAC地址的映射关系。Host_1会查找自己的ARP表项,如果找到,直接单播发送到目的主机;如果没有,全网段广播IP地址

2.ARP响应

收到ARP请求的主机都会查看请求报文的目的IP地址是不是自己的,如果不是,直接丢弃;如果是,因为知道报文发送方的IP地址和MAC地址,所以将发送单播ARP响应到Host_1;同时将该ARP报文中源IP地址和源MAC地址缓存在自己的ARP表中

3.ARP缓存

收到响应后主机Host_1将检查自己的IP地址和响应的IP地址是否匹配,如果匹配成功,将该映射关系缓存在ARP表中,并封装数据传输到对端主机

静态ARP

相比较动态ARP自动获取MAC地址,静态ARP需要网络管理员手动将IP地址和MAC地址的映射关系写入到ARP表中,静态的ARP表项不会老化

有两种静态表项

  1. 短静态表项:只绑定IP地址和MAC地址,不绑定VLAN和接口。此时该表项不能直接用于数据转发,需要发起ARP请求并收到ARP响应后,匹配响应的映射关系和静态表项相同后,将VLAN和接口填入ARP表项后,该表项才能正式生效
  2. 长静态表项:不仅绑定IP地址和MAC地址,同时绑定VLAN和接口,此时该表项直接生效.

配置静态ARP的场景

静态ARP虽然配置繁琐,不灵活,但是不会老化,也不会被动态ARP表项覆盖,因此在特定场景下有特殊的用途,下面介绍几种典型应用

  1. 动态ARP容易被攻击,同时也可能会出现老化而消失的现象,因此为了确保某台重要设备的稳定性和安全性,可以选择配置相对安全可靠的静态ARP。
  2. 当网络中用户设备的MAC地址为组播MAC地址时,可以在路由器上配置静态ARP表项。缺省情况下,设备收到源MAC地址为组播MAC地址的ARP报文时不会进行ARP学习。
  3. 当需要禁止某个IP地址访问设备时,可以将该IP地址和一个不存在的MAC地址绑定。

老化机制

存在在ARP表中的动态ARP表项存在有效时间,过期将删除该表项,从而释放ARP表的容量,提高设备的性能

动态ARP表项的老化参数有:老化超时时间老化探测次数老化探测模式

  • 老化超时时间:ARP达到超时时间后会发送老化探测报文(其实就是ARP请求),如果收到响应,更新ARP表项,如果没有,探测结束
  • 老化探测次数:到达一定老化探测次数未收到响应,删除该表项
  • 老化探测模式:探测报文支持广播和单播

注:当接口down掉后,该接口相关的所有动态ARP表项将全部删除

其他特性

免费ARP

可用于主机IP冲突检测:当主机的IP地址发生变更后或者链路刚刚UP后,为了防止和已存在的IP地址冲突,ARP协议将主动广播包含主机IP地址的ARP请求,如果收到ARP响应,说明该IP地址已经被使用,则存在冲突。

通告新的MAC地址:由于设备新换了网卡等情况导致MAC地址发生变更,此时可以发送免费ARP来让其它主机更新表项

用于VRRP组主备模式之间切换: 发生主备变换后,MASTER设备会广播发送一个免费ARP报文来通告发生了主备变换

代理ARP

如果ARP报文需要发往同一网段但不同物理网络的主机时,就需要通过代理ARP来实现请求的代理。开启代理ARP的设备将接受本网段的ARP请求,同时查找路由表,如果路由表中有相应的IP地址,说明通过该设备可以通往目的设备,则代理ARP设备会以自己的MAC地址发送ARP响应,之后便通过该设备进行数据转发。

代理ARP共有三种模式

  • 路由式代理: 需要互通的主机(主机上没有配置缺省网关,无法知道)处于相同的网段但不在同一物理网络(即不在同一广播域)的场景
  • VLAN内代理: 需要互通的主机处于相同网段,并且属于相同VLAN,但是VLAN内配置了端口隔离的场景。
  • VLAN间代理: 需要互通的主机处于相同网段,但属于不同VLAN的场景

代理ARP功能强大,一般用于网关路由器,可以防止用户配置错误网关地址依然可以通信,但是由于代理ARP对通信无感知,因此可能被黑客利用实施ARP欺骗等攻击,对网络安全造成风险。同时,在配置静态路由时如果使用错误使用代理ARP也会导致学习到错误的MAC地址。

RARP

属于ARP的逆向协议, 可以将MAC地址解析为IP地址的协议。

一般会在无盘工作站、帧中继协议中出现,但是现在使用较少。

that ’s all~

分享到: