前言
在前面学习了
IP
网际协议相关知识,接着学习ARP
和RARP
的知识点。
ARP
ARP
为地址解析协议,当一台主机把以太网数据帧到位于同一局域网上的另一台主机时,根据48 bit
的以太网地址来确定目的接口,而设备驱动程序并不检查IP
数据报中的目的IP
地址。地址解析提供了两种不同的映射,32 bit
的IP
地址到数据链路层地址以及数据链路层地址到IP
地址,也即ARP
和RARP
。
示例
当输入
ftp bsdi
时,ARP
的处理流程如下。
- 应用程序
FTP
客户端调用函数gethostbyname
(该函数在DNS
中称作解析器)把主机名bsdi
转换成32 bit
的IP
地址。 FTP
客户端根据获取的IP
地址请求TCP
建立连接。TCP
发送一个连接请求分段到远端主机(使用上述IP
地址发送一份IP
数据报)。- 若目的主机在本地网络,那么
IP
数据报可以直接送到目的主机上;若目的主机在远程网络上,那么就通过IP
选路函数确定位于本地网络上的下一站路由器地址,并让它转发数据报。 - 假设是一个以太网,那么发送端主机必须吧
32 bit
的IP
地址变换成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
请求或应答,他们的值分别为6
和4
。 - 操作字段(
OP
)表示操作类型,分为为ARP
请求(1
),ARP
应答(2
),RARP
请求(3
),RARP
应答(4
)。 - 发送端以太网地址、发送端
IP
地址、目的以太网地址、目的IP地址与首部的信息有部分重复。
对于
ARP
请求而言,除目的端硬件地址无需填写外,其他字段均需填写。当系统收到一份目的端为本机的ARP
请求报文后,它就把硬件地址填入,然后用两个目的端地址分别替换两个发送端地址,并发操作字段置为2
,最后将它发送回去。
ARP代理
若
ARP
请求从一个网络主机发往另一网络主机,那么连接两个网络的路由器可以回答该请求,该过程称为委托ARP
或ARP
代理,这样可以欺骗发起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
的应答一般是单播传送。
总结
ARP
和RARP
是互逆的过程,ARP
的响应是广播传送,而RARP
的响应是单播的;了解了其协议格式及由IP
地址获取硬件地址
的过程。