在Internet协议当中有着ARP协议与RARP协议着两个协议,它们的中文分别为地址解析协议和与反向地址解析协议。ARP协议只用在局域网中,它用来将IP地址解析为MAC地址;RARP协议则刚好相反,它将MAC地址解析成为对应的IP地址,现在已很少单独使用。
ARP协议是为了在链接层中传输的datagram只能识别MAC地址,所以只能将IP地址转换为MAC物理地址再进行传输和定向;RARP协议是为了获取无磁盘操作系统的IP地址而设计的。具有本地磁盘的系统通常是从磁盘中的配置文件中读取IP地址的,但是无盘系统无法这样操作,所以就需要将MAC地址转换成IP地址了。
ARP协议
在通常情况下,当我们访问一个机器的时候一定可以知道它的逻辑地址,而物理地址就不一定知道。如果不知道物理地址那么就不能把网络层的数据包封装成MAC帧,完不成通信。ARP协议正是为了解决这个问题而设置的。
1.ARP协议的工作过程
在以太网(ARP协议只适用于局域网)中,如果本地主机想要向某一个IP地址的主机(路由表中的下一跳路由器或者直连的主机,注意此处IP地址不一定是IP数据报中的目的IP)发包,但是并不知道其硬件地址,此时利用ARP协议提供的机制来获取硬件地址,具体过程如下:
(1)本地主机在局域网中广播ARP请求,ARP请求数据帧中包含目的主机的IP地址。意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址”。
(2)目的主机的ARP层解析这份广播报文,识别出是询问其硬件地址。于是发送ARP应答包,里面包含IP地址及其对应的硬件地址。
(3)本地主机收到ARP应答后,知道了目的地址的硬件地址,之后的数据报就可以传送了。
点对点链路不使用ARP协议。
2.ARP高速缓存
缓存的思想无处不在。IP地址对应MAC物理地址,ARP Cahe中存储的就是这些mappings。有缓存自然就会有timeout,当过了某个时间间隔后,缓存就会被清除,否则缓存无限制增长是件非常可怕的事。每个主机都有一个ARP高速缓存表,这样避免每次发包时都需要发送ARP请求来获取硬件地址。默认老化时间是20分钟。利用arp -a命令可以查看显示系统中高速缓存的内容。
Windows下“arp -d”命令可以清除arp高速缓存表。
有时候需要手动清除arp缓存,曾经就是因为arp缓存没有做清理,导致迷惑了很久。遇到的问题:
(1)制作了一个写路由器MAC地址的工具,每次写完MAC地址,重启路由器,会发现无法telnet登陆路由器。IP地址没变,但是MAC地址更改了,而ARP缓存表中IP地址映射的仍然是旧的MAC地址。
(2)类似的问题,有两个路由器具有相同的IP地址。先连接一个路由器,登陆成功后,再去连接另一台路由器,却发现登陆不了。
3.ARP协议的数据格式
ARP协议的数据格式如图1所示。
图1 ARP协议的数据格式
·硬件类型:占2个字节,发送方想知道的硬件接口类型,以太网的值为l。
·协议类型:占2个字节,发送方提供的高层协议,IP协议为0800。
·操作:占2个字节,ARP请求(1),ARP 晌应(2),RARP 请求(3),RARP响应(4) 。
·协议长度:占1个字节,高层协议地址长度。
·发送方MAC地址:占6个字节,发送方硬件地址。
·目标MAC地址:占6个字节,接收方硬件地址。
·硬件地址长度:占l个字节,常用值为6。
RARP协议
RARP协议往往用于无盘工作站环境。因为主机没有外存,本地不能存放IP地址,所以需要一个RARP服务器来存放田地址和硬件地址的对应关系。当一台主机想要上Intemet网时,它需要用自己网卡上的硬件地址到RARP服务器上取回自己的IP地址。
1.RARP协议的工作原理
(1)主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址。
(2)本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址。
(3)如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用。
(4)如果不存在,RARP服务器对此不做任何的响应。
(5)源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。
2.RARP的格式
RARP协议的格式和ARP协议的格式一样,如图2所示。
图2 RARP的格式
3.RARP服务器在设计上的复杂性
RARP服务器的复杂性在于服务器一般要为多个主机提供硬件地址到IP地址的映射。更为复杂的是,RARP请求作为一个特殊类型的以太网数据帧来传送。这说明RARP服务器必须能够发送和接收这种类型的以太网数据帧。
RARP还有一个机制,就是在每个网络中都有多个RARP server。这可能是为了增大可靠性,是用的主从服务器的设计理念。源地址一般只接受第一个RARP reply。有多个服务器,自然也就可能出现冲突。所以RARP server是这样设计的:一般有一个主服务器是接收到request后立刻发送RARP reply,没有发送延迟;而其他的服务器即使接收到了request,也会在一个随机的发送延迟后才能发送reply,而且一般是在短时间内收到重复的第二个request才可以发送reply。因为如果这些次要的服务器都收到了第二次相同的request,那么这种情况一般是主服务器挂了。
ARP与RARP的比较
1.相同点
对于ARP与RARP,request是广播,而reply是单播。
2.不同点
(1)协议的目的完全不同。在总述中已经说明。
(2)发送ARP packet的是路由器,而RARP不是。
(3)ARP server在kernel中,而RARP是一个用于进程。
通过以上的概述可知,ARP是设备通过自己知道的IP地址来获得自己不知道的物理地址的协议,而RARP则是通过知道自己的物理地址来获得自己不知道的IP地址的协议,这两个可以说是互为相反的两个协议。用A、B作为例子来解释就是ARP通过知道A可以推断出B,RARP则是通过知道B而可以推断出A。
以上就是本文对额所有内容了,感谢大家的阅读!前往课课家教育课可查询更多的相关知识,另外,还有海量的有关计算机的网络课程可供大家学习哟!
上一篇:关于边界网关协议BGP的解析
¥299.00
¥699.00
¥399.00
¥399.00