地址解析协议ARP(Address Resolution Protocol)是用来将IP地址解析为MAC地址的协议。目的在局域网中,当主机或其它三层网络设备有数据要发送给另一台主机或三层网络设备时,它需要知道对方的网络层地址(即IP地址)。但是仅有IP地址是不够的,因为IP报文必须封装成帧才能通过物理网络发送,因此发送方还需要知道接收方的物理地址(即MAC地址),这就需要一个从IP地址到MAC地址的映射。ARP即可以实现将IP地址解析为MAC地址。主机或三层网络设备上会维护一张ARP表,用于存储IP地址和MAC地址的关系。 1 动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新。动态ARP通过广播ARP请求和单播ARP应答这两个过程完成地址解析。 2 通信的两台主机处于同一网段时,的Host_1和Host_2,Host_1要向Host_2发送数据 首先 Host_1会查找自己本地缓存的ARP表,确定是否包含Host_2对应的ARP表项。如果Host_1在ARP表中找到了Host_2对应的MAC地址,则Host_1直接利用ARP表中的MAC地址,对数据报文进行帧封装,并将数据报文发送给Host_2。如果找不到,则先缓存该数据报文,并以广播方式发送一个ARP请求报文。ARP请求报文中的源MAC地址和源IP地址为Host_1的MAC地址和IP地址,目的MAC地址为全0的MAC地址,目的IP地址为Host_2的IP地址。 Host_2比较自己的IP地址和ARP请求报文中的目的IP地址,当两者相同时进行如下处理:将ARP请求报文中的源IP地址和源MAC地址(即Host_1的IP地址和MAC地址)存入自己的ARP表中。之后以单播方式发送ARP应答报文给Host_1 。Host_1收到ARP应答报文后,将Host_2的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将数据报文进行帧封装,并将数据报文发送给Host_2。 3 当需要通信的两台主机处于不同网段时,Host_1和Host_2,Host_1上已经配置缺省网关,Host_1首先会发送ARP请求报文,请求网关Router的IP地址对应的MAC地址。Host_1收到ARP应答报文后,将数据报文封装并发给网关,再由网关将数据报文发送给目的主机Host_2。Host_1学习网关IP地址对应的ARP表项的过程,以及网关设备学习Host_2的IP地址对应的ARP表项的过程与上述同网段主机Host_1和Host_2之间进行ARP地址解析的过程类似。 |