地址解析协议

第一个网络层协议是地址解析协议ARP)。 ARP 动态地将因特网地址翻译到局域网上唯一的硬件地址。

要说明 ARP 是如何工作的,请考虑两个节点,XY。 如果节点 X 希望与 Y 通信,并且 XY 处在不同的局域网 (LAN) 上,那么 XY 通过网桥路由器网关,使用 IP 地址进行通信。 在 LAN 中,节点使用低级别硬件地址通信。

同一个 LAN 的同一段上的节点使用 ARP 来确定其他节点的硬件地址。 首先,节点 X 针对节点 Y的硬件地址广播 ARP 请求。 该 ARP 请求中包含 XIP 和硬件地址以及 YIP 地址。 当 Y 接收到 ARP 请求时,它会在其 ARP 高速缓存中放置 X 的条目 (用于快速从 IP 地址映射到硬件地址) ,然后使用包含 YIP 和硬件地址的 ARP 响应直接响应 X 。 当节点 X 接收到 YARP 响应时,它会在其 ARP 高速缓存中放置 Y 的条目。

X for Y上存在 ARP 高速缓存条目后,节点 X 能够将包直接发送到 Y ,而无需再次求助于 ARP (除非删除 YARP 高速缓存条目,在这种情况下,将复用 ARP 以联系 Y)。

不像大多数协议,ARP 包没有固定格式的报头。 取而代之的是,消息设计成用于多种网络技术,如:

  • 以太网 LAN 适配器(支持以太网和 802.3 协议)
  • 令牌环网络适配器
  • 光纤分布式数据接口 (FDDI) 网络适配器

然而,ARP 不为串行线接口协议SLIP)或串行光纤通道转换器SOC)翻译地址,因为这些都是点到点连接。

内核会保留转换表,且 ARP 对于用户或应用程序不是直接可用的。 当应用程序发送一个因特网包到一个接口驱动器时,驱动器请求一个相应的地址映射。 如果映射不在表中,将通过请求的接口驱动程序向局域网上的主机发送一个 ARP 广播包。

ARP 映射表中的条目将在 20 分钟后删除;不完整的记录将在 3 分钟后删除。 要在 ARP 映射表中创建永久条目,请将 arp 命令与 pub 参数配合使用:

arp -s 802.3 host2 0:dd:0:a:8s:0 pub

当任何支持 ARP 的主机接收到一个 ARP 请求包时,主机就会注明 IP 和请求系统的硬件地址并且更新它的映射表(如果必要的话)。 如果接收主机的 IP 地址与请求的地址不匹配,主机废弃该请求包。 如果 IP 地址匹配,接收主机向请求系统发送一个响应包。 请求系统存储新的映射并且用它来传输任何相似的正在审批的因特网包。