一、ARP简介
1、ARP作用
ARP(Address Resolution Protocol,地址解析协议)是将 IP 地址解析为以太网 MAC 地址(或称
物理地址)的协议。
在网络中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层
地址(即 IP 地址)。但是仅仅有 IP 地址是不够的,因为 IP 数据报必须封装成帧才能通过物理网络
发送,因此发送站还必须有接收站的物理地址,所以需要一个从 IP 地址到物理地址的映射。ARP
就是实现这个功能的协议。
2、ARP报文结构
ARP报文分为ARP请求和ARP应答报文
1)、硬件类型:表示硬件地址的类型。它的值为 1 表示以太网地址;
2)、协议类型:表示要映射的协议地址类型。它的值为 0x0800 即表示 IP 地址;
3)、硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以
太网上 IP 地址的 ARP 请求或应答来说,它们的值分别为 6 和 4;
4)、操作类型(OP):1 表示 ARP 请求,2 表示 ARP 应答;
5)、 发送端 MAC 地址:发送方设备的硬件地址;
6)、发送端 IP 地址:发送方设备的 IP 地址;
7)、 目标 MAC 地址:接收方设备的硬件地址;
8)、目标 IP 地址:接收方设备的 IP 地址。
3、ARP地址解析过程
(1) 主机 A 首先查看自己的 ARP 表,确定其中是否包含有主机 B 对应的 ARP 表项。如果找到了
对应的 MAC 地址,则主机 A 直接利用 ARP 表中的 MAC 地址,对 IP 数据报进行帧封装,并
将 IP 数据报发送给主机 B。
(2) 如果主机 A 在 ARP 表中找不到对应的 MAC 地址,则将缓存该 IP 数据报,然后以广播方式发
送一个 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 数据报进行封装后发送出去。
(5)当主机 A 和主机 B 不在同一网段时,主机 A 就会先向网关发出 ARP 请求,ARP 请求报文中的目标
IP 地址为网关的 IP 地址。当主机 A 从收到的响应报文中获得网关的 MAC 地址后,将报文封装并发
给网关。如果网关没有主机 B 的 ARP 表项,网关会广播 ARP 请求,目标 IP 地址为主机 B 的 IP 地
址,当网关从收到的响应报文中获得主机 B 的 MAC 地址后,就可以将报文发给主机 B;如果网关
已经有主机 B 的 ARP 表项,网关直接把报文发给主机 B。
二、ARP表设备通过 ARP 解析到目的 MAC 地址后,将会在自己的 ARP 表中增加 IP 地址和 MAC 地址映射关
系的表项,以用于后续到同一目的地报文的转发。
ARP 表项分为动态 ARP 表项、静态 ARP 表项和 OpenFlow ARP 表项。
1. 动态ARP表项
动态 ARP 表项由 ARP 协议通过 ARP 报文自动生成和维护,可以被老化,可以被新的 ARP 报文更
新,可以被静态 ARP 表项覆盖。当到达老化时间、接口状态 down 时,系统会删除相应的动态 ARP
表项。
2. 静态ARP表项
静态 ARP 表项通过手工配置和维护,不会被老化,不会被动态 ARP 表项覆盖。
配置静态 ARP 表项可以增加通信的安全性。静态 ARP 表项可以限制和指定 IP 地址的设备通信时
只使用指定的 MAC 地址,此时攻击报文无法修改此表项的 IP 地址和 MAC 地址的映射关系,从而
保护了本设备和指定设备间的正常通信。
静态 ARP 表项分为短静态 ARP 表项、长静态 ARP 表项和多端口 ARP 表项。
1)、在配置长静态 ARP 表项时,除了配置 IP 地址和 MAC 地址项外,还必须配置该 ARP 表项所
在 VLAN 和出接口。长静态 ARP 表项可以直接用于报文转发。
2)、 在配置短静态 ARP 表项时,只需要配置 IP 地址和 MAC 地址项。如果出接口是三层以太网接
口,短静态 ARP 表项可以直接用于报文转发;如果出接口是 VLAN 虚接口,短静态 ARP 表
项不能直接用于报文转发,需要对表项进行解析:当要发送 IP 数据报时,设备先发送 ARP
请求报文,如果收到的响应报文中的发送端 IP 地址和发送端 MAC 地址与所配置的 IP 地址和
MAC 地址相同,则将接收 ARP 响应报文的接口加入该静态 ARP 表项中,此时,该短静态 ARP
表项由未解析状态变为解析状态,之后就可以用于报文转发。
3)、 配置多端口 ARP 表项时,除了配置 IP 地址和 MAC 地址外,还必须配置该 ARP 表项所在的
VLAN,当多端口 ARP 表项中的 MAC 地址和 VLAN 信息与多端口单播 MAC/组播 MAC 地址
表项中的 MAC 地址和 VLAN 相同时,该多端口 ARP 表项可用来指导 IP 转发。多端口 ARP
表项通过手工配置和维护,不会被老化,不会被动态 ARP 表项覆盖。