ARP发生在网络层和数据链路层。
网络层的 ARP 协议完成了 IP 地址与物理地址的映射。为什么要进行ARP地址转换呢,是在怎样的情况下才会发生呢?
ARP主要发生在已知源主机的IP和MAC地址和目的主机的IP情况下,想寻找目的主机的MAC地址。那么ARP过程都发生了什么呢?
每台主机都会在自己的ARP缓冲区建立一个ARP列表,用来存储IP和MAC的对应关系。源主机将一个数据包发送到目的主机时,需要先检查自己的ARP列表中是否存在此IP地址对应的MAC地址,如果没有就要向本地网段发送一个ARP请求,用来查找目的主机的MAC地址;如果有就直接发送此数据包。
网络中的所有主机都会收到源主机发送的ARP请求。然后会检查请求中的数据包里的目的主机IP地址是不是和自己的一样,如果不一样就忽略此请求;如果相同,那么就接受源主机的IP+MAC地址并放入自己的ARP列表中,如果列表中存在该IP信息会重新覆盖。然后给源主机发送一个ARP响应数据包,告诉他自己是他要找的目的主机。然后源主机就会将目的主机发送过来的数据包存入自己的ARP列表中,用这时候的IP+MAC地址直接传输。如果源主机没有收到目的主机发送的ARP响应数据包,那么就代表ARP查询失败。