0%

ARP协议

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 的工作流程

  1. 发送 ARP 请求
    • 源主机广播发送一个 ARP 请求帧,帧中包含源 IP、源 MAC 以及目标 IP
    • 该广播帧会被同一局域网内的所有设备接收
  2. 接收 ARP 响应
    • 只有目标 IP 对应的设备会处理该请求,其他设备会忽略
    • 目标设备发送 ARP 响应帧(单播),包含自己的 MAC 地址
  3. 更新 ARP 缓存
    • 源主机收到响应后,将目标 IP 与 MAC 的映射关系存入本地 ARP 缓存表
    • 同时,目标设备也会将源主机的 IP 与 MAC 映射存入自己的缓存表
  4. 直接通信
    • 后续通信时,源主机可直接从缓存表中获取目标 MAC 地址,无需再次发送 ARP 请求

ARP 缓存表

  • 是主机或路由器中存储 IP 与 MAC 映射关系的临时表格

  • 表项有过期时间(通常为 2-10 分钟),过期后会被自动删除

  • 可通过命令查看和管理:

    1
    2
    3
    4
    5
    6
    7
    # Windows系统
    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 防火墙、启用端口安全等

欢迎关注我的其它发布渠道