PRELOADER

当前文章 : 《RARP协议》

10/8/2019 —— 

简介:

反向地址转换协议就是将局域网中某个主机的物理地址转换为IP地址,比如局域网中有一台主机只知道物理地址而不知道IP地址,那么可以通过RARP协议发出征求自身IP地址的广播请求,然后由RARP服务器负责回答。RARP协议广泛用于获取无盘工作站的IP地址。
反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录, RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。RARP 可以使用于以太网、光纤分布式数据接口及令牌环LAN 。

工作原理:

  1. 给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;
  2. 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;
  3. 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;
  4. 如果不存在,RARP服务器对此不做任何的响应;
  5. 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

关于RARP协议的思考:

今天我们接着然后往下研究,局域网在很久以前是无盘工作站的,无盘工作站是硬盘和操作系统分开的,这样由于主机上没有硬盘故不能保存IP地址信息,而MAC地址是永久存储在网卡中的,所以此时主机知道自己的MAC但不知道IP,但是要通信必须有IP地址啊,否则FTP/TFTP/SMTP等应用层协议都不能使用了,如果局域网管理员一台一台的给主机配置IP就太麻烦了,此时你可能会想到用DHCP啊,DHCP就是用于自动获取IP地址的,正确又不完全正确,正确是DHCP确实能解决这个问题,不正确是因为在很久以前DHCP是没有的(DHCP RFC文档 2131在1997年3月份才发布),那么这个问题该如何解决呢?答案就是今天探讨的RARP(RFC文档编号903,发布日期1984年6月份),通常情况下我们把RARP理解为把MAC地址映射为IP地址,如果你还套用ARP的解析流程和应用场景去分析RARP那就越想越不通了,这里说的把MAC地址映射为IP地址实际上无盘主机在开机后,网卡引导程序就不淡定了,它会通过广播的方式询问局域网所有主机,有谁知道我的IP地址啊?RARP服务器收到这个报文后就会告诉它你的IP地址是多少,这样无盘主机就有IP地址了,就可以使用FTP快乐的下载文件了,直到BOOTP的出现,什么?怎么不是DHCP,确实在1985年9月份BOOTP出现并取代了RARP协议,编号是RFC 951,然后就一直到1997年DHCP的出现。

至此我已经列出了三种可以分配IP地址的协议了,分别是RARP、BOOTP、DHCP,那这三种协议有什么区别呢?

  • RARP的实现是在数据链路层实现的,BOOTP和DHCP的实现是在UDP传输层实现的,这仅仅是表面上的区别,那优势呢,如果没有优势BOOTP就不会取代RARP了,我的理解是RARP工作在数据链路层就需要网卡去解析协议,而随着操作系统的发展,纯软件实现的网络协议内核比纯硬件网卡解析更加实惠,而BOOTP就是使用网络协议内核去解析的,欢迎大家拍砖共同探讨。

  • RARP服务器只能提供简单的地址分配,而且这些IP地址和MAC地址必须要提前在RARP服务器上配置好,而BOOTP和DHCP有更多复杂的功能,比如租约周期、地址池、网关和DNS服务器等,在这个年代你没有DNS只有IP也是不能上网的,除非你手动指定DNS服务器。另外BOOTP在获取到IP地址后客户端还会通过TFTP或者FTP协议去网络服务器上下载一个引导镜像文件。

  • DHCP是BOOTP的升级版本,增加了Option配置选项,而且DHCP可以分配之前已经分过的但当前没有使用的IP地址,提高了IP地址利用率。而BOOTP的IP地址和MAC地址的映射是事先配置好不能动态改变的。