ARP协议

体系结构

⭐ 中优先级

需要掌握 ARP 的流程,选择题和解答题都会涉及到。

概念

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

流程

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

  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 地址 )。虽然它处理的是网络层地址,但它运行在 数据链路层 ,直接构建和发送数据链路层的帧。 因此,它通常被认为是网络层 的一个辅助协议,但技术上它操作在 数据链路层

相关笔记

  • 数据链路层设备
  • 数据链路层
  • 差错控制
  • 流量控制
  • 组帧
  • 局域网与广域网
  • 介质访问控制