当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。
地址解析协议(ARP),为IP地址到对应的硬件地址之间提供动态映射。(动态,是指系统自动完成)
逆地址解析协议(RARP),被哪些没有磁盘驱动器的系统使用,需要系统管理员手动设置。
地址解析,是指在IP地址和数据链路层使用的任何类型的地址这两种不同的地址形式提供映射。
1. 地址解析协议ARP
1.1 ARP高速缓存
ARP高效运行的关键在于每个主机上都有一个ARP高速缓存。这个高速缓存存有最近Internet地址到硬件地址之间的映射记录。
使用arp -a
命令可查看ARP高速缓存
arp - manipulate the system ARP cache
[root@thor ]# arp -a
? (10.66.91.15) at ac:1f:6b:22:e4:02 [ether] on bond0
? (10.66.91.2) at ac:1f:6b:20:6d:3a [ether] on bond0
? (10.66.91.3) at ac:1f:6b:20:6d:3b [ether] on bond0
? (10.66.91.254) at 50:da:00:f2:bc:fe [ether] on bond0
1.2 ARP代理
如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程称为ARP代理(Proxy ARP)。
这样可以欺骗发起ARP请求的发送端,使它误以为路由器就是目的主机,而事实上,目的主机在路由器的另一边。
路由器的功能相当于目的主机的代理,把分组从其他主机转发给它。
1.3 免费ARP
参考:
- 《TCP/IP详解,卷一:协议》
- 普通ARP和免费ARP及arping命令的使用
免费ARP(gratutious ARP),指主机发送ARP查找自己的IP地址。通常,它发生在系统引导期间进行接口配置的时候。免费ARP有两个作用:
- 一个主机可以通过它来确定另一个主机是否设置了相同的IP地址;
- 如果发送免费ARP的主机改变了硬件地址,可以使其他主机高速缓存更新。
2. 逆地址解析协议
2.1 系统引导
- 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址;
- 无盘机(如X终端或无盘工作站),则需要使用RARP来获取IP地址,首先从接口卡上读取唯一的硬件地址,然后发送一份RARP请求(广播),请求某个主机在RARP应答中响应该无盘系统的IP地址。
RARP协议是许多无盘系统在引导时用来获取IP地址的。
2.2 ARP和RARP的请求响应
- ARP请求以广播方式传送,ARP请求数据帧中包含目的主机的IP地址,意为“如果你是这个IP地址的拥有者,请回答你的硬件地址”。目的地址收到ARP请求后,识别出这是发送端在询问它地址,则以单播方式发送ARP应答,包含IP地址和对应的硬件地址。
- RARP请求以广播方式传送,RARP请求数据帧中包含发送端的硬件地址,以请求相应的IP地址的相应,RARP应答一般是单播传送。
# tcpdump 截取到的 ARP请求报文
10:50:37.820561 ARP, Request who-has 10.66.91.117 tell 10.66.91.254, length 46