两台电脑通讯的时候源主机的应用程序知道目的主机的IP地址和端口号却不知道目的地址的硬地址(也就是MAC).
数据包首先是被网卡接收到然后再处理上层协议.如果接收到的数据包硬件地址(MAC)与本机硬件地址不符,就直接丢弃该包,因此在通讯前必须获得目的主机的硬件地址.而APR协议就起到这个作用.
源主机A发出APR报请求问IP192.100.25.1的地址是多少,并将这个请求发送到交换机,由交换机广播,各个电脑匹配IP,发现其中目的IP地址与PC机X的IP地址一致,则PC机X就发送一个ARP应答数据报给源主机A,这个APR应答数据包其中就包含了PC机X的硬件地址.(详细在后面)
每台主机都维护一个ARP缓冲表,缓冲表时间(一般20分钟),超过该时间没用到某个表项,该表项就会失效,下次还要发ARP请求来获得目的主机的硬件地址.
在一个局域网中,PC机A(IP 172.21.96.28)需要与IP为172.21.96.01的PC X通信
那么A就会发送一个APR报(报含自己的IP以及自身的MAC地址)给该局域网的交换机,通过广播,该局域网的各个电脑收到这样一个ARP报,各个电脑都会解包,匹配报里面目的地址是否与当前自己的IP地址是否匹配,不匹配的的就会把报丢弃,如果PC X机的IP正好匹配就会发送给交换机一个包(包含PC x机自己的MAC,IP信息以及目标机(PC A的IP和MAC).),通过广播,各个电脑同样解包,一旦发现自己的IP与目标IP不符合就丢弃,根据目标地址上IP和MAC信息就能匹配到PC机A。通过这个过程电脑A就能知道电脑X的IP和MAC信息了(X也知道A的IP和MAC信息)。由此由目标的IP就能知道目标的MAC地址了。