ARP(Address Resolution Protocol) 是一种 地址解析协议,用于在 局域网(LAN)中根据 IP 地址 查找对应的 MAC 地址。其主要作用是通过已知的 IP 地址来获取网络中设备的物理地址(MAC 地址),以便进行正确的数据帧传输。
ARP 的工作原理:
-
发送 ARP 请求:
- 当主机 A 想要与主机 B 进行通信时,如果主机 A 已知主机 B 的 IP 地址,但不知道主机 B 的 MAC 地址,它会通过广播的方式向 网络上的所有设备 发送一个 ARP 请求。
- ARP 请求包的内容是:"谁拥有这个 IP 地址?请告知我的 MAC 地址。"。具体来说,ARP 请求包中填入主机 A 的 MAC 地址和目标 IP 地址,广播给网络中的所有主机。
-
接收 ARP 请求并回应:
- 网络上的每台主机都会收到这个 ARP 请求,但是只有目标 IP 地址与自己相匹配的主机 B 会做出回应。
- 主机 B 会发送一个 ARP 响应包,该包是一个单播消息,包含 主机 B 的 IP 地址 和 MAC 地址。该回应包会直接发送给请求者主机 A。
-
缓存 MAC 地址:
- 主机 A 收到 ARP 响应包后,将主机 B 的 IP 地址 和 MAC 地址 映射关系缓存到 ARP 缓存表中。这样,主机 A 在未来与主机 B 通信时,就可以直接通过缓存的 MAC 地址进行数据帧的发送,避免再次发送 ARP 请求。
-
缓存过期与清理:
- 为了防止 ARP 缓存表中的条目过时,ARP 会设定一个缓存过期时间(通常为几分钟)。当缓存中的条目过期时,主机会重新发起 ARP 请求来获取最新的 MAC 地址。
ARP 请求和响应示例:
-
ARP 请求格式:
- 目标 IP 地址:主机 A 想要解析的目标 IP 地址(例如,主机 B 的 IP 地址)。
- 源 IP 地址:发送请求的主机 A 的 IP 地址。
- 源 MAC 地址:发送请求的主机 A 的 MAC 地址。
- 目标 MAC 地址:由于目标 MAC 地址未知,所以会填充为全 0 或广播地址。
-
ARP 响应格式:
- 目标 IP 地址:主机 B 的 IP 地址。
- 源 IP 地址:主机 B 的 IP 地址。
- 目标 MAC 地址:主机 A 的 MAC 地址(响应包的目标地址)。
- 源 MAC 地址:主机 B 的 MAC 地址(发送响应包的设备地址)。
ARP 的应用场景:
-
局域网中的数据包发送:
- 当设备需要将数据包发送到局域网中的另一台设备时,需要知道目标设备的 MAC 地址。ARP 协议提供了 IP 地址到 MAC 地址的映射,确保数据能够准确地传送到目标设备。
-
路由器与主机通信:
- 路由器需要通过 ARP 协议将 IP 地址解析为 MAC 地址,以便将数据包正确转发到下一个跳跃点。
ARP 缓存:
ARP 缓存表是系统用来存储已解析的 IP 地址和 MAC 地址的映射表。它通常存储在操作系统内存中,可以通过命令(如 arp -a
)查看。
ARP 的安全问题:
ARP 协议本身并没有进行身份验证,因此它容易受到 ARP 欺骗(ARP Spoofing)攻击。在这种攻击中,攻击者向网络中的设备发送伪造的 ARP 响应,将自己的 MAC 地址与目标 IP 地址进行绑定,导致数据包被错误地发送到攻击者的设备上。这种攻击可以用来实施 中间人攻击(MITM)等。