第5章 RARP:逆地址解析协议
所属:TCP/IP详解 卷1:协议 来源:TCP/IP详解 卷1:协议
本章介绍RARP协议,包括RARP的作用、分组格式、服务器和设计等。
5.1 引言
RARP的作用
RARP(Reverse Address Resolution Protocol):
- 逆地址解析协议
- 把MAC地址转换成IP地址
- 链路层地址 → 网络层地址
- 和ARP相反
RARP把MAC地址解析成IP地址。
为什么需要RARP
为什么需要RARP:
- 有些设备没有磁盘
- 启动时不知道自己的IP
- 只有MAC地址(烧在网卡上)
- 需要获取自己的IP地址
- 用RARP来获取
典型设备:
- 无盘工作站
- 嵌入式设备
- 某些终端
无盘设备用RARP获取IP。
RARP和ARP的区别
RARP vs ARP:
| 对比项 | ARP | RARP |
|---|---|---|
| 方向 | IP → MAC | MAC → IP |
| 作用 | 找目标的MAC | 找自己的IP |
| 请求者 | 知道自己IP | 不知道自己IP |
| 应答者 | 目标主机 | RARP服务器 |
| 协议号 | 0x0806 | 0x8035 |
RARP和ARP方向相反。
本章讨论的内容
本章讨论的内容:
- RARP分组格式
- RARP的工作过程
- RARP服务器
- RARP的设计
- RARP的问题
本章介绍RARP协议。
5.2 RARP分组格式
RARP分组格式
RARP分组格式:
- 和ARP基本一样
- 只是操作码不同
- 帧类型不同
+-------------------+-------------------+------+------+------+------+
| 硬件类型 | 协议类型 |硬件地址|协议地址| 操作 |
| 2字节 | 2字节 |长度1B |长度1B | 2字节 |
+-------------------+-------------------+------+------+------+------+
| 发送端硬件地址(6字节) | 发送端IP地址(4字节) |
+---------------------------------------+-----------------------+
| 目标端硬件地址(6字节) | 目标端IP地址(4字节) |
+---------------------------------------+-----------------------+
RARP格式和ARP类似。
操作类型
操作类型:
- 3:RARP请求(RARP Request)
- 4:RARP应答(RARP Reply)
操作码和ARP不同。
帧类型
以太网帧类型:
- ARP:0x0806
- RARP:0x8035
帧类型也不同。
5.3 RARP的工作过程
基本过程
RARP的工作过程:
场景:无盘工作站启动,不知道自己的IP
-
主机发RARP请求(广播)
- 目的MAC:全F(广播)
- 内容:我的MAC是xxx,我的IP是什么?
- 网络上所有主机都收到
-
RARP服务器收到请求
- 查MAC-IP映射表
- 找到对应的IP
- 发RARP应答
-
主机收到应答
- 得到自己的IP地址
- 可以开始通信了
RARP请求广播,应答单播。
为什么需要服务器
为什么需要RARP服务器:
- 主机自己不知道自己的IP
- 必须问别人
- 需要一个知道所有MAC-IP映射的服务器
- 服务器维护映射表
RARP需要专门的服务器。
多个服务器
可以有多个RARP服务器:
- 冗余
- 一个挂了还有其他的
- 更可靠
问题:
- 多个服务器都应答怎么办?
- 主机用第一个收到的
- 其他的忽略
可以有多个服务器。
5.4 RARP服务器
RARP服务器的作用
RARP服务器的作用:
- 维护MAC地址到IP地址的映射表
- 响应RARP请求
- 告诉请求者它的IP地址
服务器维护映射表。
映射表
映射表:
- MAC地址 → IP地址
- 管理员配置
- 静态配置
- 不是自动学习的
配置例子:
00:11:22:33:44:55 192.168.1.100
aa:bb:cc:dd:ee:ff 192.168.1.101
映射表是静态配置的。
RARP服务器的实现
RARP服务器的实现:
- 用户态进程
- 监听RARP请求
- 查表应答
- 通常是系统的一个服务
为什么是用户态:
- 需要配置文件
- 管理方便
- 不用改内核
服务器通常是用户态的。
5.5 RARP的设计问题
RARP的问题
RARP的问题:
-
只能获取IP地址
- 只能得到IP
- 其他信息(子网掩码、网关等)得不到
- 不够用
-
基于广播
- 路由器不转发RARP广播
- 每个网络都要有服务器
- 麻烦
-
需要静态配置
- 映射表要手动配置
- 管理麻烦
- 不灵活
-
没有安全机制
- 谁都可以应答
- 可能有欺骗
RARP有很多问题。
RARP的替代
RARP的替代:
- BOOTP(引导程序协议)
- DHCP(动态主机配置协议)
- 功能更强
- 更灵活
为什么替代:
- BOOTP/DHCP功能更多
- 可以获取更多信息
- 可以跨网络
- 更灵活
RARP被BOOTP和DHCP取代了。
5.6 RARP vs BOOTP vs DHCP
三者的比较
RARP vs BOOTP vs DHCP:
| 对比项 | RARP | BOOTP | DHCP |
|---|---|---|---|
| 层级 | 链路层 | 应用层(UDP) | 应用层(UDP) |
| 能获取的信息 | 只有IP | IP、网关、文件名等 | 更多,还能动态分配 |
| 跨网络 | 不能 | 能(中继代理) | 能(中继代理) |
| 动态分配 | 不能 | 不能(静态) | 能 |
| 安全性 | 差 | 差 | 有一些机制 |
| 复杂度 | 简单 | 中等 | 复杂 |
三者功能越来越强。
演进过程
演进过程:
RARP → BOOTP → DHCP
为什么演进:
- RARP太简单,功能不够
- BOOTP增加了更多信息
- DHCP增加了动态分配
- 越来越灵活
从简单到复杂,功能越来越强。
5.7 小结
RARP的作用
-
逆地址解析
- MAC地址 → IP地址
- 和ARP相反
-
为什么需要
- 无盘设备
- 启动时不知道自己IP
- 用RARP获取
RARP分组格式
-
格式
- 和ARP类似
- 操作码不同
- 帧类型不同
-
操作类型
- 3=请求
- 4=应答
RARP的工作过程
-
基本过程
- 发请求(广播)
- 服务器应答
- 得到IP
-
服务器
- 维护映射表
- 响应请求
-
多个服务器
- 冗余
- 用第一个应答
RARP的问题
-
问题
- 只能获取IP
- 基于广播,不能跨网络
- 静态配置
- 不安全
-
替代
- BOOTP
- DHCP
- 功能更强
RARP vs BOOTP vs DHCP
-
比较
- RARP:最简单,只有IP
- BOOTP:更多信息,能跨网络
- DHCP:动态分配,最灵活
-
演进
- RARP → BOOTP → DHCP
- 功能越来越强
关键概念
-
RARP
- 逆地址解析
- MAC→IP
-
RARP服务器
- 维护映射表
- 应答请求
-
问题和替代
- 很多问题
- 被BOOTP/DHCP取代