一说到ARP协议,很多人都对它没有好感,更有甚者对它是深恶痛绝……那么为什么它会如此声名狼藉呢?这还要从它的基础和工作过程来慢慢说。现在就让我们认识一下这个可悲的家伙……ARP协议和ICMP协议是常用的TCP/IP底层协议。在对网络故障进行诊断的时候,它们也是最常用的协议。
ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的低层协议,负责将某个IP地址解析成对应的MAC地址。
ARP协议工作过程
当一个基于TCP/IP的应用程序需要从一台主机发送数据给另一台主机时,它把信息分割并封装成包,附上目的主机的IP地址。然后,寻找IP地址到实际MAC地址的映射,这需要发送ARP广播消息。当ARP找到了目的主机MAC地址后,就可以形成待发送帧的完整以太网帧头。***,协议栈将IP包封装到以太网帧中进行传送。
如图1所示,描述了ARP广播过程。
在图1中,当主机A要和主机B通信(如主机A Ping主机B)时。主机A会先检查其ARP缓存内是否有主机B的MAC地址。如果没有,主机A会发送一个ARP请求广播包,此包内包含着其欲与之通信的主机的IP地址,也就是主机B的IP地址。
当主机B收到此广播后,会将自己的MAC地址利用ARP协议响应包传给主机A,并更新自己的ARP缓存,也就是同时将主机A的IP地址/MAC地址对保存起来,以供后面使用。主机A在得到主机B的MAC地址后,就可以与主机B通信了。同时,主机A也将主机B的IP地址/MAC地址对保存在自己的ARP协议缓存内。