聊一聊 ARP 協議

協議介紹

 

地址解析協議ARP(Address Resolution Protocol)是一種通過解析網絡層IP地址來尋找數據鏈路層MAC地址的網絡傳輸協議。由互聯網工程任務組(IETF)在1982年11月發佈的RFC 826中描述制定。

 

協議原理

 

下圖是以太網幀結構:

 

媒體訪問控制地址MAC( Media Access Control Address),也稱爲局域網地址(LAN Address),以太網地址(Ethernet Address)或硬件地址(Physical Address),是用來唯一標識網絡接口的地址。

 

局域網中兩臺設備進行以太網通訊,必須要知道對方接口的MAC地址。這時即可利用對方(目標)IP發送ARP廣播請求幀獲得對方(目標)MAC地址。並存入本機對應接口A R P高速緩存的ARP列表中。

 

ARP幀格式如下:

 

協議工作流程

 

局域網中兩臺主機:

主機A的IP地址爲192.168.1.1,MAC地址爲0A-11-22-33-44-01

主機B的IP地址爲192.168.1.2,MAC地址爲0A-11-22-33-44-02

 

以主機A(192.168.1.1)向主機B(192.168.1.2)發送數據爲例:


1.當發送數據時,主機A會在自己的ARP緩存表中尋找是否有目標IP地址。如果找到就知道目標MAC地址爲(0A-11-22-33-44-02),直接把目標MAC地址寫入幀中發送即可。

2.如果在ARP緩存表中沒有找到相對應的IP地址,主機A就會在網絡上發送一個廣播(ARP request),廣播幀中目標MAC地址是“FF.FF.FF.FF.FF.FF”,這表示向同一網段內的所有主機發出這樣的詢問:“192.168.1.2的MAC地址是什麼?”

3.網絡上其他主機並不響應ARP詢問,只有主機B接收到這個幀時,才向主機A做出這樣的迴應(ARP response):“192.168.1.2的MAC地址是0A-11-22-33-44-02”,此迴應爲單播方式。這樣,主機A就知道主機B的MAC地址,它就可以向主機B發送數據。同時它還更新自己的ARP高速緩存(ARP cache),下次再向主機B發送信息時,直接從ARP緩存表裏查找即可。

 

ARP命令

 

Windows中ARP命令用於顯示和修改地址解析協議(ARP)緩存中的條目。

 

語法:​​​​​​​

arp [/a [<Inetaddr>] [/n <ifaceaddr>]]arp [/d <Inetaddr> [<ifaceaddr>]]arp [/s <Inetaddr> <Etheraddr> [<ifaceaddr>]]

參數:

參數 描述
/a [] [/n ] 顯示所有接口的當前 arp 緩存表。

若要顯示特定 IP 地址的 arp 緩存條目,請將arp /a與Inetaddr參數一起使用,其中Inetaddr是一個 IP 地址。 

若要顯示特定接口的 arp 緩存表,請結合 /a參數使用 /n ifaceaddr 參數,其中ifaceaddr是分配給接口的 IP 地址。
/d [] 刪除具有特定 IP 地址的條目,其中Inetaddr是 ip 地址。

若要刪除表中特定接口的條目,請使用ifaceaddr參數,其中ifaceaddr是分配給接口的 IP 地址。

若要刪除所有條目,請使用星號(*)通配符替代Inetaddr
/s [] 將一個靜態條目添加到 arp 緩存,將 IP 地址Inetaddr解析爲物理地址Etheraddr

若要爲特定接口將靜態 arp 緩存條目添加到表中,請使用ifaceaddr參數,其中ifaceaddr是分配給接口的 IP 地址。

 

說明:

  • Inetaddr和ifaceaddr的 IP 地址以點分隔的十進制表示法表示。Inetaddr爲條目IP地址,ifaceaddr爲接口IP。

  • Etheraddr的物理地址包含六個用十六進制表示法表示並由連字符分隔的字節(例如,FF-FF-FF-FF-FF-FF)。

  • 用 /s 參數添加的條目是靜態的(需要管理員身份操作),不會在 arp 緩存中超時。 如果重啓 TCP/IP 協議(如重啓主機、禁用網卡),則會刪除這些條目。 

 

示例:

顯示所有接口的 ARP 緩存表

 

這裏,arp -a 不會列出已斷開或已禁用的網絡接口的ARP緩存。

 

ARP高速緩存

 

爲最大限度地減少廣播 ARP 請求幀的數量,許多 TCP/IP 堆棧實現都包含一個 ARP 緩存,它是一個記錄了最近解析過的 IPv4 地址及其對應的 MAC 地址的表。在發送 ARP 請求幀之前,ARP 將首先檢查此緩存。每個接口都有其自己的 ARP 緩存。

 

ARP 緩存條目可以是動態的(基於 ARP 應答),也可以是靜態的。靜態 ARP 緩存條目是永久性的。動態 ARP 緩存條目擁有與之相關的老化時間,在超過指定的時間後,將從緩存中刪除它們。

 

ARP代理

 

當發送主機和目的主機不在同一個局域網中時,即便知道對方的MAC地址,兩者也不能直接通信,必須經過路由轉發纔可以。所以此時,發送主機通過ARP協議獲得的將不是目的主機的真實MAC地址,而是一臺可以通往局域網外的路由器的MAC地址。此後發送主機發往目的主機的所有幀,都將發往該路由器,通過它向外發送。這種情況稱爲委託ARP或ARP代理(ARP Proxy)。

 

免費ARP

 

免費ARP(gratuitous ARP),他是指主機發送ARP查詢自己的IP地址。通常發生在系統引導期間進行接口配置的時候。

 

兩個作用:

  • 一個主機可以通過它來確定其他主機是否設置了相同的I P地址。

  • 如果發送免費A R P的主機正好改變了MAC地址,那麼這個分組就可以使其他主機高速緩存中其舊的MAC地址進行相應的更新。如果主機收到某個I P地址的A R P請求,而且它已經在接收者的高速緩存中,那麼就要用A R P請求中的發送端MAC地址對高速緩存中相應的內容進行更新。主機接收到任何A R P請求都要完成這個操作( A R P請求是在網上廣播的,因此每次發送A R P請求時網絡上的所有主機都要這樣做)。

 

ARP相關問題

 

下面是西門子SIMATIC自動化系統中兩個與ARP有關的問題,可以幫助大家加深對ARP的理解。

 

CP 343/443 修改MAC地址後,使用TCP/IP協議的診斷連接被拒絕

文檔類型 常問問題 文檔編號 15144693, 文檔發佈日期 2004年1月30日

https://support.industry.siemens.com/cs/cn/zh/view/15144693

 

在網絡中分配了兩次的IP地址的識別

文檔類型 常問問題 文檔編號 14450682, 文檔發佈日期 2004年1月30日

https://support.industry.siemens.com/cs/cn/zh/view/14450682

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章