ARP的主要作用是已知IP地址,获取其硬件地址。
在IP数据报中,其头部始终记录着目的IP和源IP,但在数据链路层转发的过程中,MAC帧中记录的是下一跳硬件地址和当前硬件地址。所以需要根据目的IP地址解析出硬件地址。
其原理如下:
每一台主机都有其高速缓存,记录着IP地址和硬件地址的映射关系,类似于Hash表。该映射表会动态更新,即新增或超时删除。
注意ARP只能解析出本局域网中IP的硬件地址,需要转发时,则解析出对应转发路由器的硬件地址。
具体ARP解析步骤如下:
- 当主机A要向本局域网上的主机B发送IP数据报时,先查看自己的ARP高速缓存中有无主机B的IP对应的硬件地址,如果有则直接发送。
- 主机A在本局域网上广播一个ARP请求分组,其内容大致如下“我的IP是1.1.1.1,硬件地址是00.00.c0.15.ad.18,我想知道IP地址为1.1.1.2的主机的硬件地址。
- 本局域网上的所有主机上运行的ARP进程都会受到此请求分组。
- 不是B的主机对此不予响应,B收下此分组,向A回复,并在自己的高速缓存中记录A的硬件地址。