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 秒实验
- 想一下:RARP 为什么必须和客户端在同一网段?
- 想一下:DHCP 挪到 UDP 之后多了什么能力?
- 想一下:为什么「只给 IP」不够用?
常见误区
- 以为「RARP 还在用」。 基本没人部署了,功能被 DHCP 完全覆盖。
- 以为「RARP 能跨网段」。 不能,它是链路层广播。
- 以为「DHCP 只是 RARP 的改名」。 架构不同,DHCP 跑在 UDP 上、能中继、能给全套配置。
自测三问(点开对答案)
1. RARP 解决什么问题? —— **已知 MAC、求 IP**,为无盘工作站开机时获取地址。 2. RARP 的两个致命缺陷是什么? —— **广播不能跨网段、只能给 IP 不给其他配置。** 3. DHCP 为什么能在架构上赢? —— **它跑在 UDP 上,可以被中继转发**,一台服务器就能管多个网段。下一节讲 ARP 的一个变种:代理 ARP。
- ☐ (本节完,下一节 5.3.5 代理ARP)