概念
数据链路如以太网都有自己的寻址机制(常常为48bit地址),这是使用数据链路的网络层都必须遵守的。也就是说,你发给以太网的是32位IP地址,但是经由以太网发给另一个主机时它是以48位的以太网地址在传递,所以这里就要用到ARP地址解析协议和RARP逆地址解析协议。
ARP 为IP地址到对应的硬件地址之间提供动态映射。
RARP 是被那些没有磁盘驱动器的系统使用,它需要系统管理员进行手工设置。
过程
比如此时已经经过上层运输层和网络层,现在向链路层发送一份IP数据报。如果目的主机在本地,那么IP数据报可以直接送到目的主机,如果目的主机在远程网络,那么通过IP选路函数来确定位于本地网络上的下一站路由器地址,并转发。这两种情况下,IP数据报都被送到位于本地网络上的一台主机或路由器。
假定是以太网,那么发送端主机必须把32bit的IP地址变换为48bit以太网地址。从逻辑Internet地址到对应的物理硬件地址需要进行翻译,这就是ARP功能。
然后ARP发送一份含有目的IP地址的ARP请求的以太网数据幀给以太网上的每个主机。即广播。
所有收到的主机开始识别这个ARP请求的IP地址,如果不是自己,就不予理会,如果是自己,就发送一个ARP应答。
收到ARP应答后,使ARP进行请求–应答交换的IP数据报现在就可以传送给目的主机了。
下面来看看ARP请求/应答的分组格式:
- 目的地址为全1的特殊地址是广播地址,电缆上的所有以太网接口都要接收广播的数据幀。
- 幀类型标识后面的数据类型,ARP该字段为0x086.
- op 指出幀的操作类型,属于ARP请求,应答或者RARP请求。应答。
-
ARP高效运行的关键是由于每个主机上都有一个ARP高速缓存,存放了一些用过的Internet地址到硬件地址之间的映射。可使用 arp -a 命令查看。
免费ARP
免费ARP报文与普通ARP请求报文的区别在于普通的ARP请求报文,其ARP封装内的“目的IP地址”是其他机器的IP地址,而免费ARP的请求报文,其ARP封装内的“目的IP地址”是其自己的IP地址。
免费ARP的作用:
免费ARP目前的作用有两种:
第一种就是刚才上面所说的宣告广播的作用,以告诉整个广播域,目前这个IP所对应的MAC地址是什么。
第二种是看看广播域内有没有别的主机使用自己的IP,如果使用了,则在界面上弹出“IP冲突”字样。普通ARP请求报文广播发送出去,广播域内所有主机都接收到,计算机系统判断ARP请求报文中的目的IP地址字段,如果发现和本机的IP地址相同,则将自己的MAC地址填写到该报文的目的MAC地址字段,并将该报文发回给源主机。所以只要发送ARP请求的主机接收到报文,则证明广播域内有别的主机使用和自己相同的IP地址(这里不考虑路由器的ARP代理问题)。免费ARP的报文发出去是不希望收到回应的,只希望是起宣告作用;如果收到回应,则证明对方也使用自己目前使用的IP地址。
RARP
RARP协议是许多无盘系统在引导时用来获取IP地址的。
无盘系统,泛指由无盘工作站组成的局域网。相对于普通的PC机,无盘工作站可以在没有任何外存(软驱、硬盘、光盘等)支持的情况启动并运行操作系统。为了支撑这样的网络构架,需要采用专门的软件系统,此类的软件成为整个无盘系统的组成部分之一。
区别:
ARP 幀类型代码: 0x08086 RARP: 0x8035
对于RARP, RARP 请求是广播,RARP应答是单播。
网络上的每个系统都具有唯一的硬件地址,它是由网络接口生产厂家配置的。无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求,请求某个主机响应该无盘系统的IP地址。
RARP服务器的复杂性在于,服务器一般要为多个主机(网络上的所有无盘系统)提供硬件地址到IP地址的映射。该映射包含在文件 /etc/ethers 中,由于内核一般不读取和分析磁盘文件,因此RARP服务器功能就由用户进程来提供,而不是作为内核TCP/IP实现的一部分。
RARP服务器实现的一个复杂因素是RARP请求是在硬件层上进行广播的。这意味他们不经过路由器转发。为了让无盘系统在RARP服务器关机的状态下也能引导,通常在一个网络上要提供多个RARP服务器。