ARP协议最早在1982年提出,并在RFC 826中进行规范。其全称为Address Resolution Protocol,即地址解析协议。在以太网中,一台主机要向另一台主机发送数据,必须知道目标主机的MAC地址。但在IP通信中,只知道目标主机的IP地址是不够的,还需要通过ARP协议将IP地址解析为对应的MAC地址。
每台安装了Ethernet网卡的主机都会维护一个ARP表,用于完成IPv4地址和MAC地址之间的转换。当主机需要发送数据包到目标主机时,如果自己的ARP列表中没有目标主机的IP地址对应的MAC地址,就会通过ARP广播来询问局域网中目标IP地址所对应的MAC地址。
每台主机都会在自己的ARP缓冲区中建立一个ARP列表(地址转换表),以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址。如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果一致,该主机就会在ARP列表中查看自己的MAC地址,并将这个MAC地址发送回源主机。源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
随着技术的发展,ARP协议的应用场景也从最初的Ethernet局域网扩展到了其他类型的网络。在IPv6中,邻居发现协议(Neighbor Discovery Protocol,NDP)被用来替代ARP协议。总的来说,ARP协议是网络通信中的重要协议之一,它通过将IP地址解析为MAC地址,实现了在网络中准确找到目标主机并进行通信的功能。