ARP 协议详解
ARP 协议(Address Resolution Protocol,地址解析协议)是 TCP/IP 协议栈中网络层的关键协议,其核心功能是实现IP 地址到 MAC 地址的映射转换,这是数据在局域网内传输的基础。
为什么需要 ARP 协议?
- 网络层使用 IP 地址进行逻辑寻址(如 192.168.1.100),用于确定数据包的最终目的地
- 数据链路层使用 MAC 地址进行物理寻址(如 00:1A:2B:3C:4D:5E),用于在局域网内实际传输帧
- 当主机需要发送数据给同一局域网内的其他设备时,必须知道目标设备的 MAC 地址,ARP 协议就是解决这一转换问题的机制
ARP 的工作流程
- 发送 ARP 请求:
- 源主机广播发送一个 ARP 请求帧,帧中包含源 IP、源 MAC 以及目标 IP
- 该广播帧会被同一局域网内的所有设备接收
- 接收 ARP 响应:
- 只有目标 IP 对应的设备会处理该请求,其他设备会忽略
- 目标设备发送 ARP 响应帧(单播),包含自己的 MAC 地址
- 更新 ARP 缓存:
- 源主机收到响应后,将目标 IP 与 MAC 的映射关系存入本地 ARP 缓存表
- 同时,目标设备也会将源主机的 IP 与 MAC 映射存入自己的缓存表
- 直接通信:
- 后续通信时,源主机可直接从缓存表中获取目标 MAC 地址,无需再次发送 ARP 请求
ARP 缓存表
是主机或路由器中存储 IP 与 MAC 映射关系的临时表格
表项有过期时间(通常为 2-10 分钟),过期后会被自动删除
可通过命令查看和管理:
1
2
3
4
5
6
7Windows系统
arp -a # 查看所有ARP缓存条目
arp -d 192.168.1.1 # 删除指定IP的缓存条目
Linux/macOS系统
arp -n # 查看ARP缓存
ip neigh # 查看更详细的邻居表信息
ARP 的特殊情况处理
- 跨网段通信:当目标 IP 不在同一网段时,ARP 会查询默认网关的 MAC 地址,将数据包先发送给网关
- ARP 代理:当两个子网通过路由器连接时,路由器可作为 ARP 代理,为不同子网的主机提供 MAC 地址解析服务
- 免费 ARP:主机启动时会发送包含自身 IP 和 MAC 的 ARP 请求,用于:
- 检测网络中是否有 IP 地址冲突
- 通知其他设备更新自己的 ARP 缓存
ARP 的安全问题
- ARP 欺骗:攻击者发送伪造的 ARP 报文,篡改目标设备的 ARP 缓存,导致数据流向错误的目的地
- 防御措施:静态绑定关键 IP 与 MAC 映射、使用 ARP 防火墙、启用端口安全等