📚 第五章 IP协议相关技术
📄 一句话概括

RARP 是「知道 MAC、问 IP」,为无盘工作站服务。 它死在「广播不能跨网段」和「只能给 IP」这两点上,被 DHCP 取代。

📝 本节和前面几节的关系

5.3.1 的 ARP 是「IP 找 MAC」,RARP 正好反过来。 5.5 的 DHCP 是它的接班人,对比着看最清楚。

一、它要解决什么问题

无盘工作站开机时「什么都不知道」: 没有硬盘,就没有配置文件;没有配置文件,就不知道自己该用哪个 IP。 但它知道自己的 MAC——因为那是网卡上的。

协议 已知 求
ARP IP MAC
RARP MAC IP

两行正好相反,所以叫「反向 ARP」。 它的报文格式和 ARP 几乎一样,只是「操作码」不同(3 是请求、4 是应答)。 这种「复用同一个报文格式」的做法很常见:省一套解析代码,也省一类协议号。

二、两个致命缺陷

第一个缺陷是「跨不了网段」:RARP 直接在链路层跑,用广播问——而广播出不了路由器。 第二个缺陷是「只能给 IP」:没有网关就没法上网,没有 DNS 就没法解析名字。

项 RARP DHCP
传输方式 链路层广播 UDP 广播(可中继)
能跨网段 不能 能,靠中继
能给几样配置 只有 IP IP、掩码、网关、DNS 全给
还需要什么 每段一台服务器 一台管全网

第二行是 DHCP 的关键改进: 它跑在 UDP 上,所以可以被「中继代理」转发——这就是 5.5.3 要讲的内容。 所以「RARP 被 DHCP 取代」不是「功能更强」,是「架构更合理」: 把「链路层的事」交给链路层,把「配置的事」交给能跨网段的应用层。

三、今天还有用吗

作为协议,没有了;作为「思路」,到处都是。 「设备开机自动获取配置」这件事,现在的名字叫「零配置(ZTP)」, 做得比 RARP 彻底得多——DHCP 给地址、TFTP 给镜像、脚本给业务配置。 它留下的教训值得记住: 「把功能做在链路层」看起来简单,但链路层的边界太窄——广播出不去、也没法分层复用。 这也是为什么后来的「自动配置」都挪到了应用层。

四、动手 Demo:RARP,一个被取代的协议

把 RARP 和 DHCP 的四个维度摆在一起,就能看出它为什么被淘汰。 注意第三行:一个只给 IP,一个给全部配置。

rows = [('传输层', '链路层广播', 'UDP 广播'),
        ('跨网段', '不能', '能,靠中继'),
        ('配置项', '只有 IP', 'IP/掩码/网关/DNS')]
for a, b, c in rows:
    print(a, b, c)

实跑输出:

--------------------------------------------------------------------
RARP,一个被取代的协议
--------------------------------------------------------------------
**RARP 是 ARP 的反向**:**知道 MAC,问「我的 IP 是多少」。**
**它出现在「无盘工作站」的年代**——**机器没有硬盘,启动时什么都不知道。**

  项                     RARP                       DHCP
  -------------------------------------------------------------------------
  **谁知道答案**         **同网段的一台服务器**     **专门的一台服务器**
  **传输层**             **直接用链路层**           **用 UDP**
  **能不能跨网段**       **不能**                   **能,靠中继**
  **能发别的配置吗**     **不能,只给 IP**          **能,网关、DNS 都给**

**第三行是 RARP 的死因**:
**它是链路层协议,广播出不了路由器**——**所以「每个网段都要放一台 RARP 服务器」**,
**维护成本极高。**
**第四行是第二个死因**:**只给 IP 不够用**——**没有网关就没法上网,没有 DNS 就没法解析域名。**

**所以 RARP 现在只是「历史知识」**:
**它的思想(自动获取配置)被 DHCP 继承了,协议本身已经没有人部署。**
**但理解它有个好处**:
**能看清「链路层广播的边界」这件事**——**为什么 DHCP 后来要加「中继代理」,源头就在这里。**

「链路层广播」这四个字就是死因:它决定了「服务器必须和客户端在同一网段」, 而一个公司往往有几十个网段。 所以「每段放一台 RARP 服务器」是必须的,不是选择。 DHCP 挪到 UDP 之后,多了一个「中继」的能力:路由器把广播改成单播发给远端服务器, 于是「一台服务器管全网」变成可能。 这是「换个层次实现」带来的结构性收益。 「只给 IP」这一行的现实后果: 拿到 IP 但没有网关,等于「知道自己家门牌,不知道怎么出小区」。 所以 RARP 时代的机器往往还要手工配路由,「即插即用」根本谈不上。

30 秒实验

  1. 想一下:RARP 为什么必须和客户端在同一网段?
  2. 想一下:DHCP 挪到 UDP 之后多了什么能力?
  3. 想一下:为什么「只给 IP」不够用?

常见误区

  1. 以为「RARP 还在用」。 基本没人部署了,功能被 DHCP 完全覆盖。
  2. 以为「RARP 能跨网段」。 不能,它是链路层广播。
  3. 以为「DHCP 只是 RARP 的改名」。 架构不同,DHCP 跑在 UDP 上、能中继、能给全套配置。
自测三问(点开对答案) 1. RARP 解决什么问题? —— **已知 MAC、求 IP**,为无盘工作站开机时获取地址。 2. RARP 的两个致命缺陷是什么? —— **广播不能跨网段、只能给 IP 不给其他配置。** 3. DHCP 为什么能在架构上赢? —— **它跑在 UDP 上,可以被中继转发**,一台服务器就能管多个网段。

下一节讲 ARP 的一个变种:代理 ARP。

相关笔记