1. 簡介
同一區域網中的一臺主機要和另一臺主機進行直接通訊,必須要知道目標主機的MAC地址。如果知道其IP地址,則可以通過ARP(Address Resolution Protocol,地址解析協議)查詢到其MAC地址。ARP僅用於IPv4,IPv6使用ICMPv6。
2. ARP幀格式
上圖是一個乙太網封裝上層ARP包後的乙太網幀,其中的一些欄位,如- 硬體型別:硬體地址型別,如乙太網的值為0x0001
- 協議型別:對映的協議的地址型別,如IPv4的值為0x0800
- 硬體地址長度:硬體地址佔多少個位元組的長度,如乙太網佔6個位元組,該值就為6
- 協議地址長度:協議地址佔多少個位元組的長度,如IPv4佔4個位元組,該值就為4
- OP:指出這個ARP包是一個請求或響應包,請求為1,響應為2
3. 原理
以主機A(192.168.1.103)向所在子網的主機B(192.168.1.101)傳送資料為例:
-
當主機A傳送資料時,主機A會在本機的ARP快取表中尋找是否有主機B的IP地址。
- 如果找到就知道主機B的MAC地址為
主機B的MAC地址
,直接把主機B的MAC地址寫入幀首部傳送資料。
- 如果找到就知道主機B的MAC地址為
-
如果在ARP快取表中沒有找到主機B的MAC地址,主機A就會在網路上廣播一個ARP請求幀。如下圖:
-
同一子網上的主機都會收到這個幀,並且根據ARP包的內容更新自己的ARP快取表。但只有主機B接收到這個幀時,單播一個目的IP地址為192.168.1.103的ARP響應幀,其他主機則丟棄這個請求幀。
ARP快取表採用老化機制,在一段時間內如果表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP快取表的長度,加快查詢速度。