当一台主机把以太网数据帧发到同一局域网上的另一台主机时,是根据48bit的以太网地址(即Mac地址)来确定目的接口的。设备驱动程序从不检查IP数据报中的目的IP地址。
ARP把32位的IP地址转成48位的MAC地址,它是自动完成的,不用程序员或系统管理员操心。RARP则是相反的转换过程,它则是那些没有磁盘驱动器的系统使用,它需要系统管理员进行手动设置。

ftp bsdi
上面这个命令会执行如下步骤:
1、FTP客户端调用gethostbyname把主机名转成32位的IP地址
2、FTP客户端请求TCP用得到的IP地址建立连接
3、TCP发送一个连接请求分段到远端的主机,即用上述的IP地址发送一份IP数据报
4、如果目的主机在本地网络上(以太网、令牌环网或点对点的另一端),那么IP数据报可以直接送到目的主机上。如果 目的主机在一个远程网络上,娇柔就通过IP选路函数来确定位于本地网络上的下一站路由器地址,并让它转发IP数据报。这两种情况,都是被送到本地网络或路由器 。
5、如果是一个以太网,那么发送端主机必须把32bit的IP地址变换成48位的以太网地址。这时就要用到ARP解析了。
6、ARP发送一份ARP请求的以太网数据帧,它是一种广播,发给以太网上的每个主机,请求数据帧中包含的目的主机IP地址,意思:如果你是这个IP地址的拥有者,请回复你的硬件地址。
7、目的主机的ARP层收到这份广播报文后,识别出这是发送端在寻问它的IP硬件地址,于是就回复自己的硬件地址。
8、收到ARP应答后,就开始发IP数据报了。
点对点链路不使用ARP。
ARP高速缓存
ARP高效运行的关键是由于每个主机上都有一个ARP调整缓存。,它存放最近Internet地址到硬件地址之间的映射记录。每一项的生存时间一般为20分钟。
ARP分组格式

前两个字段是以太网的源地址和目的地址。目的地址为全1的特殊地址是广播地址。电缆上的所有以太网接口都要接收广播的数据帧。
帧类型表示后面数据的类型。对于ARP来说,值为0x0806;RARP的为0x8035。
硬件类型字段表示硬件地址的类型。值为1时,表示以太网地址。
协议类型表示要映射的协议地址类型,为0x0800时表示IP地址。它的值 与包含IP数据报的以太网数据帧中的类型字段值相同。
接下来的硬件地址长度和协议地址长度,都是1byte,对于以太网上IP地址的ARP请求或应答来说,它们分别为6和4 。
op操作字段值为四个操作类型:APR请求1,ARP应答2,RARP请求3,RARP应答4。对于前两种或后两种,这们的帧类型都相同,所以只能通过这个字段来区分。
最后的四个字段,意义比较明显,不多解释。
系统在收到一个目的端是自己的ARP请求报文后,它就把自己的硬件地址填进去,然后用两个目的地址分别替换两个发送端地址,并把操作字段置成2,最后发送。
免费ARP
有一个特殊的ARP,它是主机发送的用来查找自己IP地址的。发送端的协议地址和目的端的协议地址都是自己。它用两个用处:
1、一个主机可以通过它来确定另一个主机是否设置了相同的IP地址。
2、如查发送免费ARP的主机正好改变了硬件地址,那么它就可以把它通知给所有人。(这里有一点知识:就是如果主机收到一个ARP报文,而且它已在主机的高速缓存中,那么主机就要用ARP请求中的发送端硬件地址对高速缓存中相应的内容进行更新。)
RARP:
这是对于没有本地磁盘的系统来说的。无盘系统先从自己的接口卡上读取唯一的硬件地址,然后发送一份RARP请求,请求某个主机能响应该无盘系统的IP地址。
对于ARP来说,RARP请求以广播传送,而RARP应答一般是单播传送的。