揭秘 ARP:IP 地址如何找到 MAC 地址

805 字
4 分钟
揭秘 ARP:IP 地址如何找到 MAC 地址

在计算机网络中,数据的传输遵循 OSI 七层模型,每一层都有其独特的职责与接口。当我们发送数据包时,位于第三层(网络层)的数据包携带了目标 IP 地址,但在传输到第二层(数据链路层)时,还需要添加目标节点的物理地址(MAC 地址)才能在局域网中正确传输。然而,网络层和链路层之间并没有直接关联,那么系统如何知道目标 IP 对应的 MAC 地址呢?这就是 ARP(Address Resolution Protocol,地址解析协议) 的用武之地。

什么是 ARP?#

ARP 是 TCP/IP 协议族中的一个关键协议,用于根据 IP 地址获取物理地址。通俗来说,当上层协议需要向某个 IP 发送数据包时,ARP 可以提供该节点对应的 MAC 地址,从而完成数据的帧封装与传输。

ARP 的工作原理#

情况一:主机在同一网段#

假设有两台主机 A 和 B 位于同一局域网内,ARP 的工作流程如下:

  1. 查找 ARP 缓存表 主机 A 首先检查本地 ARP 缓存表,看是否已经存在主机 B 的 MAC 地址。如果存在,则直接使用缓存的 MAC 地址封装数据帧,并发送给 B。

  2. 发送 ARP 请求 如果缓存中没有目标 MAC 地址,主机 A 会将数据报暂存,并以广播方式发送 ARP 请求。请求报文中包含主机 A 的 IP 和 MAC 地址,以及目标 IP(主机 B)的地址,目标 MAC 设置为全 0。

  3. ARP 响应 网段内的所有主机都会接收到请求,但只有目标主机 B 会处理。当 B 检查到请求中的目标 IP 与自身 IP 匹配时,它会将主机 A 的 IP 和 MAC 存入自己的 ARP 表,并发送 ARP 响应报文(包含自身 MAC 地址)给 A。

  4. 更新缓存与发送数据 主机 A 收到响应后,将主机 B 的 MAC 地址加入 ARP 缓存,然后完成数据包的封装与发送。

情况二:主机不在同一网段#

当主机 A 与 B 不在同一网段时,ARP 仍然是数据包到达目标的关键:

  1. 主机 A 向本地网关发送 ARP 请求,请求目标 IP 为网关地址。
  2. 获得网关 MAC 地址后,A 将数据包封装并发送给网关。
  3. 如果网关未缓存主机 B 的 MAC 地址,它会广播 ARP 请求获取 B 的 MAC 地址;否则,直接将报文转发给 B。

通过这样的机制,无论主机是否在同一网段,ARP 都保证了 IP 到 MAC 的映射,从而实现局域网或跨网段的数据传输。

ARP 数据包结构#

ARP 报文包含一个关键字段 Opcode

  • 1 表示请求(Request)
  • 2 表示应答(Reply)

这使得网络中的设备可以区分报文类型,确保正确响应或请求 MAC 地址。


ARP 看似简单,但它是局域网通信中不可或缺的基础组件。理解 ARP 的工作机制,有助于网络调试、故障排查以及网络安全防护。


文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

揭秘 ARP:IP 地址如何找到 MAC 地址
https://zhangbh.com/posts/how-arp-works/
作者
Bohan Zhang
发布于
2026-03-13
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Bohan Zhang
你好,我是张博涵
公告
欢迎来到我的博客,祝你每天开心
分类
标签
站点统计
文章
4
分类
4
标签
8
总字数
5,416
运行时长
0
最后活动
0 天前

目录