ARP的功能是——在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。
以太网封装格式(RFC 894)
用于以太网的ARP请求或应答分组格式
以太网目的地址全1的特殊地址是广播地址;
帧类型:0x0806;
硬件类型:值为1表示以太网地址;
协议类型:0x0800表示IP地址;
硬件地址长度:MAC地址值为6;
协议地址长度:IP地址值为4;
操作字段:4种操作类型(1 ARP请求,2 ARP应答,3 RARP请求,4RARP应答);
注意:这里有一些重复信息:在以太网的数据帧报头中和ARP请求数据帧中都有发送端的硬件地址。
对于一个ARP请求来说,除了目的端硬件地址待填充之外,所有的其他字段都有填充值。当系统收到一份目的端是本机的ARP请求报文之后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后把它发送回去。
ARP的工作机制:
1.每个主机都会给自己的ARP缓冲区建立一个ARP列表,以表示IP地址和MAC地址之间的映射关系。
2.主机新加入网络时(也可能是MAC地址发生变化,接口重启等),会发送免费ARP报文把自己IP地址和MAC地址映射关系广播给其他主机。
3.网络上的主机接收到免费ARP报文时,更新自己的ARP缓冲区。将新的映射关系更新到自己的ARP表中。
4.某个主机需要发送报文时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,直接发送数据;如果没有,向本网段所有主机广播ARP数据包,包括:源主机IP地址,源主机MAC地址,目的主机IP地址等。
5.当其他主机收到该ARP数据包时:
首先检查数据包中的IP地址是否是自己的,若不是,忽略该数据包;
如果是,首先从数据包中取出源主机的IP和MAC地址写入ARP列表中,若已经存在,则覆盖;
将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要的MAC地址。
6.源主机收到ARP响应包后,将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
RARP——逆地址解析协议
RARP是从MAC地址定位IP地址的一种协议。
具有本地磁盘的系统引导时,一般是从磁盘的配置文件中读取IP地址。但是无盘机,如X终端或无盘工作站,获取IP地址的方法就不一样了。
网络上每个系统具有唯一的MAC地址,是由网络接口生产厂家配置的。