什么是ARP?为什么需要ARP?以及ARP的报文格式,ARP是如何进行地址解析

科技   2025-01-16 16:30   河北  

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
  • 定义:免费ARP是设备主动使用自己的IP地址作为目的IP地址发送ARP请求的一种特殊形式。
  • 应用场景主要用于检测IP地址冲突、通告新的MAC地址以及在VRRP备份组中通告主备发生变换等。
3.4Proxy ARP
  • 定义Proxy ARP是一种代理机制,允许一个设备(通常为路由器或三层交换机)对不在同一物理网络上的另一设备的ARP请求作出应答。
  • 应用场景
    • 使得那些在同一网段但不在同一物理网络上的设备能够相互通信。
    • Proxy ARP可以隐藏物理网络的细节,并使得两个物理网络可以使用同一个网络号。

Proxy ARP还可以进一步细分为路由式Proxy ARPVLANProxy ARPVLANProxy ARP等,以适应不同的网络环境和需求。

4.ARP报文格式

主要参数:

字段名称长度(字节)描述
硬件类型2值为1表示以太网地址
协议类型20x0800表示IP地址
硬件地址长度1数值为6(以太网MAC地址长度)
协议地址长度1数值为4IPv4地址长度)
操作代码21表示请求报文,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_1ARP表中找到了Host_3对应的MAC地址,则Host_1直接利用ARP表中的MAC地址,对数据报文进行帧封装,并将数据报文发送给Host_3。如果Host_1ARP表中找不到Host_3对应的MAC地址,则先缓存该数据报文,并以广播方式发送一个ARP请求报文。如上图中所示,OP字段为1表示该报文为ARP请求报文,ARP请求报文中的源MAC地址和源IP地址为Host_1MAC地址和IP地址,目的MAC地址为全0MAC地址,目的IP地址为Host_3IP地址。

2)Switch_1收到ARP请求报文后,将该ARP请求报文在同一广播域内转发。

3)同一广播域内的主机Host_2Host_3都能接收到该ARP请求报文,但只有被请求的主机(即Host_3)会对该ARP请求报文进行处理。Host_3比较自己的IP地址和ARP请求报文中的目的IP地址,当两者相同时进行如下处理:将ARP请求报文中的源IP地址和源MAC地址(即Host_1IP地址和MAC地址)存入自己的ARP表中。之后以单播方式发送ARP应答报文给Host_1ARP应答报文内容如上图中所示,OP字段为2表示该报文为ARP应答报文,源MAC地址和源IP地址为Host_3MAC地址和IP地址,目的MAC地址和目的IP地址为Host_1MAC地址和IP地址。

4)Switch_1收到ARP应答报文后,将该ARP应答报文转发给Host_1Host_1收到ARP应答报文后,将Host_3MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将数据报文进行帧封装,并将数据报文发送给Host_3

# 当需要通信的两台主机处于不同网段时

如上图中的Host_1Host_4Host_1上已经配置缺省网关:

首先Host_1会发送ARP请求报文,请求网关RouterIP地址对应的MAC地址。Host_1收到ARP应答报文后,将数据报文封装并发给网关,再由网关将数据报文发送给目的主机Host_4Host_1学习网关IP地址对应的ARP表项的过程,以及网关设备学习Host_4IP地址对应的ARP表项的过程与上述同网段主机Host_1Host_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秒之间。


Python运维实践
Python运维实践,专注于互联网技术的总结与交流,内容涉及Python自动化运维、Django框架、园区网络技术、linux云计算、系统架构及网络空间安全等知识的实践与分享。
 最新文章