1 ARP协议概述
IP数据包常通过以太网发送,但是以太网设备并不识别32位IP地址,它们是以48位以太网地址传输以太网数据包的。因此,IP驱动器必须把IP目的地址转换成以太网网目的地址。在这两种地址之间存在着某种静态的或算法的映射,常常需要查看一张表。地址解析协议(Address Resolution Protocol,ARP)就是用来确定这些映射关系的协议,位于TCP/IP协议栈中的低层,是 TCP/IP设计者利用以太网的广播性质设计出来的,主要特性和优点是它的位址对应关系是动态的﹐以查询的方式来获得 IP地址和MAC地址的对应。
2 ARP工作原理
2.1 ARP工作过程
1) 首先﹐每一台主机都会在 ARP Cache中建立一个 ARP表格﹐用来记录 IP地址和MAC地址的对应关系。这个 Table的每一条信息会根据自身的存活时间递减而最终消失﹐以确保信息的真实性。
2) 当发送主机有一个封包要传送给目的主机并且获得目的主机的 IP 地址的时候﹐发送主机会先检查自己的 ARP表格中有没有与该 IP地址对应的MAC地址。如果有﹐就直接使用此地址来传送封包﹔如果没有﹐则向网络发出一个 ARP Request广播封包﹐查询目的主机的MAC地址。这个封包会包含发送端的 IP地址和MAC地址信息。
3) 这时﹐网络上所有的主机都会收到这个广播封包﹐会检查封包的 IP 栏位是否和自己的 IP 地址一致。如果不是则忽略﹔如果是则会先将发送端的MAC地址和 IP资料更新到自己的 ARP表格去﹐如果已经有该 IP的对应﹐则用新的信息覆盖原来的﹔然后再回应一个 ARP Reply封包给对方﹐告知发送主机关于自己的MAC地址﹔
4)当发送端接到 ARP Reply之后﹐也会更新自己的 ARP表格﹔然后就可以用此记录进行传送了。
5) 如果发送端没有得到 ARP Reply ﹐则宣告查询失败。
如图1所示,描述了ARP广播过程。
2.2 ARP 的查询过程
前面说的 ARP表格﹐只有在 TCP/IP协议被载入内核之后才会建立﹐如果 TCP/IP协议被卸载或关闭机器﹐那么表格就会被清空﹔到下次协议载入或开机的时候再重新建立﹐而同时会向网络发出一个 ARP广播﹐告诉其它机器它的当前地址﹐以便所有机器都能保持最正确的资料。
然而﹐ARP cache 的大小是有所限制的﹐如果超过了界限﹐那么越长时间没被使用过渡资料就必须清理掉﹐以腾出空间来储存更新的资料。所以﹐当机器收到 ARP equest 封包时﹐如果查询对象不是自己﹐则不会根据发送端位址资料来更新自己的 ARP 表格﹐而是完全忽略该封包。同时﹐每笔存在 cache 中的资料﹐都不是永久保存的﹕每笔资料再更新的时候﹐都会被赋予一个存活倒数计时值﹐如果在倒数时间到达的时候﹐该资料就会被清掉。然而﹐如果该资料在倒数时间到达之前被使用过﹐则计时值会被重新赋予。
当然了﹐ARP尚有一套机制来处理当 ARP表格资料不符合实际地址资料的状况(例如﹐在当前连接尚未结束前﹐收到目的端的地址资料更新消息)﹔或是目的主机太忙碌而未能回答 ARP请求等状况。
2.3 ARP报文格式
ARP报文被封装在以太网帧头部中传输,如图2所示,是ARP协议报文头部格式。
2.4 ARP高速缓存
ARP高效运行的关键是由于每个主机上都有一个ARP高速缓存,这个高速缓存放了最近Internet地址到硬件地址之间的映射记录,高速缓存中每一项的生存时间一般为20分钟,起始时间从被创建时开始算起。我们可以通过arp -a或show arp来显示高速缓存中所有的内容
注意:ARP不能通过IP路由器发送广播,所以不能用来确定远程网络设备的MAC地址。对于目标主机位于远程网络的情况,IP利用ARP确定默认网关(路由器)的MAC地址,并将数据包发到默认网关,由路由器按它自己的方式转发数据包。
3 反向ARP
反向ARP(Reverse ARP,RARP)用于把物理地址(MAC地址)转换到对应的 IP 地址。例如,在无盘工作站启动的时候,因为无法从自身的操作系统获得自己的IP地址配置信息。这时,无盘工作站可发送广播请求获得自己的IP地址信息,而RARP服务器则响应IP请求消息-为无盘工作站分配1个未用的IP地址(通过发送RARP应答包)。
RARP在很大程度上已被