當網絡設備要發送數據給另一台設備時,必須要知道對方的網絡層地址(即IP地址)。IP地址由網絡層來提供,但是僅有IP地址是不夠的,IP數據報文必須封裝成幀才能通過數據鏈路進行發送。
數據幀必須包含目的MAC地址,因此發送端還必須獲取到目的MAC地址。通過目的IP地址而獲取目的MAC地址的過程是由ARP協議來實現的。
ARP協議是TCP/IP協議簇中的重要組成部分,ARP能夠通過目的IP地址發現目標設備的MAC地址,從而實現數據鏈路層的可達性。
工作流程:
-
首先,每個主機都會在自己的ARP緩沖區建立一個ARP列表,以表示IP地址和MAC地址之間的對應關系。
-
當A要發送數據時,首先檢查ARP列表中是否有B的IP地址對應的MAC地址,如果有則直接發送,如果沒有就向本網段的所有主機發送ARP數據包,該數據包有:A的IP地址、A的MAC地址、B的IP地址。
-
當本網絡的所有主機收到該ARP數據包時,首先檢查數據包中的IP地址是否是自己的IP地址,如果不是,則忽略該數據包,如果是,則首先從數據包中取出A的IP和MAC地址寫入到ARP列表中;然后將自己的MAC地址寫入到ARP響應包中,告訴A自己是它想找的MAC地址。
-
A收到ARP響應包后,將B的IP和MAC地址寫入ARP列表中,並利用此信息發送數據。如果A一直沒有收到響應包,則表示ARP查詢失敗。
