5.1 引言
有本地磁盘的系统,在协议簇的获取本地IP时,都是直接从磁盘的配置文件上读取本机IP。而无盘的系统(如X终端或无盘工作站)在获得本机IP时就需要通过RARP来获得IP。
无盘机的RARP实现:从接口卡上读取唯一的硬件地址,然后发送一份RARP请求,请求某个主机响应该无盘系统的IP地址(RARP应答)。
5.2 RARP的分组格式
RARP分组格式和ARP分组格式相同,
区别是
- RARP请求或应答帧代码类型是0x8035,
- RARP的请求的操作代码是3,应答操作代码是4。
- RARP是单播传送给某一台主机。ARP是广播传送的。
5.3 RARP实现
服务器收到某一无盘机传来的RARP请求时,它会发送一个TFTP读请求给一个文件,从中找到那个硬件地址对应的IP地址当作RARP应答返回。
5.4 RARP服务器的设计
RARP服务器设计上是与系统相关的,因为它不像ARP一样在TCP/IP内核里。同时因为是链路层的协议,所以只能在配置一个系统底层硬件同时配置RARP服务器。
-
作为用户进程的RARP服务器
RARP服务器的复杂性在于,服务器一般要为多个主机(网络上所有的无盘系统)提供硬件地址到IP地址的映射。该映射包含在一个磁盘文件中(在 Unix系统中一般位于/etc/ethers目录中)。由于内核一般不读取和分析磁盘文件,因此RARP服务器的功能就由用户进程来提供,而不是作为内核的TCP/IP实现的一部分。
PARP服务器必须能够发送和接收0x8035类型的以太网数据帧。BSD分组过滤器、 Sun的网络接口栓以及 SVR4数据链路提供者接口都可用来接收这些数据帧。由于发送和接收这些数据帧与系统有关,因此 RARP服务器的实现是与系统捆绑在一起的。
-
每个网络有多个RARP服务器
RARP是在硬件层传播的,即通常时一个网络(比如一根电缆)上要提供多个RARP服务器。
服务器数目增加时,发送RARP请求的无盘系统一般采用最先收到的RARP应答。
若多个RARP服务器同时应答,可能会增加以太网冲突概率。