ARP協議


地址解析協議(Address Resolution Protocol ,ARP )是在局域網(local-area network,LAN)中,將一個不斷變化的IP地址連接到固定不變物理機器地址也稱為媒體訪問控制地址(media access control (MAC) address)的協議或者過程。ARP協議可以認為是IP地址與MAC地址之間的相互映射,IP地址和MAC地址的長度不同,常用IPv4長度是32位,MAC地址長度是48位,為了方便系統能夠識別另一個系統,IP地址和MAC地址的映射翻譯是有必要的,可以想象現實情況,如果你給另一個人寫信,只寫姓名,該信是不能送達的,網絡通信也是一樣,IP地址可以認為是姓名,而MAC地址則是地址。

OSI( Open Systems Interconnection ,OSI))模型如圖1使用分層來為IT團隊提供一個特定網絡系統的可視化視圖。這有助於確定哪個層影響網絡上安裝的哪個應用程序、設備或軟件,並進一步確定哪個IT或工程專業人員負責管理該層。在網絡通信中,主機和主機之間通信符合OSI7層模型,從上到下進行數據封裝,然后向外發出,在局域網的通信中,不僅需要IP的封裝還需要源目的MAC的封裝。MAC地址處於鏈路層如圖2所示。在兩個物理連接的設備之間建立和終止連接,以便能夠進行數據傳輸,而IP地址處於網絡層負責通過不同路由器轉發數據包的層。而ARP協議就在數據鏈路層和網絡層之間工作。

  

圖1:OSI 7層模型

  圖2:MAC地址所處鏈路層

 ARP協議如何工作?

當一台新計算機加入一個局域網(LAN)時,它將收到一個用於識別和通信的唯一IP地址。數據包到達一個網關,目的地是一個特定的主機。網關或網絡上允許數據從一個網絡流到另一個網絡的硬件部件,要求ARP程序找到與IP地址匹配的MAC地址,也就是目的主機的物理地址。此時ARP緩存發揮作用,ARP緩存維護一個IP地址和MAC地址一一匹配的列表。能夠通過IP地址在ARP緩存中找到對應的MAC地址。注意ARP緩存是動態的,但網絡中的用戶也可以配置包含IP地址和MAC地址的靜態ARP表。ARP緩存保存在IPv4以太網中的所有操作系統上。每當一台設備請求一個MAC地址向另一台連接到局域網的設備發送數據時,設備就會驗證它的ARP緩存,以確定IP地址到MAC地址的連接是否已經完成。如果它存在,則不需要新的請求。但是,如果轉換還沒有進行,就會發送網絡地址請求,並執行ARP。

ARP緩存大小是受設計限制的,地址往往只在緩存中停留幾分鍾。定期清理以釋放空間。這種設計還旨在保護隱私和安全,防止IP地址被網絡攻擊者竊取或欺騙。MAC地址是固定的,而IP地址是不斷更新的。在清除過程中,未使用的地址被刪除;與沒有連接到網絡或甚至沒有通電的計算機進行通信的失敗嘗試相關的任何數據也是如此。

下面以示意圖的形式分析ARP工作原理。

 圖3:PC1與PC2通信

在局域網內,PC1嘗試與PC2進行通信如圖3,此時PC1知道PC2的IP地址,簡單地Ping通信,則在PC1命令窗口輸入ping IP2,根據OSI數據封裝順序,PC1會自頂向下(從應用層到物理層)封裝數據,然后發送出去。

  

   圖4:PC1與PC2通信失敗

如圖4所示,PC1與PC2通信失敗,原因在於PC1僅知道PC2的IP地址還不夠,還需要PC2的物理地址,映射到現實就是給人寄信,不僅需要這個人的姓名還需要其地址一樣。僅知道PC2的IP地址而不知道PC2的MAC地址是無法進行通信的,原因是信息不完整。

ARP協議就是讓PC1獲取PC2的MAC地址。

   圖5: ARP請求和響應

如圖5所示,PC1通過ARP請求和響應得到PC2的MAC地址,再進行數據封裝及發送,如圖6所示。至此PC1和PC2實現正常通信。ARP的實現是通過問答的形式完成,與HTTP請求和響應類似。PC1在獲得IP2的MAC地址后,會在本地進行緩存形成ARP緩存表,以供后需。

  圖6:PC1封裝數據並發送

ARP緩存表是具有時效性的緩存機制,在電腦重啟或者通信設備重啟后,會清空緩存表,等下次通信需要時,會重新進行ARP請求。如圖7所示,使用arp -a可以查詢本地ARP緩存表。

  圖7:本地查詢ARP緩存表

ARP的廣播請求和單播回應

上面簡單圖解ARP的功能,但事實並不是這樣簡單,當LAN里有很多計算機時如存在PC3、PC4等,PC1如何獲得PC2的MAC地址呢?如圖8所示,在LAN內通過有線路由或者無線WIFI新加入兩個PC,PC1如何與PC2通信呢?

   圖8:LAN多機狀態(有線和無線均適用)

此時,ARP協議采用以太網廣播形式將請求包發送出去,交換機或WiFi設備(無線路由)收到廣播包時,會將數據發送給同一局域網的其他所有主機。在這里廣播是一種數據包發送方式,主要特點是二層封裝時目的MAC是(ffff.ffff.ffff.ffff)或三層封裝時目的IP是(255.255.255.255),目的地址如果是最大的即為廣播,廣播根據所在層次可分為二層廣播和三層廣播,根據發生范圍可分為本地廣播和定向廣播。

    圖9:PC1發送廣播請求包,PC2發送單播響應包

如圖9所示,PC1發送的請求廣播包同時被其他主機收到,然后PC3和PC4收到之后(發現不是問自己)則丟棄。而PC2收到之后,根據請求包里面的信息(有自己的IP地址),判斷是給自己的,所以不會做丟棄動作,而是返回ARP回應包。因此,ARP是廣播發送請求,單播返回應答。

ARP協議解析

利用wireshark可以對ARP數據包進行分析。如圖10所示,ARP請求以廣播形式實現,發送數據包包含自己的MAC地址及IP地址,請求對方的MAC地址。

    圖10:ARP請求數據包

  圖11:ARP響應數據包

如圖11所示,響應數據包包含IP地址和MAC地址,且以單播形式發送響應。

ARP協議字段包含:

  • Hardware type :硬件類型,標識鏈路層協議,占2字節
  • Protocol type: 協議類型,標識網絡層協議,占2字節
  • Hardware size :硬件地址大小,標識MAC地址長度,占1字節
  • Protocol size: 協議地址大小,標識IP地址長度,占1字節
  • Opcode: 操作代碼,標識ARP數據包類型,1表示請求,2表示回應,占2字節
  • Sender MAC address :發送者MAC地址,占6字節
  • Sender IP address :發送者IP,占4字節
  • Target MAC address :目標MAC,此處全0表示請求,占6字節
  • Target IP address: 目標IP,占4字節

ARP與DHCP、DNS的關系是什么,如何區分?

ARP是將一個動態IP地址連接到一個物理機器的MAC地址的過程。IP地址在設計上是不斷變化的,原因很簡單,這樣做可以給用戶提供安全和隱私。但是,IP地址的變化不應該是完全隨機的。應該有從特定網絡中可用的數字范圍內分配IP地址的規則。這有助於防止不同機器分配相同IP地址問題出現,這些規則被稱為動態主機配置協議(Dynamic Host Configuration Protocol,DHCP)。IP地址作為計算機的身份是很重要的,因為它們需要執行互聯網搜索。當用戶搜索域名或統一資源定位器(URL)時,他們使用字母順序的名稱。另一方面,計算機使用數字IP地址將域名與服務器關聯起來。為了連接兩者,域名系統(Domain Name System,DNS)服務器被用來將一個IP地址從一個令人困惑的數字字符串也就是IP地址轉換成一個更容易讀懂的域名,反之亦然。

ARP的類型

ARP有不同的版本和用例類型。

  •  代理ARP(Proxy ARP)

       代理ARP是一種技術,通過這種技術,一個給定網絡上的代理設備對一個不存在於該網絡上的IP地址的ARP請求進行應答。代理知道流量目的地的位置,並提供自己的MAC地址作為目的地。

  •  無償ARP(Gratuitous ARP)

       免費ARP像一個管理過程,作為一種讓網絡上的主機簡單地宣布或更新其IP到MAC地址的方式。免費ARP是指ARP請求將IP地址轉換為MAC地址的過程。

  •  翻轉ARP(Reverse ARP ,RARP)

       不知道自己IP地址的主機可以使用反向地址解析協議(RARP)進行發現。

  •  逆向ARP(Inverse ARP ,IARP)

       ARP使用IP地址來查找MAC地址,而IARP使用MAC地址來查找IP地址。

ARP在網絡中用途

ARP是必要的,因為連接到網絡的主機或計算機的軟件地址(IP地址)需要轉換為硬件地址(MAC地址)。如果沒有ARP,一個主機將無法找出另一個主機的硬件地址。局域網保存一個表或目錄,將不同設備的IP地址映射到MAC地址,包括該網絡上的端點和路由器。

這個表或目錄不由用戶維護,甚至不由IT管理員維護。相反,ARP協議會動態地創建條目。如果用戶的設備不知道目標主機的硬件地址,設備就會向網絡上的每一台主機發送請求此地址的消息。當正確的目標主機得知請求后,它將用它的硬件地址返回,然后存儲在ARP目錄或表中。

ARP相關的網絡攻擊

ARP欺騙(ARP Spoofing)也被稱為ARP中毒路由(ARP poison routing)或ARP緩存中毒( ARP cache poisoning)。這是一種惡意攻擊,網絡罪犯向目標局域網發送虛假ARP消息,意圖將其MAC地址與網絡內合法設備或服務器的IP地址連接起來。該鏈接允許來自受害者計算機的數據被發送到攻擊者的計算機,而不是最初的目的地。

ARP欺騙攻擊是危險的,因為敏感信息可以在受害者不知情的情況下在計算機之間傳遞。ARP欺騙還會使其他形式的網絡攻擊成為可能,包括以下幾種:

  • Man-in-the-Middle (MTM) Attacks

       中間人(MITM)攻擊是一種竊聽,網絡攻擊者在網絡通信雙發之間攔截、中繼和更改消息,而這雙方並不知道有第三方參與其中,從而竊取信息。攻擊者可能試圖控制和操縱其中一方或雙方的消息,以獲取敏感信息。因為這些類型的攻擊使用復雜的軟件來模仿對話的風格和語氣(包括那些基於文本和語音的對話),MITM攻擊很難被攔截和阻止。MITM攻擊發生在惡意軟件被分發並控制受害者的網絡瀏覽器時。瀏覽器本身對攻擊者並不重要,但受害者分享的數據非常重要,因為它可以包括用戶名、密碼、帳戶號碼和其他在聊天和在線討論中分享的敏感信息。一旦他們掌握了控制權,攻擊者就會在受害者和合法站點之間創建一個代理,通常使用一個假冒的相似站點,來攔截受害者和合法站點之間的任何數據。攻擊者利用網上銀行和電子商務網站來獲取個人信息和財務數據。

  • Denial-of-Service Attacks

       拒絕服務(DoS)攻擊是指網絡攻擊者試圖用流量淹沒系統、服務器和網絡,以阻止用戶訪問它們。一個更大規模的DoS攻擊被稱為分布式拒絕服務(DDoS)攻擊,在這種攻擊中,使用大量的源流量來淹沒系統的流量。這些類型的攻擊利用網絡協議中的已知漏洞。當大量的報文被發送到有漏洞網絡時,很容易導致業務過載而不可用。

  • Session Hijacking

       當網絡攻擊者竊取用戶的會話ID,接管該用戶的web會話,並偽裝成該用戶時,就會發生會話劫持。有了會話ID,攻擊者就可以執行用戶被授權在該網絡上執行的任何任務或活動。當用戶試圖訪問系統或登錄受限制的網站或web服務時,就會發生身份驗證。會話ID存儲在瀏覽器的cookie中,進行會話劫持的攻擊者會攔截認證過程並實時入侵。

 

                                       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM