ARP-RARP协议

前言

在前面学习了IP网际协议相关知识,接着学习ARPRARP的知识点。

ARP

ARP为地址解析协议,当一台主机把以太网数据帧到位于同一局域网上的另一台主机时,根据48 bit的以太网地址来确定目的接口,而设备驱动程序并不检查IP数据报中的目的IP地址。地址解析提供了两种不同的映射,32 bitIP地址到数据链路层地址以及数据链路层地址到IP地址,也即ARPRARP

示例

当输入ftp bsdi时,ARP的处理流程如下。

  • 应用程序FTP客户端调用函数gethostbyname(该函数在DNS中称作解析器)把主机名bsdi转换成32 bitIP地址。
  • FTP客户端根据获取的IP地址请求TCP建立连接。
  • TCP发送一个连接请求分段到远端主机(使用上述IP地址发送一份IP数据报)。
  • 若目的主机在本地网络,那么IP数据报可以直接送到目的主机上;若目的主机在远程网络上,那么就通过IP选路函数确定位于本地网络上的下一站路由器地址,并让它转发数据报。
  • 假设是一个以太网,那么发送端主机必须吧32 bitIP地址变换成48 bit的以太网地址(ARP)。
  • ARP发送一份称作ARP请求的以太网数据帧至以太网的每一台主机,该过程为广播,数据帧中包含目的主机的IP地址。
  • 目的主机的ARP层收到这份广播报文后,识别出这是发送端在询问它的IP地址,于是发送一个ARP应答(包括IP地址和对应的硬件地址)。
  • 收到ARP应答后,使ARP进行请求-应答交换的IP数据报就可以传送了。
  • 发送IP数据报到目的主机。

为支持ARP,每个网络接口必须有一个硬件地址(48 bit),在硬件层上进行数据帧交换必须有正确的接口地址,仅仅知道主机地址并不能让内核发送数据帧给主机,必须要知道目的端的硬件地址才能发送数据。点对点链路不使用ARP,当设置该链路时,必须告知内核链路每一端的IP地址。

ARP高速缓存

每个主机上都有一个ARP高速缓存,该缓存存放最近Internet地址硬件地址之间的映射记录,生存时间一般为20 min。可使用arp命令查看ARP中的的项。

ARP的分组格式

在以太网解析IP地址时,ARP请求和应答分组的格式如下

  • 以太网报头中的前两个字段时以太网的源地址和目的地址,目的地址全为1表示广播地址,以太网接口都要接收数据帧。
  • 帧类型表示后面数据类型,对于ARP而言,该字段的值为0x0806
  • 硬件类型和协议类型描述ARP分组中的各字段,如ARP请求分组询问协议地址(IP地址)对应的硬件地址(以太网地址)。
  • 硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位;对于以太网上的IP地址的ARP请求或应答,他们的值分别为64
  • 操作字段(OP)表示操作类型,分为为ARP请求(1),ARP应答(2),RARP请求(3),RARP应答(4)。
  • 发送端以太网地址、发送端IP地址、目的以太网地址、目的IP地址与首部的信息有部分重复。

对于ARP请求而言,除目的端硬件地址无需填写外,其他字段均需填写。当系统收到一份目的端为本机的ARP请求报文后,它就把硬件地址填入,然后用两个目的端地址分别替换两个发送端地址,并发操作字段置为2,最后将它发送回去。

ARP代理

ARP请求从一个网络主机发往另一网络主机,那么连接两个网络的路由器可以回答该请求,该过程称为委托ARPARP代理,这样可以欺骗发起ARP请求的发送端,使它误以为路由器就是目的主机,路由器的功能相当于目的主机的代理,把发往目的主机的分组由其代理。

免费ARP

免费ARP指主机发送ARP查找自己的IP地址,通常它发生在系统引导期间进行接口配置的时候,其有如下两个作用。

  • 主机可通过它确定另一主机是否设置了相同的IP地址(若收到应答表示其他主机设置了相同IP地址)。
  • 若发送免费ARP的主机正好改变了硬件地址,那么该分组就可以使其他主机高速缓存中旧的硬件地址进行相应的更新。

RARP

RARP称为逆地址解析协议,与RAP相反,其是将硬件地址映射为IP地址的过程。在具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址,对于无盘机而言,需要采用其他方法获得IP地址,无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求,请求某个主机响应该无盘系统的IP地址(在RARP应答中)。

RARP分组格式

ARP格式基本一致,主要差别是RARP请求或应答请求帧类型代码为0x8035,并且RARP请求的操作码为3,应答操作码为4,同时RARP的应答一般是单播传送。

总结

ARPRARP是互逆的过程,ARP的响应是广播传送,而RARP的响应是单播的;了解了其协议格式及由IP地址获取硬件地址的过程。