反向地址转换协议(RARP:Reverse Address Resolution Protocol) 允许局域网的物理机器从
网关服务器的 ARP 表或者缓存上请求其 IP 地址。
网络管理员在局域网
网关路由器里创建一个表以映射
物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向
路由器上的 RARP 服务器请求相应的 IP 地址。假设在
路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。 RARP 可以使用于
以太网、
光纤分布式数据接口及
令牌环 LAN
产生原因
ARP(
地址解析协议)是设备通过自己知道的IP地址来获得自己不知道的物理地址的协议。假如一个
设备不知道它自己的IP地址,但是知道自己的物理地址,网络上的
无盘工作站就是这种情况,设备知道的只是
网络接口卡上的物理地址。这种情况下应该怎么办呢?RARP(逆
地址解析协议)正是针对这种情况的一种协议。
RARP以与ARP相反的方式工作。RARP发出要反向解析的物理地址并希望返回其对应的IP地址,应答包括由能够提供所需信息的RARP服务器发出的IP地址。虽然发送方发出的是广播信息,RARP规定只有RARP服务器能产生应答。许多网络指定多个RARP服务器,这样做既是为了平衡负载也是为了作为出现问题时的备份。
工作原理
工作过程
RARP的工作过程如下:
1、网络上的每台设备都会有一个独一的硬件地址,通常是由设备厂商分配的MAC地址。PC1从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求RARP服务器回复该PC的IP地址。
2、RARP服务器收到了RARP请求数据包,为其分配IP地址,并将RARP回应发送给PC1。
3、PC1收到RARP回应后,就使用得到的IP地址进行通讯。
服务器
虽然RARP在概念上很简单,但是一个RARP服务器的设计与系统相关而且比较复杂。相反,提供一个ARP服务器很简单,通常是TCP/IP在
内核中实现的一部分。由于内核知道IP地址和硬件地址,因此当它收到一个询问IP地址的ARP请求时,只需用相应的硬件地址来提供应答就可以了。
作为用户进程的RARP服务器的复杂性在于:服务器一般要为多个主机(网络上所有的
无盘系统)提供硬件地址到IP地址的映射。该映射包含在一个磁盘文件中(在Unix系统中一般位于/etc/ethers目录中)。由于内核一般不读取和分析磁盘文件,因此RARP服务器的功能就由用户进程来提供,而不是作为内核的TCP/IP实现的一部分。
更为复杂的是,RARP请求是作为一个特殊类型的
以太网数据帧来传送的(
帧类型字段值为0x8035)。这说明RARP服务器必须能够发送和接收这种类型的以太网数据帧。由于发送和接收这些
数据帧与系统有关,因此RARP服务器的实现是与系统捆绑在一起的。
每个网络有多个RARP服务器实现的一个复杂因素是RARP请求是在硬件层上进行广播的。这意味着它们不经过路由器进行转发。为了让无盘系统在RARP服务器关机的状态下也能引导,通常在一个网络上(例如一根电缆)要提供多个RARP服务器。当服务器的数目增加时(以提供
冗余备份),
网络流量也随之增加,因为每个服务器对每个RARP请求都要发送RARP应答。发送RARP请求的无盘系统一般采用最先收到的RARP应答。另外,还有一种可能发生的情况是每个RARP服务器同时应答,这样会增加
以太网发生冲突的概率。
报文格式
类似于
ARP的报文格式主要差别在于帧类型代码为0x8035(ARP为0x0806),操作码为3请求(ARP为1),4应答(ARP为2)。
RARP服务器
RARP在原理上很简单但是实现比较复杂,由于RARP的请求是在硬件层上的广播这因此这不能通过路由转发,因此在每个网络都要实现一个RARP服务器。另外在同一网络中不同主机可能会同时进行RARP请求,增大了冲突的概率。
解决方法
解决RARP回应问题的两种方法。