当前位置首页 > 百科> 正文

反向地址转换协定

2019-03-08 20:05:22 百科
反向地址转换协定

反向地址转换协定

反向地址转换协定(RARP:Reverse Address Resolution Protocol) 反向地址转换协定(RARP)允许区域网路的物理机器从网关伺服器的 ARP 表或者快取上请求其 IP 地址。网路管理员在区域网路网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设定一台新的机器时,其 RARP 客户机程式需要向路由器上的 RARP 伺服器请求相应的 IP 地址。假设在路由表中已经设定了一个记录,RARP 伺服器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。 RARP 可以使用于乙太网、光纤分散式数据接口及令牌环 LAN

基本介绍

  • 中文名:反向地址转换协定
  • 外文名:Reverse Address Resolution Protocol
  • 简称:RARP
  • 领域:信息科学

产生原因

ARP(地址解析协定)是设备通过自己知道的IP位址来获得自己不知道的物理地址的协定。假如一个设备不知道它自己的IP位址,但是知道自己的物理地址,网路上的无盘工作站就是这种情况,设备知道的只是网路接口卡上的物理地址。这种情况下应该怎幺办呢?RARP(逆地址解析协定)正是针对这种情况的一种协定。
RARP以与ARP相反的方式工作。RARP发出要反向解析的物理地址并希望返回其对应的IP位址,应答包括由能够提供所需信息的RARP伺服器发出的IP位址。虽然传送方发出的是广播信息,RARP规定只有RARP伺服器能产生应答。许多网路指定多个RARP伺服器,这样做既是为了平衡负载也是为了作为出现问题时的备份。

工作原理

  1. 传送主机传送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP伺服器分配一个IP位址;
  2. 本地网段上的RARP伺服器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP位址;
  3. 如果存在,RARP伺服器就给源主机传送一个回响数据包并将此IP位址提供给对方主机使用;
  4. 如果不存在,RARP伺服器对此不做任何的回响;
  5. 源主机收到从RARP伺服器的回响信息,就利用得到的IP位址进行通讯;如果一直没有收到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回应问题的两种方法。
  1. 为每一个做 RARP 请求的主机分配一主伺服器,正常来说,只有主伺服器才会做出 RARP 回应,其它主机只是记录下接收到 RARP 请求的时间。假如主伺服器不能顺利做出回应,那幺查询主机在等待逾时再次用广播方式传送 RARP 请求,其它非主伺服器假如在接到第一个请求后很短时间内再收到相同请求的话,才会做出回应动作。
  2. 正常来说,当主伺服器收到 RARP 请求之后,会直接做出回应;为避免所有非主伺服器同时传回 RARP 回应,每台非主伺服器都会随机等待一段时间再做出回应。如果主伺服器未能做出回应的话,查询主机会延迟一段时间再进行第二次请求,以确保这段时间内获得非主伺服器的回应。当然,设计者可以精心的设计延迟时间至一个合理的间隔。
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net