ARP 协议超详细讲解(适合网工考试 / 运维理解)

一、基础定义

ARP:Address Resolution Protocol,地址解析协议

  • 作用:已知目标 IP 地址,获取目标主机 MAC 地址
  • 工作层级:数据链路层 ↔ 网络层之间(属于三层辅助协议,封装在二层帧里传输)
  • 适用环境:同一个广播域(同一网段)

反向协议:RARP(已知 MAC 查 IP,现在基本淘汰)

二、为什么需要 ARP?

IP 负责跨网段寻址(三层),但以太网传输数据,必须依靠 MAC 地址封装帧。 举例: 主机 A(192.168.1.10)要发给主机 B(192.168.1.20)数据

  1. A 知道 B 的 IP:192.168.1.20
  2. A 不知道 B 的网卡 MAC 地址
  3. 无法构造二层以太网帧,所以发送 ARP 请求查询 MAC

三、ARP 完整工作流程(重点!必考)

拓扑:同一网段 主机 A:IP 192.168.1.10 MAC AA-AA-AA 主机 B:IP 192.168.1.20 MAC BB-BB-BB

1)ARP 请求报文(广播帧)

  • 源 MAC:AA-AA-AA(主机 A 网卡 MAC)
  • 目标 MAC:FF:FF:FF:FF:FF:FF(广播 MAC,网段所有设备接收)
  • 源 IP:192.168.1.10
  • 目标 IP:192.168.1.20

内容:请问 192.168.1.20 的 MAC 地址是什么?

广播特点:广播域内所有主机都会收到这条报文

  • 主机 C、D 收到:对比目标 IP 不是自己,直接丢弃报文,不回复
  • 主机 B 收到:目标 IP 和自身 IP 匹配,准备回复

2)ARP 应答报文(单播帧!考点)

主机 B 组装应答直接发给主机 A:

  • 源 MAC:BB-BB-BB
  • 目标 MAC:AA-AA-AA(直接单播,不需要广播)
  • 源 IP:192.168.1.20
  • 目标 IP:192.168.1.10

内容:192.168.1.20 的 MAC 地址是 BB-BB-BB

3)缓存写入

主机 A 收到应答,把 IP-MAC 映射存入 ARP 缓存表,后续通信直接查表,不用反复广播查询。

四、ARP 缓存表

操作系统 / 交换机、路由器都会维护 ARP 缓存 Windows 查看命令:

cmd

复制代码
arp -a

Linux 查看:

bash

运行

复制代码
arp -n

特点:

  1. 缓存有老化时间(Windows 默认 2 分钟,超时自动删除条目)
  2. 分为动态 ARP(自动学习,可老化) 、静态 ARP(手动绑定,永久生效)

五、跨网段通信时 ARP 怎么工作?【极易混淆考点】

场景:PC (192.168.1.10) 访问外网服务器 (8.8.8.8) ✅ PC 不会直接查询 8.8.8.8 的 MAC! 正确逻辑:

  1. PC 判断目标 IP 不在本地网段
  2. PC 发起 ARP 请求:查询网关的 MAC 地址
  3. 数据包二层目标 MAC = 网关 MAC,三层目标 IP 依旧是 8.8.8.8

口诀:跨网段通信,ARP 只查网关 MAC,不查远端服务器 MAC!

六、常见攻击与安全(考试 / 运维常考)

1. ARP 欺骗(ARP 中毒)

原理:伪造 ARP 应答报文,欺骗局域网主机 攻击者发送虚假 ARP 消息: 网关IP → 攻击者MAC 结果:所有主机上网流量全部经过攻击者主机,可以抓包监听流量。

防御手段

  1. 静态 ARP 绑定(IP+MAC 固化)
  2. 交换机部署 DAI(Dynamic ARP Inspection,动态 ARP 检测)
  3. 开启端口安全

七、经典考点总结(选择题高频)

  1. ARP 作用:IP 地址 → MAC 地址
  2. ARP 请求:广播 ;ARP 应答:单播
  3. ARP 报文封装在以太网帧(二层)
  4. 跨网段访问,ARP 解析网关 MAC,不是目标服务器 MAC
  5. ping 不通不代表 ARP 失败;ARP 正常只能证明二层互通
  6. ARP 仅在同一个广播域生效,无法穿越路由器(路由器隔离广播域)

八、易错题辨析

❌ 错误:ARP 可以跨路由器查询 MAC

✅ 正确:路由器不转发广播帧,ARP 广播无法跨网段

❌ 错误:访问外网服务器,主机 ARP 查询服务器 MAC

✅ 正确:只查询网关 MAC

相关推荐
一个天蝎座 白勺 程序猿12 小时前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
分布式存储与RustFS16 小时前
镜像仓库的层别堆本地盘:用 RustFS 给 Docker Registry 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
陈希12316 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
@兽血沸腾17 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
承渊政道21 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
讯捷蓝达1 天前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
爱和冰阔落1 天前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisanmengmeng1 天前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
严肃小白兔1 天前
Cloudflare 更新 API Token 管理:从最小权限到自动化凭据安全
网络·安全·自动化
Android系统攻城狮1 天前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频