第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:

对比项ARPRARP
方向IP → MACMAC → IP
作用找目标的MAC找自己的IP
请求者知道自己IP不知道自己IP
应答者目标主机RARP服务器
协议号0x08060x8035

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

  1. 主机发RARP请求(广播)

    • 目的MAC:全F(广播)
    • 内容:我的MAC是xxx,我的IP是什么?
    • 网络上所有主机都收到
  2. RARP服务器收到请求

    • 查MAC-IP映射表
    • 找到对应的IP
    • 发RARP应答
  3. 主机收到应答

    • 得到自己的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的问题:

  1. 只能获取IP地址

    • 只能得到IP
    • 其他信息(子网掩码、网关等)得不到
    • 不够用
  2. 基于广播

    • 路由器不转发RARP广播
    • 每个网络都要有服务器
    • 麻烦
  3. 需要静态配置

    • 映射表要手动配置
    • 管理麻烦
    • 不灵活
  4. 没有安全机制

    • 谁都可以应答
    • 可能有欺骗

RARP有很多问题。


RARP的替代

RARP的替代:

  • BOOTP(引导程序协议)
  • DHCP(动态主机配置协议)
  • 功能更强
  • 更灵活

为什么替代:

  • BOOTP/DHCP功能更多
  • 可以获取更多信息
  • 可以跨网络
  • 更灵活

RARP被BOOTP和DHCP取代了。


5.6 RARP vs BOOTP vs DHCP

三者的比较

RARP vs BOOTP vs DHCP:

对比项RARPBOOTPDHCP
层级链路层应用层(UDP)应用层(UDP)
能获取的信息只有IPIP、网关、文件名等更多,还能动态分配
跨网络不能能(中继代理)能(中继代理)
动态分配不能不能(静态)能
安全性差差有一些机制
复杂度简单中等复杂

三者功能越来越强。


演进过程

演进过程:

RARP → BOOTP → DHCP

为什么演进:

  • RARP太简单,功能不够
  • BOOTP增加了更多信息
  • DHCP增加了动态分配
  • 越来越灵活

从简单到复杂,功能越来越强。


5.7 小结

RARP的作用

  1. 逆地址解析

    • MAC地址 → IP地址
    • 和ARP相反
  2. 为什么需要

    • 无盘设备
    • 启动时不知道自己IP
    • 用RARP获取

RARP分组格式

  1. 格式

    • 和ARP类似
    • 操作码不同
    • 帧类型不同
  2. 操作类型

    • 3=请求
    • 4=应答

RARP的工作过程

  1. 基本过程

    • 发请求(广播)
    • 服务器应答
    • 得到IP
  2. 服务器

    • 维护映射表
    • 响应请求
  3. 多个服务器

    • 冗余
    • 用第一个应答

RARP的问题

  1. 问题

    • 只能获取IP
    • 基于广播,不能跨网络
    • 静态配置
    • 不安全
  2. 替代

    • BOOTP
    • DHCP
    • 功能更强

RARP vs BOOTP vs DHCP

  1. 比较

    • RARP:最简单,只有IP
    • BOOTP:更多信息,能跨网络
    • DHCP:动态分配,最灵活
  2. 演进

    • RARP → BOOTP → DHCP
    • 功能越来越强

关键概念

  1. RARP

    • 逆地址解析
    • MAC→IP
  2. RARP服务器

    • 维护映射表
    • 应答请求
  3. 问题和替代

    • 很多问题
    • 被BOOTP/DHCP取代

RARP逆地址解析