每台主機都會在自己的ARP緩沖區中建立一個 ARP列表,以表示IP地址和MAC地址的對應關系。
當源主機需要將一個數據包要發送到目的主機時,會首先檢查自己 ARP列表中是否存在該 IP地址對應的MAC地址。
如果有,就直接將數據包發送到這個MAC地址;如果沒有,就向本地網段發起一個ARP請求的廣播包,查詢此目的主機對應的MAC地址。
此ARP請求數據包里包括源主機的IP地址、硬件地址、以及目的主機的IP地址。網絡中所有的主機收到這個ARP請求后,會檢查數據包中的目的IP是否和自己的IP地址一致。
如果不相同就忽略此數據包;如果相同,該主機首先將發送端的MAC地址和IP地址添加到自己的ARP列表中。
如果ARP表中已經存在該IP的信息,則將其覆蓋,然后給源主機發送一個 ARP響應數據包,告訴對方自己是它需要查找的MAC地址。
源主機收到這個ARP響應數據包后,將得到的目的主機的IP地址和MAC地址添加到自己的ARP列表中,並利用此信息開始數據的傳輸。
如果源主機一直沒有收到ARP響應數據包,表示ARP查詢失敗。