ARP RARP Inverse ARP以及DHCP之间的那点破事儿

搞网络怎么的也有一年了,今天说起了几个带有“arp”的协议依旧有些混淆,所以这里我来做个简单的区分。

首先说ARP(address resolution protocol):

这个不难理解,arp协议用于在电脑知道自己MAC地址和IP地址的情况下,用来获取对端IP地址所对应的MAC地址。当然,交换机的MAC表也是从这里获取的,这也就是为什么一般你装好网络,测试PING的时候第一个包总是MISS、并且在PT中配好网络总要先fire个全1地址

它的工作过程是这样的:

  1. A首先发送广播消息请求其对应目的IP地址的硬件地址是多少,同时在该广播消息中还附带自己的IP地址和硬件地址。
  2. B接受到该广播包后,取出A的IP地址和硬件地址,将其添加到地址映射表中。同时返回单播响应,响应包中包含B的IP地址和硬件地址。
  3. A收到响应,取出B的IP地址和硬件地址,将其添加到地址映射表中。
  4. 之后设备A和B就可以正常进行数据传送了。
 

然后我们来说说Inverse ARP:

Inverse ARP用于帧中继网络中IP地址和虚电路号的映射关系的动态维护。
其工作原理简示如下:
  1. A首先发送单播消息请求其对应目的硬件地址的IP地址是多少?同时在该广播消息中还附带自己的IP地址。
  2. B接受到该广播包后,修改该请求数据包,从帧中继帧头中提取硬件地址放入请求包的源硬件地址域中,即可形成A的地址映射。然后形成单播响应,响应包中包含B的IP地址以及A的IP地址和硬件地址。
  3. A收到响应,修改响应数据包,从帧头中取出硬件地址放入响应数据包的源硬件地址域中,然后将其添加到地址映射表中。之后设备A和B就可以正常进行数据传送了。
 

最后再来说说这个让人懊恼的RARP:

为什么说RARP让人懊恼呢?其实RARP在功能上有点类似于DHCP协议,确切的说DHCP是BOOTP协议的升级,而BOOTP在某种意义上又是RARP协议的升级。BOOTP和RARP的区别在于RARP是在数据链路层实现的,而BOOTP是在应用层实现的,作为BOOTP的升级版DHCP也是在应用层实现的。这种实现层面的差别也从RARP和BOOTP/DHCP的报文封装格式的差别上体现出来了,RARP直接封装在以太网帧中,协议类型置为0x0800以标识这个报文是ARP/RARP报文,BOOTP/DHCP报文是直接封装在UDP报文中,作为UDP的数据段出现的。

从功能上说,RARP只能实现简单的从MAC地址到IP地址的查询工作,RARP server上的MAC地址和IP地址是必须事先静态配置好的。但DHCP却可以实现除静态分配外的动态IP地址分配以及IP地址租期管理等等相对复杂的功能。(在前段时间的这篇文章中,我简单写了DHCP的运行原理,不妨参考之。) 

RARP是早期提供的通过硬件地址获取ip的解决方案,但它有自己的局限性,比如RARP客户与RARP服务器不在同一网段,中间有路由器等设备连接,这时候利用RARP就显得无能为力,因为RARP请求报文不能通过路由器。所以,BOOTP/DHCP应运而生,提供了很好的解决方法。 所以,现在RARP基本已经被BOOTP和DHCP所取代,自然逐渐不为人所知。

 

RARP、BOOTP和DHCP的比较:

特性 RARP BOOTP DHCP
依赖于服务器来分配IP地址
消息封装在IP和UDP中,所以它们可以转发到远端服务器
客户端可发现自己的掩码、网关、DNS和下载服务器
由IP地址池动态分配地址,而不需要知道客户端的MAC地址
允许IP地址的临时租用
包含注册客户端主机的FQDN(用DNS)的扩展功能

 

这篇文章的内容,借鉴了这里这里还有这里,你也可以点击查看更详细的相关内容。

“ARP RARP Inverse ARP以及DHCP之间的那点破事儿”的2个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注

72 − 63 =