首先,每臺主機都會在自己的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查詢失敗。
例如:
A的地址為:IP:192.168.10.1
MAC:
AA-AA-AA-AA-AA-AA
B的地址為:IP:192.168.10.2
MAC:
BB-BB-BB-BB-BB-BB
根據上面的所講的原理,我們簡單說明這個過程:A要和B通訊,A就需要知道B的以太網地址,於是A發送壹個ARP請求廣播(誰是192.168.10.2
,請告訴192.168.10.1),當B收到該廣播,就檢查自己,結果發現和自己的壹致,然後就向A發送壹個ARP單播應答(192.168.10.2
在BB-BB-BB-BB-BB-BB)。