ARP協議詳解

2021-06-13 11:08:45 字數 3156 閱讀 4931

arp(address resolution protocol)位址解析協議用 於將計算機的網路位址(ip位址32位)轉化為實體地址(mac位址48位)[rfc826]。arp協議是屬於鏈路層的協議,在乙太網中的資料幀從乙個 主機到達網內的另一台主機是根據48位的乙太網位址(硬體位址)來確定介面的,而不是根據32位的ip位址。核心(如驅動)必須知道目的端的硬體位址才能 傳送資料。當然,點對點的連線是不需要arp協議的。

1、簡介

arp協議的資料結構:

typedef struct arphdr

arphdr,*parphdr;

為了解釋arp協議的作用,就必須理解資料在網路上的傳輸過程。這裡舉乙個簡單的ping例子。

假設我們的計算機ip位址是192.168.1.1,要執行這個命令:ping192.168.1.2。該命令會通過icmp協議傳送icmp資料報。該過程需要經過下面的步驟:

1、應用程式構造資料報,該示例是產生icmp包,被提交給核心(網路驅動程式);

2、核心檢查是否能夠轉化該ip位址為mac位址,也就是在本地的arp快取中檢視ip-mac對應表[1];

3、如果存在該ip-mac對應關係,那麼跳到步驟7;如果不存在該ip-mac對應關係,那麼接續下面的步驟;

4、核心進行arp廣播,目的地的mac位址是ff-ff-ff-ff-ff-ff,arp命令型別為request(1),其中包含有自己的mac位址;

5、當192.168.1.2主機接收到該arp請求後,將源主機的ip位址及mac更新至自己的arp緩衝中,然後傳送乙個arp的reply(2)命令,其中包含自己的mac位址;

6、本地獲得192.168.1.2主機的ip-mac位址對應關係,並儲存到arp快取中;   7、核心將把ip轉化為mac位址,然後封裝在乙太網頭結構中,再把資料傳送出去;

使用arp-a命令就可以檢視本地的arp快取內容,所以,執行乙個本地的ping命令後,arp快取就會存在乙個目的ip的記錄了。當然,如果你的資料報是傳送到不同網段的目的地,那麼就一定存在一條閘道器的ip-mac位址對應的記錄。

知道了arp協議的作用,就能夠很清楚地知道,資料報的向外傳輸很依靠arp協議,當然,也就是依賴arp快取。要知道,arp協議的所有操作都是核心自動完成的,同其他的應用程式沒有任何關係。同時需要注意的是,arp協議只使用於本網路。

2.arp協議的利用和相關原理介紹

一、交換網路的嗅探

arp協議並不只在傳送了arp請求才接收arp應答。當計算機接收到arp應答資料報的時 候,就會對本地的arp快取進行更新,將應答中的ip和mac位址儲存在arp快取中。因此,在上面的假設網路中,b向a傳送乙個自己偽造的arp應答, 而這個應答中的資料為傳送方ip位址是192.168.10.3(c的ip位址),mac位址是dd-dd-dd-dd-dd-dd(c的mac位址本來 應該是cc-cc-cc-cc-cc-cc,這裡被偽造了)。當a接收到b偽造的arp應答,就會更新本地的arp快取,將本地的ip-mac對應表更換 為接收到的資料格式,由於這一切都是a的系統核心自動完成的,a可不知道被偽造了。

arp欺騙的主要用途就是進行在交換網路中的嗅探。有關交換網路的嗅探不是本文的討論內容。

二、ip位址衝突

我們知道,如果網路中存在相同ip位址的主機的時候,就會報告出ip位址衝突的警告。這是怎麼產生的呢?

比如某主機b規定ip位址為192.168.0.1,如果它處於開機狀態,那麼其他機器a更改ip位址為192.168.0.1就會造成ip位址衝突。其原理就是:主機a在連線網路(或 更改ip位址)的時候就會向網路傳送arp包廣播自己的ip位址,也就是freearp。如果網路中存在相同ip位址的主機b,那麼b就會通過arp來 reply該位址,當a接收到這個reply後,a就會跳出ip位址衝突的警告,當然b也會有警告。

因此用arp欺騙可以來偽造這個arpreply,從而使目標一直遭受ip位址衝突警告的困擾。

三、阻止目標的資料報通過閘道器

比如在乙個區域網內通過閘道器上網,那麼連線外部的計算機上的arp快取中就存在閘道器ip-mac對應記錄。如果,該記錄被更改,那麼該計算機向外傳送的資料報總是傳送到了錯誤的閘道器硬體位址上,這樣,該計算機就不能夠上網了。

這裡也主要是通過arp欺騙進行的。有兩種辦法達到這樣的目的。

1、向目標傳送偽造的arp應答資料報,其中傳送方的ip位址為閘道器的位址,而mac位址則為 乙個偽造的位址。當目標接收到該arp包,那麼就更新自身的arp快取。如果該欺騙一直持續下去,那麼目標的閘道器快取一直是乙個被偽造的錯誤記錄。當然, 如果有些了解的人檢視arp-a,就知道問題所在了。

2、這種方法非常狠,欺騙閘道器。向閘道器傳送偽造的arp應答資料報,其中傳送方的ip位址為目 標的ip位址,而mac位址則為乙個偽造的位址。這樣,閘道器上的目標arp記錄就是乙個錯誤的,閘道器傳送給目標的資料報都是使用了錯誤的mac位址。這種 情況下,目標能夠傳送資料到閘道器,卻不能接收到閘道器的任何資料。同時,目標自己檢視arp -a卻看不出任何問題來。

四、通過arp檢測混雜模式節點

在混雜模式中,網絡卡進行包過濾不同於普通模式。本來在普通模式下,只有本地位址的資料報或者廣播(多播等)才會被網絡卡提交給系統核心,否則的話,這些資料報就直接被網絡卡拋棄。現在,混合模式讓所有經過的資料報都傳遞給系統核心,然後被sniffer等程式利用。

通過特殊設計的arp請求可以用來在一定程度上檢測處於混雜模式的節點,比如對網路中的每個節 點都傳送mac位址為ff-ff-ff-ff-ff-fe的arp請求。對於網絡卡來說這不是乙個廣播位址(ff-ff-ff-ff-ff-ff),所以處 於普通模式的節點就會直接拋棄該資料報,但是多數作業系統核心都認為這是乙個廣播位址,如果有一般的sniffer程式存在,並設定網絡卡為混雜模式,那麼系統核心就會作出應答,這樣就可以判斷這些節點是否存在嗅探器了。

可以檢視,很多基於arp的攻擊都是通過arp欺騙實現的。至於arp欺騙的防範,還是盡可能使用靜態的arp。對於win,使用arp-s來進行靜態arp的設定。當然,如果能夠完全使用靜態的ip+mac對應,就更好了,因為靜態的arp快取只是相對的。

當然,可以有一些方法來實現arp欺騙的檢測。設定乙個arp的嗅探器,其中維護著乙個本地網 絡的ip-mac位址的靜態對應表,檢視所有經過的arp資料,並檢查其中的ip-mac對應關係,如果捕獲的ip-mac對應關係和維護的靜態對應關係 對應不上,那麼就表明是乙個欺騙的arp資料報了。

乙個arp資料報傳送程式源**和編譯好的exe程式可以參考arpsender程式。注意:需要先安裝winpcap。

ARP協議詳解

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

ARP協議詳解

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

ARP協議詳解

arp學習總結 1.arp出現原因 arp協議是 address resolution protocol 位址解析協議 的縮寫。其作用是在乙太網環境中,資料的傳輸所依懶的是mac位址而非ip位址,而將已知ip位址轉換為mac位址的工作是由arp協議來完成的。在區域網中,網路中實際傳輸的是 幀 幀裡面...