ARP、反向 ARP、逆向 ARP、代理 ARP 和免费 ARP

computer networkinternetmca更新于 2026/1/4 23:52:17

地址解析协议

地址解析协议 (ARP) 是一种工作于 TCP/IP 第 2 层的通信协议。

  • ARP 有助于根据 IP 地址获取所连接路由器或网关的 MAC 地址。
  • ARP 是一种请求-响应协议,其中一个设备向另一个设备发送请求,请求某些信息,另一个设备将响应/回复所需的信息。
  • ARP 数据包由链路层封装,并且仅在特定网络中分发。 ARP 被认为是一种链路层协议。

ARP 如何工作?

  • 在发送 IP 数据包之前,发送方必须知道目标 MAC 地址。
  • 如果 MAC 地址未知,则发送方会广播 ARP 发现数据包,请求目标 MAC 地址。
  • 该网络内的每个主机都会收到该消息,但只有 IP 关联的目标接收方主机才会接受该 IP 数据包;所有其他数据包都将丢弃。
  • 接收方将向 ARP 发现数据包的发送方返回一个包含其 MAC 地址的单播数据包。
  • 发送方将收到 ARP 回复并更新 ARP 检查,然后开始向目标发送单播消息。

ARP 数据包的格式

下图显示了 ARP 数据包的格式。

硬件类型协议
硬件长度协议长度操作 ARP 请求 1,ARP 应答 2
发送方硬件地址(例如,以太网为 6 个字节)
发送方协议地址(例如,IP 为 4 个字节)
目标硬件地址(例如,以太网为 6 个字节,请求中不填写)
目标协议地址(例如,IP 为 4 个字节)

现在让我们了解一下 ARP 数据包中每个字段的作用 −

  • 硬件类型:这是一个 16 位字段,用于定义 ARP 运行的网络类型。
  • 协议类型:这是一个 16 位字段,用于定义使用 ARP 的协议。
  • 硬件长度:这是一个 8 位字段,用于定义物理地址的长度(以字节为单位)。
  • 协议长度:这是一个 8 位字段,用于定义 IP 地址的长度(以字节为单位)。
  • 操作:这是一个 16 位字段,用于定义数据包的类型:(i)ARP 请求和 (ii) ARP 应答。
  • 发送方硬件地址:这是一个可变长度字段,用于定义目标的物理地址。
  • 目标硬件地址:这是一个可变长度字段,用于定义目标的逻辑地址。

保留地址解析协议 (RARP)

RARP 协议用于在局域网 (LAN) 中知道其 MAC 地址但不知道其 IP 地址的设备。

  • 网络管理员在局域网 (LAN) 网关路由器中创建一个表,将物理机器地址映射到等效的 IP 地址。
  • 设置新机器时,其 RARP 客户端会向网关路由器请求 IP 地址。
  • 假设路由器表中已设置条目,保留 ARP 服务器会将 IP 地址返回给机器,机器可以存储该地址以备将来使用。

通过 MAC 地址获取 IP 地址的问题可以通过保留地址解析协议 (RARP) 来处理,其工作原理与 ARP 类似。

为了获取 IP 地址,主机首先在网络中的所有主机都会接收数据包,但只有服务器会通过发送包含主机 MAC 地址和 IP 地址的 RARP 响应数据包来响应主机。

逆向地址解析协议 (InARP)

逆向 ARP 与 ARP 相反。逆向 ARP 不是使用三层 IP 地址来查找二层 MAC 地址,而是使用二层 MAC 地址来查找三层 IP 地址。

逆向 ARP 主要用于帧中继和 ATM 网络,将 DLCI 映射到 IP 地址。因此,路由器通过列出该路由器的 DLCI 来请求目标 IP 地址或 PVC 另一端的 IP 地址。

代理 ARP

代理 ARP 是一种技术,使用这种技术,给定网络上的代理服务器可以响应不在该网络上的 IP 地址的 ARP 查询。

  • 例如,假设主机通过以太网连接到路由器,主机的地址为 10.10.1.1/16,路由器的地址为 10.10.10.0/24。
  • 主机想要解析 10.10.1.110 的 ARP 数据包,并认为路由器位于同一子网中,因此它将能够获取 MAC 地址。
  • 但是,由于路由器的设计会限制广播域,因此它不会发回 ARP 回复,并会拒绝该请求。
  • 但是,如果另一个路由器如果有任何其他接口连接到 10.10.1.1/16 网络,并且启用了代理 ARP,则路由器将通过列出其自身的 MAC 地址向主机发送 ARP 应答。它将充当目标网络的代理。

免费 ARP

免费 ARP 是一种自发的地址解析协议响应。

当新设备加入局域网 (LAN) 时,它会在其网络接口启动后立即将其 MAC 地址广播到整个网络。

免费 ARP 数据包的源 IP 和目标 IP 均设置为发出数据包的设备的 IP 地址,目标 MAC 是广播地址 ff:ff:ff:ff:ff:ff 或 00:00:00:00:00:00,具体取决于地址解析协议 (ARP) 的实现。

响应免费 ARP 数据包。


相关文章