前言   
 
     两台主机进行通讯时,在网络层使用IP地址进行通讯,到了数据链路层应该使用MAC地址进行通讯,那么主机是如何实现IP地址与MAC地址的映射的呢?这里就要用到了ARP(Address Resolution Protocol)地址解析协议来实现 
 
 ARP的工作原理
     ARP用来把一个已知的IP地址解析成MAC地址,以便可以在MAC层进行通讯。为了确定目标的MAC地址,首先要查找ARP缓存表。如下图:
 
    如果缓存表中不存在,ARP会发送一个广播,从而发现目的地址的MAC地址。
 
ARP协议的工作过程
    (1)假设主机A想发送数据给主机B,它检查自己的ARP缓存,发现没有B的MAC地址,这时,它会初始化ARP请求,即发送ARP请求信息,ARP请求使用全1的广播MAC地址,从而保证所有设备能够收到该请求。
    (2)网络上的所有设备在接受到ARP请求时,会把它交给网络层处理,每台主机的网络层都会进行IP地址比较,如果目标IP与自己的IP不同,就丢弃,而只有主机B会在自己的ARP表中缓存A的IP和MAC,同时发送一个ARP应答,来告诉A自己的MAC。
    (3)主机A接收到这个应答后,就会把B和它的MAC 添加到它的缓存表中,然后向其发送数据。
   
     在这里有的朋友会问到,那如果是中间有路由器类设备的话,那目的主机就不会收到广播地址了。这里我们就用到了代理ARP。
    
    代理ARP(proxy ARP)是一种IP网络地址复用技术。其工作原理是对于不在同一子网中的主机发送的ARP请求,ARP代理服务器(通常是网关,即路由器)以网关的硬件地址回应。
 
    RARP是和ARP完全相反的过程。ARP是已知IP,查找MAC;RARP是已知MAC,查找IP。
 
    RARP的工作过程
       (1)主机A需要一个IP地址,发送RARP广播,广播中包含自己的MAC;
       (2)主机B是一个可以分配IP地址的服务器,接收到来自主机A的RARP请求后,发送给A一个应答,其中包含分配给A的IP地址。