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表项不会老化
有两种静态表项
- 短静态表项:只绑定IP地址和MAC地址,不绑定VLAN和接口。此时该表项不能直接用于数据转发,需要发起ARP请求并收到ARP响应后,匹配响应的映射关系和静态表项相同后,将VLAN和接口填入ARP表项后,该表项才能正式生效
- 长静态表项:不仅绑定IP地址和MAC地址,同时绑定VLAN和接口,此时该表项直接生效.
配置静态ARP的场景
静态ARP虽然配置繁琐,不灵活,但是不会老化,也不会被动态ARP表项覆盖,因此在特定场景下有特殊的用途,下面介绍几种典型应用
- 动态ARP容易被攻击,同时也可能会出现老化而消失的现象,因此为了确保某台重要设备的稳定性和安全性,可以选择配置相对安全可靠的静态ARP。
- 当网络中用户设备的MAC地址为组播MAC地址时,可以在路由器上配置静态ARP表项。缺省情况下,设备收到源MAC地址为组播MAC地址的ARP报文时不会进行ARP学习。
- 当需要禁止某个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~