1.1.1 ARP 作用

ARPAddress Resolution Protocol,地址解析协议)是将IP 地址解析为以太网MAC 地址(或称

物理地址)的协议。

在局域网中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络

层地址(即IP 地址)。但是仅仅有IP 地址是不够的,因为IP 数据报文必须封装成帧才能通过物理

网络发送,因此发送站还必须有接收站的物理地址,所以需要一个从IP 地址到物理地址的映射。

APR 就是实现这个功能的协议。

1.1.2 ARP 报文结构

ARP报文分为ARP请求和ARP应答报文,报文格式如1-1所示。

ARP 简介_网络

1-1 ARP 报文结构

硬件类型:表示硬件地址的类型。它的值为 1 表示以太网地址;

协议类型:表示要映射的协议地址类型。它的值为0x0800 即表示IP 地址;

硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以

太网上IP 地址的ARP 请求或应答来说,它们的值分别为6 4

操作类型(OP):1 表示ARP 请求,2 表示ARP 应答;

发送端 MAC 地址:发送方设备的硬件地址;

发送端 IP 地址:发送方设备的IP 地址;

目标 MAC 地址:接收方设备的硬件地址。

目标 IP 地址:接收方设备的IP 地址。

1.1.3 ARP 地址解析过程

假设主机AB在同一个网段,主机A要向主机B发送信息。如1-2所示,具体的地址解析过程如下:

ARP 简介_主机_02

(1) 主机A 首先查看自己的ARP 表,确定其中是否包含有主机B 对应的ARP 表项。如果找到了

对应的MAC 地址,则主机A 直接利用ARP 表中的MAC 地址,对IP 数据包进行帧封装,并

将数据包发送给主机B

1-2

(2) 如果主机A ARP 表中找不到对应的MAC 地址,则将缓存该数据报文,然后以广播方式发

送一个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 数据包进行封装后发送出去。

1-2 ARP 地址解析过程

当主机 A 和主机B 不在同一网段时,主机A 就会先向网关发出ARP 请求,ARP 请求报文中的目标

IP 地址为网关的IP 地址。当主机A 从收到的响应报文中获得网关的MAC 地址后,将报文封装并发

给网关。如果网关没有主机B ARP 表项,网关会广播ARP 请求,目标IP 地址为主机B IP

址,当网关从收到的响应报文中获得主机B MAC 地址后,就可以将报文发给主机B;如果网关

已经有主机B ARP 表项,网关直接把报文发给主机B

1.1.4 ARP

设备通过 ARP 解析到目的MAC 地址后,将会在自己的ARP 表中增加IP 地址到MAC 地址的映射

表项,以用于后续到同一目的地报文的转发。

ARP 表项分为动态ARP 表项和静态ARP 表项。

1. 动态ARP 表项

动态 ARP 表项由ARP 协议通过ARP 报文自动生成和维护,可以被老化,可以被新的ARP 报文更

新,可以被静态ARP 表项覆盖。当到达老化时间、接口down 时会删除相应的动态ARP 表项。

2. 静态ARP 表项

静态 ARP 表项通过手工配置和维护,不会被老化,不会被动态ARP 表项覆盖。

配置静态 ARP 表项可以增加通信的安全性。静态ARP 表项可以限制和指定IP 地址的设备通信时

只使用指定的MAC 地址,此时攻击报文无法修改此表项的IP 地址和MAC 地址的映射关系,从而

保护了本设备和指定设备间的正常通信。

静态 ARP 表项分为短静态ARP 表项和长静态ARP 表项。

在配置长静态 ARP 表项时,除了配置IP 地址和MAC 地址项外,还必须配置该ARP 表项所

VLAN 和出接口。长静态ARP 表项可以直接用于报文转发。

1-3

在配置短静态 ARP 表项时,只需要配置IP 地址和MAC 地址项。如果出接口是三层以太网接

口,短静态ARP 表项可以直接用于报文转发;如果出接口是VLAN 虚接口,短静态ARP

项不能直接用于报文转发,当要发送IP 数据包时,先发送ARP 请求报文,如果收到的响应报

文中的源IP 地址和源MAC 地址与所配置的IP 地址和MAC 地址相同,则将接收ARP 响应报

文的接口加入该静态ARP 表项中,之后就可以用于IP 数据包的转发。

本文档所有权归H3C所有;仅供学习参考。谢谢!