ARP協議

ARP協議

地址解析協議
地址解析協議,即ARP(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議。主機發送信息時将包含目标IP地址的ARP請求廣播到網絡上的所有主機,并接收返回消息,以此确定目标的物理地址;收到返回消息後将該IP地址和物理地址存入本機ARP緩存中并保留一定時間,下次請求時直接查詢ARP緩存以節約資源。地址解析協議是建立在網絡中各個主機互相信任的基礎上的,網絡上的主機可以自主發送ARP應答消息,其他主機收到應答報文時不會檢測該報文的真實性就會将其記入本機ARP緩存;由此攻擊者就可以向某一主機發送僞ARP應答報文,使其發送的信息無法到達預期的主機或到達錯誤的主機,這就構成了一個ARP欺騙。ARP命令可用于查詢本機ARP緩存中IP地址和MAC地址的對應關系、添加或删除靜态對應關系等。相關協議有RARP、代理ARP。NDP用于在IPv6中代替地址解析協議。
    中文名:地址解析協議 外文名:Address Resolution Protocol(ARP) 别名: 指定時間:1982年11月 制定者:互聯網工程任務組(IETF) 功能:根據IP地址查詢物理地址

工作原理

功能

地址解析協議由互聯網工程任務組(IETF)在1982年11月發布的RFC 826中描述制定。地址解析協議是IPv4中必不可少的協議,而IPv4是使用較為廣泛的互聯網協議版本(IPv6仍處在部署的初期)。

OSI模型把網絡工作分為七層,IP地址在OSI模型的第三層,MAC地址在第二層,彼此不直接打交道。在通過以太網發送IP數據包時,需要先封裝第三層(32位IP地址)、第二層(48位MAC地址)的報頭,但由于發送時隻知道目标IP地址,不知道其MAC地址,又不能跨第二、三層,所以需要使用地址解析協議。使用地址解析協議,可根據網絡層IP數據包包頭中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保證通信的順利進行。

原理

工作過程

主機A的IP地址為192.168.1.1,MAC地址為0A-11-22-33-44-01;

主機B的IP地址為192.168.1.2,MAC地址為0A-11-22-33-44-02;

當主機A要與主機B通信時,地址解析協議可以将主機B的IP地址(192.168.1.2)解析成主機B的MAC地址,以下為工作流程:

第1步:根據主機A上的路由表内容,IP确定用于訪問主機B的轉發IP地址是192.168.1.2。然後A主機在自己的本地ARP緩存中檢查主機B的匹配MAC地址。

第2步:如果主機A在ARP緩存中沒有找到映射,它将詢問192.168.1.2的硬件地址,從而将ARP請求幀廣播到本地網絡上的所有主機。源主機A的IP地址和MAC地址都包括在ARP請求中。本地網絡上的每台主機都接收到ARP請求并且檢查是否與自己的IP地址匹配。如果主機發現請求的IP地址與自己的IP地址不匹配,它将丢棄ARP請求。

第3步:主機B确定ARP請求中的IP地址與自己的IP地址匹配,則将主機A的IP地址和MAC地址映射添加到本地ARP緩存中。

第4步:主機B将包含其MAC地址的ARP回複消息直接發送回主機A。

第5步:當主機A收到從主機B發來的ARP回複消息時,會用主機B的IP和MAC地址映射更新ARP緩存。本機緩存是有生存期的,生存期結束後,将再次重複上面的過程。主機B的MAC地址一旦确定,主機A就能向主機B發送IP通信了。

工作要素

ARP緩存是個用來儲存IP地址和MAC地址的緩沖區,其本質就是一個IP地址-->MAC地址的對應表,表中每一個條目分别記錄了網絡上其他主機的IP地址和對應的MAC地址。每一個以太網或令牌環網絡适配器都有自己單獨的表。當地址解析協議被詢問一個已知IP地址節點的MAC地址時,先在ARP緩存中查看,若存在,就直接返回與之對應的MAC地址,若不存在,才發送ARP請求向局域網查詢。

為使廣播量最小,ARP維護IP地址到MAC地址映射的緩存以便将來使用。ARP緩存可以包含動态和靜态項目。動态項目随時間推移自動添加和删除。每個動态ARP緩存項的潛在生命周期是10分鐘。新加到緩存中的項目帶有時間戳,如果某個項目添加後2分鐘内沒有再使用,則此項目過期并從ARP緩存中删除;如果某個項目已在使用,則又收到2分鐘的生命周期;如果某個項目始終在使用,則會另外收到2分鐘的生命周期,一直到10分鐘的最長生命周期。靜态項目一直保留在緩存中,直到重新啟動計算機為止。

工作媒介

地址解析協議是通過報文工作的。報文包括如下字段:

硬件類型:指明了發送方想知道的硬件接口類型,以太網的值為1;

協議類型:指明了發送方提供的高層協議類型,IP為0800(16進制);

硬件地址長度和協議長度:指明了硬件地址和高層協議地址的長度,這樣ARP報文就可以在任意硬件和任意協議的網絡中使用;

操作類型:用來表示這個報文的類型,ARP請求為1,ARP響應為2,RARP請求為3,RARP響應為4;

發送方硬件地址(0-3字節):源主機硬件地址的前3個字節;

發送方硬件地址(4-5字節):源主機硬件地址的後3個字節;

發送方IP地址(0-1字節):源主機硬件地址的前2個字節;

發送方IP地址(2-3字節):源主機硬件地址的後2個字節;

目标硬件地址(0-1字節):目的主機硬件地址的前2個字節;

目标硬件地址(2-5字節):目的主機硬件地址的後4個字節;

目标IP地址(0-3字節):目的主機的IP地址。

應用

ARP命令

ARP緩存中包含一個或多個表,它們用于存儲IP地址及其經過解析的MAC地址。ARP命令用于查詢本機ARP緩存中IP地址-->MAC地址的對應關系、添加或删除靜态對應關系等。如果在沒有參數的情況下使用,ARP命令将顯示幫助信息。

常見用法

arp -a或arp –g

用于查看緩存中的所有項目。-a和-g參數的結果是一樣的,多年來-g一直是UNIX平台上用來顯示ARP緩存中所有項目的選項,而Windows用的是arp -a(-a可被視為all,即全部的意思),但它也可以接受比較傳統的-g選項。

arp -a Ip

如果有多個網卡,那麼使用arp -a加上接口的IP地址,就可以隻顯示與該接口相關的ARP緩存項目。

arp -s Ip 物理地址

可以向ARP緩存中人工輸入一個靜态項目。該項目在計算機引導過程中将保持有效狀态,或者在出現錯誤時,人工配置的物理地址将自動更新該項目。

arp -d Ip

使用該命令能夠人工删除一個靜态項目。

ARP欺騙

地址解析協議是建立在網絡中各個主機互相信任的基礎上的,它的誕生使得網絡能夠更加高效的運行,但其本身也存在缺陷:

ARP地址轉換表是依賴于計算機中高速緩沖存儲器動态更新的,而高速緩沖存儲器的更新是受到更新周期的限制的,隻保存最近使用的地址的映射關系表項,這使得攻擊者有了可乘之機,可以在高速緩沖存儲器更新表項之前修改地址轉換表,實現攻擊。ARP請求為廣播形式發送的,網絡上的主機可以自主發送ARP應答消息,并且當其他主機收到應答報文時不會檢測該報文的真實性就将其記錄在本地的MAC地址轉換表,這樣攻擊者就可以向目标主機發送僞ARP應答報文,從而篡改本地的MAC地址表。 ARP欺騙可以導緻目标計算機與網關通信失敗,更會導緻通信重定向,所有的數據都會通過攻擊者的機器,因此存在極大的安全隐患。

防禦措施

不要把網絡安全信任關系建立在IP基礎上或MAC基礎上(RARP同樣存在欺騙的問題),理想的關系應該建立在IP+MAC基礎上。

設置靜态的MAC-->IP對應表,不要讓主機刷新設定好的轉換表。

除非很有必要,否則停止使用ARP,将ARP做為永久條目保存在對應表中。

使用ARP服務器。通過該服務器查找自己的ARP轉換表來響應其他機器的ARP廣播。确保這台ARP服務器不被黑。

使用“proxy”代理IP的傳輸。

使用硬件屏蔽主機。設置好路由,确保IP地址能到達合法的路徑(靜态配置路由ARP條目),注意,使用交換集線器和網橋無法阻止ARP欺騙。

管理員定期用響應的IP包中獲得一個RARP請求,然後檢查ARP響應的真實性。

管理員定期輪詢,檢查主機上的ARP緩存。

使用防火牆連續監控網絡。注意有使用SNMP的情況下,ARP的欺騙有可能導緻陷阱包丢失。

若感染ARP病毒,可以通過清空ARP緩存、指定ARP對應關系、添加路由信息、使用防病毒軟件等方式解決。

對比

RARP

地址解析協議是根據IP地址獲取物理地址的協議,而反向地址轉換協議(RARP)是局域網的物理機器從網關服務器的ARP表或者緩存上根據MAC地址請求IP地址的協議,其功能與地址解析協議相反。與ARP相比,RARP的工作流程也相反。首先是查詢主機向網路送出一個RARP Request廣播封包,向别的主機查詢自己的IP地址。這時候網絡上的RARP服務器就會将發送端的IP地址用RARP Reply封包回應給查詢者,這樣查詢主機就獲得自己的IP地址了。

代理ARP

地址解析協議工作在一個網段中,而代理ARP(Proxy ARP,也被稱作混雜ARP(Promiscuous ARP))工作在不同的網段間,其一般被像路由器這樣的設備使用,用來代替處于另一個網段的主機回答本網段主機的ARP請求。

例如,主機PC1(192.168.20.66/24)需要向主機PC2(192.168.20.20/24)發送報文,因為主機PC1不知道子網的存在且和目标主機PC2在同一主網絡網段,所以主機PC1将發送ARP協議請求廣播報文請求192.168.20.20的MAC地址。這時,路由器将識别出報文的目标地址屬于另一個子網(注意,路由器的接口IP地址配置的是28位的掩碼),因此向請求主機回複自己的硬件地址(0004.dd9e.cca0)。之後,PC1将發往PC2的數據包都發往MAC地址0004.dd9e.cca0(路由器的接口E0/0),由路由器将數據包轉發到目标主機PC2。(接下來路由器将為PC2做同樣的代理發送數據包的工作)。代理ARP協議使得子網化網絡拓撲對于主機來說時透明的(或者可以說是路由器以一個不真實的PC2的MAC地址欺騙了源主機PC1)。

NDP

地址解析協議是IPv4中必不可少的協議,但在IPv6中将不再存在地址解析協議。在IPv6中,地址解析協議的功能将由NDP(鄰居發現協議,Neighbor Discovery Protocol)實現,它使用一系列IPv6控制信息報文(ICMPv6)來實現相鄰節點(同一鍊路上的節點)的交互管理,并在一個子網中保持網絡層地址和數據鍊路層地址之間的映射。鄰居發現協議中定義了5種類型的信息:路由器宣告、路由器請求、路由重定向、鄰居請求和鄰居宣告。與ARP相比,NDP可以實現路由器發現、前綴發現、參數發現、地址自動配置、地址解析(代替ARP和RARP)、下一跳确定、鄰居不可達檢測、重複地址檢測、重定向等更多功能。

NDP與ARP的區别

IPv4中地址解析協議是獨立的協議,負責IP地址到MAC地址的轉換,對不同的數據鍊路層協議要定義不同的地址解析協議。IPv6中NDP包含了ARP的功能,且運行于因特網控制信息協議ICMPv6上,更具有一般性,包括更多的内容,而且适用于各種數據鍊路層協議;

地址解析協議以及ICMPv4路由器發現和ICMPv4重定向報文基于廣播,而NDP的鄰居發現報文基于高效的組播和單播。

相關詞條

相關搜索

其它詞條