1.什么是ARP?
ARP(Address Resolution Protocol
,地址解析协议)是用来将IP
地址解析为MAC
地址的协议。主机或三层网络设备上会维护一张ARP
表,用于存储IP
地址和MAC
地址的映射关系,一般ARP
表项包括动态ARP
表项和静态ARP
表项。
2.为什么需要ARP?
在计算机网络中,特别是在局域网(LAN
)环境中,当一台主机或其他三层网络设备(如路由器)想要发送数据给另一台主机或设备时,它必须知道目的地的网络层地址,即IP
地址。然而,仅知道IP
地址并不足以完成数据的物理传输。这是因为IP
报文(或数据包)在物理网络上传输时,需要被封装成数据帧。数据帧的头部包含了目的地的物理地址,即MAC
地址。
MAC
地址是网络设备硬件级别的唯一标识符,用于在数据链路层(第二层)上标识设备。由于IP
地址和MAC
地址属于不同的网络层次,且IP
地址是逻辑地址,可以动态分配和更改,而MAC
地址是物理地址,通常固定不变,因此需要一个协议来将IP
地址映射到对应的MAC
地址。
ARP
正是这样一个协议,它允许网络设备(如主机、路由器等)通过已知的IP
地址来查询并获取对应的MAC
地址。
3.ARP的类型
ARP
的类型主要包括以下几种:
3.1动态ARP
定义:动态 ARP
表项是由ARP
协议通过ARP
报文自动生成和维护的。特点: 设备启动时会通过广播发送 ARP
请求,以获取同一局域网内其他设备的MAC
地址,并动态地建立ARP
表项。这些表项可以被老化(即当一段时间内未使用时会被自动删除),也可以被新的 ARP
报文更新。动态 ARP
适用于拓扑结构复杂、通信实时性要求高的网络。
3.2静态ARP
定义:静态 ARP
表项是由管理员手工建立的IP
地址和MAC
地址之间固定的映射关系。特点: 静态 ARP
表项不会被老化,也不会被动态ARP
表项覆盖。静态 ARP
主要用于保证网络通信的安全性和稳定性,特别是在存在ARP
攻击风险的网络环境中。静态 ARP
表项可以限制本端设备和指定IP
地址的对端设备通信时只使用指定的MAC
地址,从而防止攻击报文修改ARP
表项。
静态ARP
表项还可以进一步细分为短静态ARP
表项和长静态ARP
表项:
短静态ARP表项:在配置时只需要指定 IP
地址和MAC
地址。如果出接口是三层以太网接口,短静态ARP
表项可以直接用于报文转发;如果出接口是VLAN
虚接口,短静态ARP
表项不能直接用于报文转发,需要先发送ARP
请求报文进行确认。长静态ARP表项:在配置时除了需要指定 IP
地址和MAC
地址外,还必须指定该ARP
表项所在的VLAN
和出接口。长静态ARP
表项可以直接用于报文转发。
3.3免费ARP
定义:免费 AR
P是设备主动使用自己的IP
地址作为目的IP
地址发送ARP
请求的一种特殊形式。应用场景:主要用于检测 IP
地址冲突、通告新的MAC
地址以及在VRRP
备份组中通告主备发生变换等。
3.4Proxy ARP
定义: Proxy ARP
是一种代理机制,允许一个设备(通常为路由器或三层交换机)对不在同一物理网络上的另一设备的ARP
请求作出应答。应用场景: 使得那些在同一网段但不在同一物理网络上的设备能够相互通信。 Proxy ARP
可以隐藏物理网络的细节,并使得两个物理网络可以使用同一个网络号。
Proxy ARP
还可以进一步细分为路由式Proxy ARP
、VLAN
内Proxy ARP
和VLAN
间Proxy ARP
等,以适应不同的网络环境和需求。
4.ARP报文格式
主要参数:
字段名称 | 长度(字节) | 描述 |
---|---|---|
硬件类型 | 2 | 值为1 表示以太网地址 |
协议类型 | 2 | 0x0800 表示IP 地址 |
硬件地址长度 | 1 | 数值为6 (以太网MAC 地址长度) |
协议地址长度 | 1 | 数值为4 (IPv4 地址长度) |
操作代码 | 2 | 1 表示请求报文,2 表示应答报文 |
源MAC 地址 | 6 | 源设备的MAC 地址 |
源IP 地址 | 4 | 源设备的IPv4 地址 |
目的MAC 地址 | 6 | 目的设备的MAC 地址 |
目的IP 地址 | 4 | 目的设备的IPv4 地址 |
5.ARP是如何进行地址解析的?
动态ARP
通过广播ARP
请求和单播ARP
应答这两个过程完成地址解析。
ARP
地址解析过程如上图:
# 当需要通信的两台主机处于同一网段时
如上图Host_1
要向Host_3
发送数据,过程如下:
1)首先,Host_1
会查找自己本地缓存的ARP
表,确定是否包含Host_3
对应的ARP
表项。如果Host_1
在ARP
表中找到了Host_3
对应的MAC
地址,则Host_1
直接利用ARP
表中的MAC
地址,对数据报文进行帧封装,并将数据报文发送给Host_3
。如果Host_1
在ARP
表中找不到Host_3
对应的MAC
地址,则先缓存该数据报文,并以广播方式发送一个ARP
请求报文。如上图中所示,OP
字段为1
表示该报文为ARP
请求报文,ARP
请求报文中的源MAC
地址和源IP
地址为Host_1
的MAC
地址和IP
地址,目的MAC
地址为全0
的MAC
地址,目的IP
地址为Host_3
的IP
地址。
2)Switch_1
收到ARP
请求报文后,将该ARP
请求报文在同一广播域内转发。
3)同一广播域内的主机Host_2
和Host_3
都能接收到该ARP
请求报文,但只有被请求的主机(即Host_3
)会对该ARP
请求报文进行处理。Host_3
比较自己的IP
地址和ARP
请求报文中的目的IP
地址,当两者相同时进行如下处理:将ARP
请求报文中的源IP
地址和源MAC
地址(即Host_1
的IP
地址和MAC
地址)存入自己的ARP
表中。之后以单播方式发送ARP
应答报文给Host_1
,ARP
应答报文内容如上图中所示,OP
字段为2
表示该报文为ARP
应答报文,源MAC
地址和源IP
地址为Host_3
的MAC
地址和IP
地址,目的MAC
地址和目的IP
地址为Host_1
的MAC
地址和IP
地址。
4)Switch_1
收到ARP
应答报文后,将该ARP
应答报文转发给Host_1
。Host_1
收到ARP
应答报文后,将Host_3
的MAC
地址加入到自己的ARP
表中以用于后续报文的转发,同时将数据报文进行帧封装,并将数据报文发送给Host_3
。
# 当需要通信的两台主机处于不同网段时
如上图中的Host_1
和Host_4
,Host_1
上已经配置缺省网关:
首先Host_1
会发送ARP
请求报文,请求网关Router
的IP
地址对应的MAC
地址。Host_1
收到ARP
应答报文后,将数据报文封装并发给网关,再由网关将数据报文发送给目的主机Host_4
。Host_1
学习网关IP
地址对应的ARP
表项的过程,以及网关设备学习Host_4
的IP
地址对应的ARP
表项的过程与上述同网段主机Host_1
和Host_3
之间进行ARP
地址解析的过程类似。
6.ARP的老化时间
不同设备上ARP
表项的老化时间不同,华为网络设备的默认老化时间为20
分钟,即1200S
。可以用下面命令查看:取值范围在30-62640
秒之间:
[HXSW]arp expire-time ?
INTEGER<30-62640> Arp expire time(in seconds), the default is 1200
[HXSW]
Windows
主机的ARP
老化时间是随机的,介于15至45
秒之间。