地址解析協議(ARP)

NAOKO發表於2017-12-19

1. 簡介

同一區域網中的一臺主機要和另一臺主機進行直接通訊,必須要知道目標主機的MAC地址。如果知道其IP地址,則可以通過ARP(Address Resolution Protocol,地址解析協議)查詢到其MAC地址。ARP僅用於IPv4,IPv6使用ICMPv6

2. ARP幀格式

ARP幀格式
上圖是一個乙太網封裝上層ARP包後的乙太網幀,其中的一些欄位,如

  • 硬體型別:硬體地址型別,如乙太網的值為0x0001
  • 協議型別:對映的協議的地址型別,如IPv4的值為0x0800
  • 硬體地址長度:硬體地址佔多少個位元組的長度,如乙太網佔6個位元組,該值就為6
  • 協議地址長度:協議地址佔多少個位元組的長度,如IPv4佔4個位元組,該值就為4
  • OP:指出這個ARP包是一個請求或響應包,請求為1,響應為2

3. 原理

ARP抓包結果

以主機A(192.168.1.103)向所在子網的主機B(192.168.1.101)傳送資料為例:

  1. 當主機A傳送資料時,主機A會在本機的ARP快取表中尋找是否有主機B的IP地址。

    • 如果找到就知道主機B的MAC地址為主機B的MAC地址,直接把主機B的MAC地址寫入幀首部傳送資料。
  2. 如果在ARP快取表中沒有找到主機B的MAC地址,主機A就會在網路上廣播一個ARP請求幀。如下圖:

    ARP請求結果

  3. 同一子網上的主機都會收到這個幀,並且根據ARP包的內容更新自己的ARP快取表。但只有主機B接收到這個幀時,單播一個目的IP地址為192.168.1.103的ARP響應幀,其他主機則丟棄這個請求幀。

    ARP響應結果

ARP快取表採用老化機制,在一段時間內如果表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP快取表的長度,加快查詢速度。

相關文章