《TCP/IP 详解 卷1:协议》第4章:地址解析协议

[复制链接]
发表于 2025-6-29 12:30:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
ARP 协议

地址解析协议(ARP, Address Resolution Protocol)是IPv4协议栈中一个关键的组成部分,用于在网络层的IP地址与数据链路层的硬件地址(如MAC地址)之间建立映射关系。它的重要使命是:


  • 将32位的IPv4地址解析为对应的48位MAC地址,以便以太网等链路层协议可以或许正确封装并投递帧。
  • 提供动态映射机制,主动顺应网络环境的变革,而无需手动配置。
直接交付过程

直接交付(Direct Delivery) 是指当发送方与目的主机在同一IP子网中时,IP数据报可以不颠末路由器,直接通过链路层协议(如以太网)发送到目的主机。这一过程中,地址解析协议(ARP) 起到了关键作用 —— 将目的主机的IPv4地址解析为其对应的MAC地址。

  • 应用程序启动连接

    • 应用程序(如 Web 浏览器)发起哀求,目的地址是 IPv4 地址 10.0.0.1(非主机名,因此不需要DNS解析)。

  • 哀求建立连接

    • 应用层哀求 TCP 建立连接至目的地址。

  • TCP发送数据报

    • TCP 构造连接哀求,并封装成 IP 数据报,目的地址为 10.0.0.1。

  • 查抄是否直接交付

    • 网络层检测到 10.0.0.1 与当地主机在同一子网内,因此无需经由网关或路由器,执行直接交付。

  • 发起地址解析哀求(ARP 哀求)

    • 发送方必须知道目的主机的 MAC 地址,但仅有其 IP 地址,因此需要执行地址解析。
    • 发送方构造一个 ARP 哀求:广播一个以太网帧,询问 “谁是 10.0.0.1,请告诉我你的 MAC 地址”。

  • 广播ARP哀求

    • ARP 哀求在链路层广播给当地网络上的所有主机。这要求底层网络必须是广播网络(如以太网),不能黑白广播多路访问网络(NBMA,如 Frame Relay)。

  • 接收与相应ARP哀求

    • 所有在该广播域内的主机都能接收到 ARP 哀求。

      • 只有配置了 IP 地址 10.0.0.1 的主机才会相应。
      • 相应为ARP应答(Unicast),包罗其 MAC 地址。
      • 同时,所有接收到哀求的主机都可以被动“学习”发送方的 IP-MAC 对,并缓存。


  • 发送现实数据报

    • 一旦发送方接收到 ARP 应答,便获得目的主机的 MAC 地址。
    • 然后,发送方利用这个地址将现实的 IP 数据报封装为以太网帧进行投递。

ARP 缓存

为了避免在每次发送IP数据报时都重复进行地址解析操作(即重复发送ARP哀求),操作系统会维护一个称为 ARP 缓存(ARP Cache)的数据布局,用于存储已解析的 IP 地址与其对应的 MAC 地址之间的映射关系。
该缓存明显提拔了网络通信的效率,是ARP协议运行的关键组成部分。
ARP缓存的布局

ARP缓存通常包罗以下内容:
字段说明IP地址(逻辑地址)IPv4地址MAC地址(物理地址)对应的硬件地址接口信息当地用于通信的网络接口状态静态或动态TTL / 过期时间条目的剩余生命周期(通常几分钟)
缓存条目的两种范例


  • 动态条目(Dynamic Entries)

    • 由ARP协议主动创建。
    • 在主机接收到ARP应答时添加。
    • 偶然间限定,过期主动删除(典范值是 60 秒到几分钟)。
    • 接收ARP哀求时也可被动学习(即非目的主机也可更新缓存)。

  • 静态条目(Static Entries)

    • 由管理员手动配置(如通过 arp 命令)。
    • 永不外期,需手动删除或重启系统后清除。
    • 用于安全或关键通信链路,防止ARP诱骗。

缓存更新机制



  • 每当主机发送ARP哀求并收到应答时,都会插入或更新缓存中的对应条目。
  • 接收到其他主机的ARP哀求时,也会根据哀求中包罗的信息更新当地ARP缓存。
  • 动态条目在一段时间后过期,以顺应网络拓扑或装备变更,也就是软状态刷新。
ARP 帧格式

在以太网中,ARP哀求和应答消息封装在以太网帧中,用于实现IPv4地址到以太网MAC地址的映射。ARP帧分为两部分:


  • 以太网帧头(14字节)
  • ARP消息体(28字节,用于IPv4 → MAC 映射)



  • 广播地址:ARP哀求利用以太网广播地址 ff:ff:ff:ff:ff:ff 作为目的地址。
  • ARP应答是单播的:应答帧直接发给哀求发送方,不利用广播。
  • 信息冗余:ARP帧和以太网头都包罗源MAC地址,这是典范的协议重叠设计。
  • Op字段告急性:由于哀求和应答的以太网范例字段相同(都为0x0806),必须通过 Op 字段区分。
代理 ARP

代理ARP(Proxy ARP)是一种 答应装备代表其他主机相应ARP哀求 的机制。根据 [RFC 1027],代理ARP重要应用于以下场景:
   🔁 一个系统(通常是路由器)收到一个针对某IP地址的ARP哀求,并不是将哀求转发给目的主机,而是自己代为应答,返回自己的MAC地址。
  这使得哀求主机误以为代理装备就是目的主机,从而将后续流量直接发送给代理装备,进而实现跨网络转发。
示例场景

假设有以下两个网络利用相同的IP前缀:
网络A:192.168.1.0/24
网络B:192.168.1.0/24
它们由一台中间路由器连接,出于某些遗留系统的限定,不能更改子网配置。这时路由器可配置为代理ARP:


  • 当网络A中的主机 192.168.1.10 发送ARP哀求:“谁是192.168.1.20?”
  • 网络B中的主机现实拥有这个IP。
  • 路由器相应该哀求,返回自己的MAC地址。
  • 数据先到路由器,由其再转发给目的主机。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表