ARP

掌握 ARP 的概念和流程,可能在选择题中考察。

概念

ARP(Address Resolution Protocol,地址解析协议) 是一种在 TCP/IP 网络 中使用的协议,用于将 IP 地址 转换为 物理硬件地址(例如,MAC 地址)。ARP 的主要目的是确定要通过网络传输数据的目标设备的 物理硬件地址,以便将数据帧正确地传送到目标设备。

10.1.1.2
10.1.1.2
Switch
Switch
10.1.1.5
10.1.1.5
10.1.1.4
10.1.1.4
10.1.1.3
10.1.1.3
Requesting the mac address
for 10.1.1.1
Requesting the mac addr...
Sending mac address
5a:71:22:65:55:31
Sending mac address...
Text is not SVG - cannot display

流程

以上图为例,主机 10.1.1.2 用 ARP 协议查找主机 10.1.1.4 的 MAC 地址,其流程如下图所示

sequenceDiagram
  participant 10.1.1.2;
  participant Switch;
  10.1.1.2 ->> Switch: 请求 IP 地址为 10.1.1.4 的设备的 MAC 地址;
  Switch ->> 10.1.1.3: 广播 ARP 请求;
  Switch ->> 10.1.1.4: 广播 ARP 请求;
  Switch ->> 10.1.1.5: 广播 ARP 请求;
  10.1.1.4 ->> Switch: 返回 ARP 响应;
  Switch ->> 10.1.1.2: 交换器转发 ARP 响应;

具体而言,一次 ARP 请求可以被拆分为 如下步骤

  1. ARP 请求

当一台设备(我们称它为主机 A)需要发送数据包到同一局域网内的另一台设备(主机 B),但它只知道目标设备的 IP 地址 时,它会在本地网络上广播一个 ARP 请求。这个请求的语义大致是这样的:“我拥有 IP 地址 X.X.X.X 的设备,请告诉我你的物理 MAC 地址。”

ARP 请求的 目的 MAC 地址ff-ff-ff-ff-ff-ff-ff-ff源 MAC 地址 设置为自己的 MAC 地址。

  1. 网络上的广播

ARP 请求是一个 广播帧,它发送到本地网络上的所有设备。每一台设备都会收到这个请求,但只有 IP 地址匹配请求中 IP 地址的设备会回应这个请求。

  1. ARP 响应

当主机 B 收到这个 ARP 请求 后,它会识别出请求中的 IP 地址与自己的 IP 地址 相匹配,然后向主机 A 发送一个 ARP 响应。这个响应包含了主机 B 的 MAC 地址,并且这个响应是直接发送给主机 A 的,不是广播。

  1. 更新 ARP 缓存

主机 A 收到 ARP 响应 后,它会在自己的 ARP 缓存 表中更新这个信息,将主机 B 的 IP 地址 与其 MAC 地址 关联起来。ARP 缓存 表中的这些条目通常会在一段时间后过期,所以可能需要定期更新。

  1. 数据传输

主机 A 现在知道了主机 B 的 MAC 地址,它可以构建一个以太网帧,将数据包含在其中,并使用 B 的 MAC 地址 作为目的地址发送出去。

ARP 缓存

所有主机都会维护一个 ARP 缓存,该缓存存储了网络上其他设备的 IP 地址MAC 地址 的映射。
这减少了广播 ARP 请求 的需要,因为主机可以查看自己的缓存来找到之前解析过的地址。

以下是一个简化的 ARP 缓存 表格示例,展示了 IP 地址MAC 地址 的映射关系:

IP 地址MAC 地址状态接口
192.168.1.100:1A:2B:3C:4D:5E动态eth0
192.168.1.200:1A:2B:3C:4D:5F静态eth0
192.168.1.300:1A:2B:3C:4D:60动态wlan0
192.168.1.400:1A:2B:3C:4D:61动态eth0
注意

ARP 运行在哪一层

地址解析协议(ARP)实际上是一个介于 数据链路层(第二层)和 网络层(第三层)之间的协议。ARP 的功能是将网络层的地址(如 IPv4 地址)解析为数据链路层的地址(如以太网 MAC 地址)。虽然它处理的是网络层地址,但它运行在 数据链路层,直接构建和发送数据链路层的帧。因此,它通常被认为是 网络层 的一个辅助协议,但技术上它操作在 数据链路层