声明:本博客参考《TCP/IP协议详解卷一:协议》

1.概述

在以太网中一台主机将数据帧从一台主机发送到另一台主机时,是根据48bit的以太网地址确定目的接口的。设备驱动程序从不检查IP数据报中的目的IP地址。

ARP(地址解析协议)和RARP(逆地址解析协议)为这两种地址提供了映射。其中ARP协议是经常用到的,而RARP一般只会被没有磁盘驱动的系统使用。

【4】TCP/IP协议族详解-ARP协议和RARP协议

2.ARP协议

2.1 工作原理

【4】TCP/IP协议族详解-ARP协议和RARP协议

上图展示了ARP协议的工作方式(以FTP协议举例)

①应用程序FTP客户端通过DNS(域名解析协议)获取主机IP地址。

②FTP客户端发送一个连接请求分段到远端主机,使用上一步获取的IP地址。

③如果目的主机在本地网络上,或者在一个可达的远程网络上,都可以通过本地主机的路由表直接送到或者交由下站路由器。

④假设目的主机是一个以太网。ARP发送一份ARP请求以太网数据帧给以太网上的每个主机。或者是代理ARP。

⑤目的主机接收到广播报文之后,识别出这是需求它的IP地址,于是发送一个ARP应答给发送端。这个ARP应答包含IP地址以及对应的硬件地址。同时本地也会存下发送的IP及硬件地址。

⑥收到ARP应答之后,IP数据报就可以正常发送了。

注意:点对点链路使用ARP,当设置这些链路时,必须告诉内核链路每一端的IP地址。

ARP高效运行的关键是由于每个主机都有一个ARP缓存。这个缓存存放了最近Internet地址到硬件地址的映射。高速缓存中每一项的生存时间一般为20分钟,起始时间从被创建时间开始算。

2.2 ARP分组格式

 

【4】TCP/IP协议族详解-ARP协议和RARP协议

①前面三个字段是以太网的头部,分别是以太网源地址、目的地址和帧类型。这里ARP的帧类型字段为0x0806。

②硬件类型字段表示硬件地址的类型。以太网的值为1。

③协议类型表示要映射的协议类型。IP地址为0x0800,这与以太网数据帧中IP数据报的类型相同。

④硬件地址长度和协议地址长度分别为6和4。表示以太网硬件地址6字节,IP地址4字节。

⑤操作类型字段有四种分别为:ARP请求(1),ARP应答(2),RARP请求(3)和RARP应答(4)。

⑥最后面的四个字段分别是发送端以太网地址,IP地址和目的端以太网地址和IP地址。注意:在以太网数据帧报头和ARP请求数据帧中都有发送端的硬件地址。对于一个ARP请求而言,目的端以太网地址是填0的。

2.3 代理ARP

如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称作委托ARP或者ARP代理(Proxy ARP)。

【4】TCP/IP协议族详解-ARP协议和RARP协议

gemini主机需要发送一份数据报给sun主机(140.252.1.29),其发送ARP广播,被netb路由器接收,netb识别出该IP地址输入它的一个拨号主机,于是把它的以太网接口地址140.252.1作为硬件地址回答。主机gemini通过以太网发送IP数据报到netb,netb通过拨号SLIP链路把数据报发送到sun。

在这种情况下,两个物理网络可以使用相同的网络号,只要把中间的路由器设置成一个ARP代理,以响应一个网络到另一个网络主机的ARP请求。

2.4 免费ARP

免费ARP指主机发送ARP查找自己的IP地址。这通常发生在系统引导期间进行接口配置的时候。

免费ARP的作用:

①一个主机可以利用它来确认另一个主机是否设置了相同的IP地址。如果没有回应则没有主机设置,如果有回应,则有主机设置了。

②如果发送免费ARP主机正好改变了硬件地址(换网卡),那么就可以通过免费ARP使其它主机更新缓存。

3.RARP

具有磁盘的系统引导时,一般从磁盘上的配置文件中读取IP地址。但是无盘机或者工作站,内需要采取其它方式获取IP地址。这就是RARP。无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求,请求某个主机响应该无盘系统的IP地址。

RARP分组的格式与ARP分组基本一致。它们之间的主要差别是帧类型代码,RARP是0x8035。由于RARP不怎么常见,这里就略过。

4.总结

ARP请求是通过IP地址获取硬件地址,而RARP请求是通过硬件地址获取IP地址。ARP是一个基础协议,在进行数据传输的时候经常会使用,而RARP是一个不常见的协议,一般是无盘系统和工作站引导的时候会出现。ARP有两个特性:ARP代理和免费ARP。

 

相关文章: