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地址。”

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