相信大家都知道ARP的作用了吧?那RARP呢?目前我们对RARP的理解只是停留在通过MAC地址查找IP地址的层面上,那什么情况下我们会用到RARP呢?虽然在书本、文档或者培训中我们一直都能看到RARP的身影,但文档或者讲师大多数只是讲解RARP是通过MAC地址解析IP地址的,然后就没有然后了。。。
今天我们接着然后往下研究,局域网在很久以前是无盘工作站的,无盘工作站是硬盘和操作系统分开的,这样由于主机上没有硬盘故不能保存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地址的映射是事先配置好不能动态改变的。