ARP協議詳解

2021-08-19 01:48:01 字數 3414 閱讀 3263

arp學習總結

1.arp出現原因

arp協議是「address resolution protocol」(位址解析協議)的縮寫。其作用是在乙太網環境中,資料的傳輸所依懶的是mac位址而非ip位址,而將已知ip位址轉換為mac位址的工作是由arp協議來完成的。

在區域網中,網路中實際傳輸的是「幀」,幀裡面是有目標主機的mac位址的。在乙太網中,乙個主機和另乙個主機進行直接通訊,必須要知道目標主機的mac位址。但這個目標mac位址是如何獲得的呢?它就是通過位址解析協議獲得的。所謂「位址解析」就是主機在傳送幀前將目標ip位址轉換成目標mac位址的過程。arp協議的基本功能就是通過目標裝置的ip位址,查詢目標裝置的mac位址,以保證通訊的順利進行。

2.arp對映方式

2.1.靜態對映

靜態對映的意思是要手動建立一張arp表,把邏輯(ip)位址和實體地址關聯起來。這個arp表儲存在網路中的每一台機器上。例如,知道其機器的ip位址但不知道其實體地址的機器就可以通過查arp表找出對應的實體地址。這樣做有一定的侷限性,因為實體地址可能發生變化:

(1)機器可能更換nic(網路介面卡),結果變成乙個新的實體地址。

(2)在某些區域網中,每當計算機加電時,他的實體地址都要改變一次。

(3)移動電腦可以從乙個物理網路轉移到另乙個物理網路,這樣會時實體地址改變。

要避免這些問題出現,必須定期維護更新arp表,此模擬較麻煩而且會影響網路效能。

2.2.動態對映

動態對映時,每次只要機器知道另一台機器的邏輯(ip)位址,就可以使用協議找出相對應的實體地址。已經設計出的實現了動態對映協議的有arp和rarp兩種。arp把邏輯(ip)位址對映為實體地址。rarp把物理位址對映為邏輯(ip)位址。

3.arp原理及流程

在任何時候,一台主機有ip資料報文傳送給另一台主機,它都要知道接收方的邏輯(ip)位址。但是ip位址必須封裝成幀才能通過物理網路。這就意味著傳送方必須有接收方的物理(mac)位址,因此需要完成邏輯位址到實體地址的對映。而arp協議可以接收來自ip協議的邏輯位址,將其對映為相應的實體地址,然後把實體地址遞交給資料鏈路層。

3.1.arp請求

任何時候,當主機需要找出這個網路中的另乙個主機的實體地址時,它就可以傳送乙個arp請求報文,這個報文包好了傳送方的mac位址和ip位址以及接收方的ip位址。因為傳送方不知道接收方的實體地址,所以這個查詢分組會在網路層中進行廣播。(見圖1)

3.2.arp響應

區域網中的每一台主機都會接受並處理這個arp請求報文,然後進行驗證,檢視接收方的ip位址是不是自己的位址,只有驗證成功的主機才會返回乙個arp響應報文,這個響應報文包含接收方的ip位址和實體地址。這個報文利用收到的arp請求報文中的請求方實體地址以單播的方式直接傳送給arp請求報文的請求方。(見圖2)

4.arp協議報文字段抓包解析

4.1.報文格式

硬體型別:16位欄位,用來定義執行arp的網路型別。每個區域網基於其型別被指派乙個整數。例如:乙太網的型別為1。arp可用在任何物理網路上。

協議型別:16位欄位,用來定義使用的協議。例如:對ipv4協議這個欄位是0800。arp可用於任何高層協議

協議長度:8位欄位,用來定義邏輯位址的長度,以位元組為單位。例如:對於ipv4協議的值為4。

操作碼:16位欄位,用來定義報文的型別。已定義的分組型別有兩種:arp請求(1),arp響應(2)。

4.2.arp報文總長度

arp報文的總長度為64位元組。

首先要知道幀的概念 幀是在資料鏈路層傳輸的資料格式,比如乙太網v2,乙太網ieee802.3和ppp等。

所以wireshark抓到的幀是包含幀頭的,即包含乙太網v2的幀頭,長14 bytes;

而arp資料報的長度固定為28 bytes;

幀總長度 = 幀頭 + 網路層包頭 + 傳輸層報文頭 + 應用資料;

而arp請求中arp包已經是最高層,之上沒有傳輸層和應用層,所以總長度為:

幀總長度 = 幀頭 + arp包頭 = 14 + 28 = 42 bytes;

而真正 發包的時為了保證乙太網幀的最小幀長為64 bytes,會在報文裡新增乙個padding欄位,用來填充資料報大小。

使用wireshark抓包時,抓到的包為60 bytes。比乙太網幀的最小幀長掃了4 bytes,原因是因為wireshark抓包時不能抓到資料報最後的crc欄位。

crc欄位是為了校驗乙太網幀的正確性。在資料報填充完成後,回去通過演算法計算乙個值放到資料報的crc欄位中。當接受端收到資料報後,會同樣使用演算法計算乙個值,然後和crc欄位的值進行對比,檢視是否相同。如果不同則證明資料報被更改,如果相同則證明資料報並未被更改。

4.3.報文封裝

arp報文直接封裝在資料鏈路幀中,例如,圖4中,arp分組被封裝在乙太網的幀中。注意,幀中的型別字段指出此幀所攜帶的資料是arp報文。

4.4.報文抓包解析

既然了解了arp的詳細格式,就嘗試獲取arp報文。 例:

如圖5所示,pc1給pc2傳送arp請求,此時使用wireshark獲取arp抓包資料

當pc1傳送的arp請求報文,以廣播報的形式傳送到區域網後,當pc2檢測到ip位址與自己的ip相同,就會傳送給pc1響應報文。

對於arp響應包來說,源ip,目地ip,源mac,目地mac都是知道的。

ps:報文中的padding欄位是填充資料,為了保證幀最少有64個位元組

ARP協議詳解

arp addressresolutionprotocol 位址解析協議用於將計算機的網路位址 ip位址32位 轉化為實體地址 mac位址 48位 rfc826 arp協議是屬於鏈路層的協議,在乙太網中的資料幀從乙個主機到達網內的另一台主機是根據48位的乙太網位址 硬體位址 來確 定介面的,而不是根...

ARP協議詳解

arp addressresolutionprotocol 位址解析協議用於將計算機的網路位址 ip位址32位 轉化為實體地址 mac位址48位 rfc826 arp協議是屬於鏈路層的協議,在乙太網中的資料幀從乙個主機到達網內的另一台主機是根據48位的乙太網位址 硬體位址 來確定介面的,而不是根據3...

ARP協議詳解

arp address resolution protocol 位址解析協議用 於將計算機的網路位址 ip位址32位 轉化為實體地址 mac位址48位 rfc826 arp協議是屬於鏈路層的協議,在乙太網中的資料幀從乙個 主機到達網內的另一台主機是根據48位的乙太網位址 硬體位址 來確定介面的,而不...