ARP协议简介
ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。 所谓“地址解析”就是主机在发送帧前将目标网络层地址转换成目标物理地址的过程。在使用TCP/IP协议的以太网中,即完成将IP地址映射到MAC地址的过程——使用ARP协议通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
ARP的运行过程
1.发送者知道目标端的IP地址
2.IP要求ARP创建一个ARP请求报文,其中包含了发送方的物理地址、发送方的IP地址和目标端的IP地址。目标的物理地址用0填充
3.将报文传递到数据链路层,并在该层中用发送方的物理地址作为源地址,用物理广播地址作为目的地址,将其封装在一个帧中
4.同一链路中的每个主机或路由器都接收到这个帧,因为该帧中包含了一个广播目的地址,所有的站点都对报文进行移交,并将其传递到ARP。除了目标机器以外的所有机器都丢弃该报文。目标机器对IP地址进行识别
5.目标机器用一个包含其物理地址的ARP响应报文做出响应,并对该报文进行单播
6.发送方接收到一个响应报文,这样它就知道了目标机器的物理地址
7.这样就可以将携带目标机器数据的IP数据报封装在一个帧中,并单播到目的地址
ARP缓存
实际上,在真正的协议实现中,并不是每次发送IP报文前都需要发送ARP请求报文来获取目的MAC地址。在大多数的系统中都存在着一个 ARP缓存表。记录着已经获取的MAC地址和IP地址的映射关系,发送IP报文前总是先对ARP缓存表进行查找,看是否目标MAC地址存在于缓存表中,如果存在, 则不需要发送ARP请求报文而直接使用此地址进行IP报文的发送。如果不存在,则发送ARP请求报文,并将结果存于ARP缓存表中供以后使用。另外,ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度, 加快查询速度。
ARP代理
ARP本身无法跨跃不同网段。当数据要发往外部网络时,通常是首先使用ARP请求网关路由器的MAC地址,之后将数据发往网关路由器, 由网关路由器进行转发。ARP代理的工作原理很简单,当ARP请求是从一个网络的主机发往另一个网络的主机时,启用ARP代理的连接这两个网络的路由器将回答该请求,使请求的发送者误以为此路由器就是目标主机, 而将所有数据帧发送到此路由器。路由器在收到ARP地址解析过程数据帧后,再将其转发到真正的目标主机。