ARP
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
地址和子网掩码计算出自己所处的子网,得出如下表所示的结果。
第二步:分析主机A和B是否处于同一网络,如果不是同一网络,那么下表中目标 IP
地址为10.1.20.109
(访问路由器的路由表),通过 ARP
获取的是网关的 MAC
地址。
第三步:根据主机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 框架实战》