每台主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上各主机和路由器的IP地址和硬件地址的映射表,这些都是该主机目前知道的一些地址。缓存
当主机A要向本局域网上的某个主机B发送IP数据报时,先在其ARP高速缓存中查看是否有主机B的IP地 址。若是有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,而后经过局域网把该MAC帧发往此硬件地址。也有可能查不到主机 B的IP地址的项目。这多是主机B才入网,也多是主机A刚刚加电,其高速缓存仍是空的。在这种状况下,主机A就自动运行ARP,而后按如下步骤找到主 机B的硬件地址。网络
实现地址解析的第一步是产生ARP请求帧。在ARP帧数据部分的相应字段写入本地主机的物理地址、IP地址、待侦测的目的IP地址,在目的物理地址字段写入0,并在操做类型字段写入1,用以表示本数据帧是一个ARP请求数据帧。spa
该ARP请求帧以本地网络适配器的物理地址做为源地址,以物理广播地址(FF-FF-FF-FF-FF-FF)做为目的地址,经过物理层发送出去。路由
因为采用了广播地址,所以网段内全部的主机或设备都可以接收到该数据帧。除了目的主机外,全部接收到该ARP请求帧的主机和设备都会丢弃该ARP请求帧,由于目的主机可以识别ARP消息中的IP地址是否与本机相同。路由器
与目的IP地址匹配的主机构造ARP应答帧。在ARP应答帧中,以请求分组中源物理地址、源IP地址做为其目的物 理地址、目的IP地址,并将自身的物理地址、IP地址填入应答帧的源物理地址、源IP地址字段,并在操做字段中写入2,表示本ARP数据帧是一个应答数据 帧。该分组经过数据链路层直接发给源主机。硬件
源主机接收到ARP应答帧后,得到目的主机的物理地址,并将它做为一条新记录加入到ARP高速缓存表。请求
此外,若是源主机没有发送ARP请求而收到其余主机的ARP响应数据帧,源主机也会在本地ARP缓冲区中缓存该主机物理地址和IP地址的对应关系。通信
ARP高速缓存是很是有用的。若是不使用ARP高速缓存,那么任何一个主机只要进行一次通讯,就必须在网络上用广播的方式发送ARP请求分组,这会使网络上的通讯量大大增长。ARP把保存在高速缓存中的每个映射地址项目都设置生存时间,超过生存时间的项目就从高速缓存中删除掉。数据
注意:ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。项目