ARP協議是以太網等數據鏈路層的基礎協議,負責完成IP地址到硬件地址的映射。
報文結構
ARP報文結構如下:
物理網絡類型 |
協議類型 |
|
物理地址長度 |
協議地址長度 |
操作 |
發送方物理地址 |
||
發送方IP地址 |
||
目標物理地址 |
||
目標IP地址 |
物理網絡類型:也稱為硬件類型,指明硬件類型,以太網為1。
協議類型:指明發送者映射到數據鏈路標識的網絡協議的類型,IP對應0x0806.
物理地址長度:MAC地址長度為6,單位字節。
協議地址長度:網絡層地址的長度,即IP地址長度為4,單位字節。
操作:操作指明ARP的操作類型,ARP請求為1,ARP響應為2,RARP請求為3,RARP響應為4。
在以太網環境下的ARP報文,硬件地址為48位。
工作原理
每個主機都設有一個ARP高速緩存(ARP cache),里面有本局域網上的各主機和路由器的IP地址到物理地址的映射表(運行md:arp –a可以查看)。
具體的工作過程如下:
(1)假如當主機A要向本局域網中的某個主機B發送IP數據報時,如果在ARP高速緩存中查看有無主機B的IP地址。如有,就在ARP高速緩存中查出其對應的硬件地址,在把這個硬件地址寫入MAC幀中,然后通過局域網把該MAC幀發送到此硬件地址。
(2)但是在高速緩存中,也可能查不到主機B的IP地址的項目。可能是主機B才入網,或者是主機A才剛開啟,其高速緩存還是空的。這時,主機A會自動運行ARP,然后按照以下步驟找到主機B的硬件地址。
1)當主機A需要解析一個IP地址對應的MAC地址時,ARP進程在本局域網上會廣播發送ARP請求報文。
2)在本局域網上的所有主機上運行的ARP進程都收到此ARP請求報文。當主機B收到主機A發送的ARP請求報文,並看到自己的IP地址后,會進行應答,即向主機A發送ARP響應報文,該報文是單播報文。同時,就把主機A的地址映射寫入主機B自己的ARP高速緩存中,方便主機B向主機A發送數據。如圖所示:
3)發起請求的主機A接收到主機B的ARP響應報文后,同樣會將響應報文中發送者的IP地址和MAC地址的映射關系寫入ARP高速緩存中。
ARP把保存在高速緩存中的每一個映射地址項目都設置生存時間,凡是超過生存時間的項目就從高速緩存中刪除掉。用於防止存入高速緩存中的主機物理地址突然改變(例如主機B的網絡適配器突然壞掉,B立即更換了一塊,其硬件地址就改變了)。