LINUX
ARP 与缓存表:局域网通信的第一步
理解 IPv4 局域网中 IP 地址如何解析为 MAC 地址,并用邻居表排查基础网络故障。
本文目录 · 5 节
为什么需要 ARP
IPv4 数据包使用 IP 地址描述通信端点,但以太网帧在同一链路上传输时需要目标 MAC 地址。ARP(地址解析协议)负责在本地广播域中建立这两类地址之间的映射。
一个容易忽略的边界是:如果目标 IP 不在本地子网,主机通常不会解析远端主机的 MAC,而是解析默认网关的 MAC,再把数据帧交给网关转发。
一次解析过程
假设主机 A 要联系同一子网中的主机 B:
- A 先查本机邻居缓存。
- 没有命中时,A 广播“谁拥有这个 IP”。
- B 收到请求后,以单播方式返回自己的 MAC 地址。
- A 缓存这条 IP–MAC 映射并发送真正的数据帧。
缓存避免了每个数据包都触发广播。动态条目会随时间老化,过期后按需重新解析,因此第一次通信偶尔比后续通信稍慢是正常现象。
缓存表怎么看
Windows 可以使用:
arp -a
Get-NetNeighbor -AddressFamily IPv4
Linux 推荐使用:
ip neigh show
输出中最值得关注的是目标 IP、对应 MAC、网络接口和状态。动态条目来自正常学习;静态条目可能是手工配置,也可能是广播、组播等系统保留映射。
诊断思路
| 现象 | 可以先检查什么 |
|---|---|
| 同网段设备无法访问 | 是否出现目标 IP 的邻居条目 |
| 只有首次连接较慢 | 是否正在进行正常的 ARP 解析 |
| 网关偶尔中断 | 网关 IP 对应的 MAC 是否稳定 |
| 地址冲突提示 | 是否有不同 MAC 反复声明同一 IP |
清空缓存只能作为诊断步骤,而不是长期修复。条目重新出现异常时,应继续检查 DHCP、静态地址配置、交换网络或设备本身。
安全边界
传统 ARP 本身没有认证机制,伪造响应可能覆盖现有缓存,这也是 ARP 欺骗能够发生的原因。对于家庭或实验网络,可以关注网关 MAC 的异常变化;在受管理网络中,还可以使用 DHCP Snooping、动态 ARP 检测和终端隔离等措施。
邻居表只反映本机近期直接通信过的链路邻居,不等于完整设备清单。查看和分析自己的网络是正常诊断行为,但不要把主动扫描扩大到未经授权的网络。