ARP(地址解析协议)

简介

计算机通信方式通过广播的方式。所有上层的数据包到最后都要封装到以太网头,然后通过以太网协议发送。在谈及以太网协议的时候,我们已经了解到,通信基于 MAC 地址的广播方式实现的,计算机在发送数据包时,获取自身的 MAC 地址是 容 易 的 , 获 取 目 标 主 机 的 MAC 地 址 , 需 要 通 过 ARP( Address Resolution Protocol,地址解析协议)来实现。

协议原理

ARP 用于实现从 IP 地址到MAC地址的映射,即询问目标IP 地址对应的MAC地址,以广播的方式发送数据包,获取目标主机的MAC地址。我们通过一个案例来说明其具体通信原理,假设主机 IP 地址都已知。

  • 主机A的 IP 地址为 10.1.20.64,MAC地址为 00:08:ca:xx:xx:xx
  • 主机B的 IP 地址为 10.1.20.109 ,MAC地址为 44:6d:57:xx:xx:xx

当 主 机 A 要 与 主 机 B 通 信 时 , ARP 可 以 将 主 机 B 的 IP 地 址(10.1.20.109)解析成主机B的MAC地址,以下为工作流程。

第一步:通过 IP 地址和子网掩码计算出自己所处的子网,得出如下表所示的结果。

image-20221018213209515

第二步:分析主机A和B是否处于同一网络,如果不是同一网络,那么下表中目标 IP 地址为10.1.20.109(访问路由器的路由表),通过 ARP 获取的是网关的 MAC 地址

image-20221018213236999

第三步:根据主机A上的路由表内容,确定用于访问主机B的转发 IP 地址是 10.1.20.109。然后主机A在自己的本地 ARP 缓存中检查主机B的匹配 MAC 地址。

第四步:如果主机A在 ARP 缓存中没有找到映射,它将询问 10.1.20.64 的硬件地址,从而将 ARP 请求帧广播到本地网络上的所有主机。源主机A的 IP 地址和 MAC 地址都包括在 ARP 请求中。本地网络上的每台主机都接收到 ARP 请求并且检查是否与自己的 IP 地址匹配。如果主机发现请求的 IP 地址与自己的 IP 地址不匹配,它将丢弃 ARP 请求。

第五步:主机B确定 ARP 请求中的 IP 地址与自己的 IP 地址匹配将主机A的 IP 地址和 MAC 地址映射添加到本地 ARP 缓存中。

第六步:主机 B 将包含其 MAC 地址的 ARP 回复消息直接发送回主机 A。

第七步:当主机 A 接收到从主机 B 发来的 ARP 回复消息时,会用主机 B 的 IP 地址和 MAC 地址映射更新 ARP 缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机 B 的 MAC 地址一旦确定,主机 A 就能向主机 B 发送 IP 地址了。


​ ——— 摘自《Netty 4 核心原理与手写 RPC 框架实战》