1. 什麼是arp?
英文原義:address resolution protocol
中文釋義
是乙個位於tcp/ip協議棧中的低層協議,負責將某個ip位址解析成對應的mac位址。
區域網中,網路中實際傳輸的是「幀」,幀裡面是有目標主機的mac位址的。所謂「位址解析」就是主機在傳送幀前將目標ip位址轉換成目標mac位址的過程。arp協議的基本功能就是通過目標裝置的ip位址,查詢目標裝置的mac位址以保證通訊的順利進行。整個轉換過程是一台主機pc1先向目標主機pc2傳送包含ip位址資訊的廣播資料報,即arp請求,然後目標主機向該主機傳送乙個含有ip位址和mac位址的資料報(不再以廣播形式傳送,而是直接傳送給主機pc1
),通過mac位址兩個主機就可以實現資料傳輸了。
2. arp的使用環境
arp只在乙太網中使用。就是說,它只用在本地主機認為目標主機與它直連的情況下,比如,pc1與pc2在同一網段內,那麼pc1與pc2通訊之前就要先用arp得到pc2的mac位址從而封裝到mac幀後進行通訊。若pc1與pc1所在網段外的主機通訊,那麼它就不會用arp,而是檢視主機的路由表,從而把資料報**到閘道器,再由閘道器**出去。點對點的連線是不需要arp協議的,arp協議是使用在廣播型網路中的協議。由於在廣播型網路中主機所能連線的節點數量可以為多台,那麼必須有乙個位址解析協議來解析邏輯位址(ip位址) 和 主機位址(mac位址) 。arp協議正是被設計用來進行此種操作。而ppp協議則是乙個點對點的網路,一台主機只能連線唯一的對端,因此不需要將邏輯位址解析為主機標識,因此在ppp協議中,沒有arp和rarp協議。
3. arp原理
某機器a要向主機b傳送報文,會查詢本地的arp快取表,找到b的ip位址對應的mac位址後,就會進行資料傳輸。如果未找到,則廣播a乙個arp請求報文(攜帶主機a的ip位址ia——實體地址pa),請求ip位址為ib的主機b回答實體地址pb。網上所有主機包括b都收到arp請求,但只有主機b識別自己的ip位址,於是向a主機發回乙個arp響應報文。其中就包含有b的mac位址,a接收到b的應答後,就會更新本地的arp快取,接著使用這個mac位址傳送資料(由網絡卡附加mac位址)。因此,本地快取記憶體的這個arp表是本地網路流通的基礎,而且這個快取是動態的。
4. 例舉arp的工作過程
為了解釋arp協議的作用,就必須理解資料在網路上的傳輸過程。這裡舉乙個簡單的ping的例子。假設我們的計算機ip位址是192.168.1.1,要執行這個命令,ping 192.168.1.2。該命令會通過icmp協議傳送icmp資料報。該過程要經過下面的步驟:
1. 應用程式構造資料報,該示例是產生icmp包,被提交給核心(網路驅動程式);
2. 核心檢查是否能夠轉化該ip位址為mac位址,也就是在本地的arp快取中檢視ip-mac對應表;
3. 如果存在該ip-mac對應關係,那麼跳到步驟7;如果不存在該ip-mac對應關係,那麼接續下面的步驟;
4.核心進行arp廣播,目的地的arp位址是ff-ff-ff-ff-ff-ff,arp命令型別為request(1),其中包含有自己的mac位址;
5. 當192.168.1.2主機接收到該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協議只適用於本網路。
5. 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可不知道被偽造了。
6. free arp
我們知道,如果網路中存在相同ip位址的主機的時候,就會報告ip位址衝突的警告。這是怎麼產生的呢?
比如某主機b規定ip位址為1923168.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位址衝突警告的困擾。
7. arp欺騙的兩種方式
1. 向目標傳送偽造的arp應答資料報,其中傳送方的ip位址為閘道器的位址,而mac位址則為乙個偽造的位址。當目標接收到該arp包,那麼就更新自身的arp快取。如果該欺騙一直持續下去,那麼目標的閘道器快取一直是乙個被偽造的錯誤記錄。當然,如果有些了解的人檢視arp -a,就知道問題的所在了。
2. 這種方式非常狠,能欺騙閘道器。向閘道器傳送偽造的arp應答資料報,其中傳送方的ip位址為目標ip位址,而mac位址則為乙個偽造的位址。這樣,閘道器上的目標arp記錄就是乙個錯誤的,閘道器傳送給目標的資料報都是使用了錯誤的mac位址。這種情況下,目標能夠傳送到資料到閘道器,卻不能接收到閘道器的任何資料。同時,目標自己檢視arp -a卻看不出任何問題來。
8. 如何探測出區域網中的sniffer?
首先,讓我們來看一看區域網中是怎樣傳輸資料的。當乙個資料報的目的位址是區域網內的某台計算機時,此資料報將以廣播的形式被傳送到網內每一台計算機上。而每台計算機的網絡卡將分析資料報中的目的mac位址(即以太**),如果此位址為本計算機mac位址或為廣播位址(ff-ff-ff-ff-ff-ff),那麼,資料報將被接收,而如果不是,網絡卡將直接將其丟棄。但是,這裡有乙個前提,就是接收端計算機的網絡卡是在正常模式下工作的。而如果網絡卡被設定為混雜模式,那麼它就可以接收所有經過的資料報了(當然也包括目的地不是本機的資料報) 。就是說,只要是傳送到區域網內的資料報,都會被設定成混雜模式的網絡卡所接收!這也就是sniffer的基本原理了。
鑑於sniffer的原理是設定網絡卡為混雜模式,那麼,我們就可以想辦法探測網路中被設定為混雜模式的網絡卡,以此來判斷是否存在sniffer。這裡,讓我們再來看看計算機接收資料報的規則。前面已經講過,在正常模式下,首先由網絡卡判斷資料報的目的mac位址,如果為本機mac位址或為廣播位址,那麼資料報將被接收進系統核心,否則將被丟棄。而如果網絡卡設定為混雜模式,那麼所有的資料報都將直接進入系統核心。資料報到達系統核心以後,系統還將進一步對資料報進行篩選:系統只會對目的mac位址為本機mac位址或廣播位址的資料報做出響應——如果接收到的是arp請求報文,那麼系統還將回饋乙個arp應答報文。
但是,不同的是,系統核心和網絡卡對廣播位址的判斷有些不一樣:以windows系統為例,網絡卡會判斷mac位址的所有六位,而系統核心只判斷mac位址的前兩位(win98甚至只判斷前一位),也就是說,對於系統核心而言,正確的廣播位址ff-ff-ff-ff-ff-ff和錯誤的廣播位址ff-ff-ff-ff-ff-fe是一樣的,都被認為是廣播位址,甚至ff-ff-00-00-00-00也會被系統認為是廣播位址!寫到這裡,聰明的讀者大概已經知道該怎麼做了。如果我們構造乙個目的mac位址為ff-ff-ff-ff-ff-fe的arp請求報文,那麼,對於在正常工作模式下的網絡卡,資料報將被丟棄,當然也不會回饋任何報文;而對於在混雜模式下的網絡卡,資料報將被接收進系統核心。而系統核心會認為這個mac位址是廣播位址,因此就會回饋乙個arp應答報文。這樣,我們就可以判斷出這台機器上存在sniffer了。
9. 網絡卡處於正常模式的情況下接收資料報的情況
網絡卡處於正常模式的情況下,它只接收mac為本機和廣播位址的資料報,我想它接收廣播資料報是為了檢測是否有ip衝突,比如free arp的情況,如果沒有衝突就不會做什麼處理。而接收mac為本機的就是為了響應arp請求了。
文章出處:http://blog.chinaunix.net/u/27698/showart_311084.html
ARP協議 位址解析協議
網路層使用的是ip位址,但實際網路的鏈路上傳送資料幀時,最終還是必須使用該網路的硬體位址。arp快取記憶體 ip位址到硬體位址的對映表 那麼一台主機 a 是如何獲知本區域網內其他主機或路由的硬體位址的?主機a廣播arp請求分組 我的ip是 硬體位址是 請告知我ip位址為 主機的硬體位址。本區域網內的...
位址解析協議(ARP)
位址解析協議 arp 作用是將邏輯位址對映為實體地址,即將ip位址和實體地址關聯起來。當主機或路由器想要知道網路上另一台主機或者路由器的實體地址的時候,它就會傳送arp查詢分組。這個分組包括傳送端的實體地址和ip位址,以及接收端的ip位址。因為傳送端不知道接收端的實體地址,所以查詢就在網路上廣播。a...
ARP位址解析協議
資料鏈路如乙太網或令牌環網都有自己的定址機制 常常為48bit位址 這是使用資料鏈路的任何網路層都必須遵從的。乙個網路如乙太網可以同時被不同的網路層使用。例如,一組使用tcp ip協議的主機和另一組使用某種pc網路軟體的主機可以共享相同的電纜。當一台主機把乙太網資料幀傳送到位於同一區域網上的另一台主...