ARP協議

ARP,即地址解析協議,實現通過IP地址得知其物理地址。在TCP/IP網絡環境下,每個主機都分配了一個32位的IP地址,這種互聯網地址是在網際範圍標識主機的一種邏輯地址。爲了讓報文在物理網路上傳送,必須知道對方目的主機的物理地址。這樣就存在把IP地址變換成物理地址的地址轉換問題。以以太網環境爲例,爲了正確地向目的主機傳送報文,必須把目的主機的32位IP地址轉換成爲48位以太網的地址。這就需要在互連層有一組服務將IP地址轉換爲相應物理地址,這組協議就是ARP協議

ARP(AddressResolutionProtocol)地址解析協議用於將計算機的網絡地址(IP地址32位)轉化爲物理地址(MAC地址48位)[RFC826]。ARP協議是屬於鏈路層的協議,在以太網中的數據幀從一個主機到達網內的另一臺主機是根據48位的以太網地址(硬件地址)來確定接口的,而不是根據32位的IP地址。內核(如驅動)必須知道目的端的硬件地址才能發送數據。當然,點對點的連接是不需要ARP協議的。

基本功能

  在以太網協議中規定,同一局域網中的一臺主機要和另一臺主機進行直接通信,必須要知道目標主機的MAC地址。而在TCP/IP協議棧中,網絡層和傳輸層只關心目標主機的IP地址。這就導致在以太網中使用IP協議時,數據鏈路層的以太網協議接到上層IP協議提供的數據中,只包含目的主機的IP地址。於是需要一種方法,根據目的主機的IP地址,獲得其MAC地址。這就是ARP協議要做的事情。所謂地址解析(address resolution)就是主機在發送幀前將目標IP地址轉換成目標MAC地址的過程。

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

工作原理

在每檯安裝有TCP/IP協議的電腦裏都有一個ARP緩存表,表裏的IP地址與MAC地址是一一對應的。
  
  

ARP工作原理

以主機A(192.168.1.5)向主機B(192.168.1.1)發送數據爲例。當發送數據時,主機A會在自己的ARP緩存表中尋找是否有目標IP地址。如果找到了,也就知道了目標MAC地址,直接把目標MAC地址寫入幀裏面發送就可以了;如果在ARP緩存表中沒有找到目標IP地址,主機A就會在網絡上發送一個廣播,A主機MAC地址是“主機A的MAC地址”,這表示向同一網段內的所有主機發出這樣的詢問:“我是192.168.1.5,我的硬件地址是"主機A的MAC地址".請問IP地址爲192.168.1.1的MAC地址是什麼?”網絡上其他主機並不響應ARP詢問,只有主機B接收到這個幀時,才向主機A做出這樣的迴應:“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。這樣,主機A就知道了主機B的MAC地址,它就可以向主機B發送信息了。同時A和B還同時都更新了自己的ARP緩存表(因爲A在詢問的時候把自己的IP和MAC地址一起告訴了B),下次A再向主機B或者B向A發送信息時,直接從各自的ARP緩存表裏查找就可以了。ARP緩存表採用了老化機制(即設置了生存時間TTL),在一段時間內(一般15到20分鐘)如果表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP緩存表的長度,加快查詢速度。  ARP攻擊就是通過僞造IP地址和MAC地址實現ARP欺騙,能夠在網絡中產生大量的ARP通信量使網絡阻塞,攻擊者只要持續不斷的發出僞造的ARP響應包就能更改目標主機ARP緩存中的IP-MAC條目,造成網絡中斷或中間人攻擊。  ARP攻擊主要是存在於局域網網絡中,局域網中若有一個人感染ARP木馬,則感染該ARP木馬的系統將會試圖通過“ARP欺騙”手段截獲所在網絡內其它計算機的通信信息,並因此造成網內其它計算機的通信故障。

ARP 常見問題

1. 什麼是ARP

  ARP (Address Resolution Protocol) 是個地址解析協議。最白的說法是:在IP-以太網中,當一個上層協議要發包時,有了節點的IP地址,ARP就能提供該節點的MAC地址。

2. 爲什麼要有ARP?

  OSI 模式把網絡工作分爲七層,彼此不直接打交道,只通過接口(layer interface). IP地址在第三層,MAC地址在第二層。協議在發生數據包時,得先封裝第三層 (IP地址),第二層 (MAC地址)的報頭,但協議只知道目的節點的IP地址,不知道其地址,又不能跨第二、三層,所以得用ARP的服務。

3. 什麼是ARP cache

  ARP cache 是個用來儲存(IP,MAC)地址的緩衝區。當ARP被詢問一個已只IP地址節點的MAC地址時,先在ARP cache 查看,若存在,就直接返回MAC地址,若不存在,才發送ARP request向局域網查詢。

4. ARP 有什麼命令行?

  常用的包括:(格式因操作系統、路由器而異,但作用類似)
  - 顯示ARP cache: show arp;arp -a
  - 清除ARP cache:arp -d

5. 路由器有ARP cache嗎

  有的。路由器若有接口連接到局域網,就會有ARP cache。如果路由器的接口都是點對點的接口(serial interface),就不會有ARP cache.

6. 路由器怎麼使用ARP cache

  路由器在轉發數據包到下一站時,得用下一站的MAC地址來封裝鏈路報頭 (Link header),它向ARP查詢這個地址。如果ARP cache裏沒有這個地址,路由器的ARP會發送ARP Request去查詢。

7. ARP 和Ping 有什麼關係?

  Ping是個常用的網絡工具,檢查遠程主機、路由器是否在線。
  從源主機到目的主機,一路上ping可能被幾個路由器轉發,只要有一個ARP cache裏沒有下一站的MAC地址,路由器就會把ping丟棄 (稱爲ARP Miss)。由於ARP Miss而掉包,是個常見的掉包原因。

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