地址解析協議
出自 MBA智库百科(https://wiki.mbalib.com/)
地址解析協議(Address Resolution Protocol,簡稱ARP)
目錄 |
地址解析協議(ARP)為IP地址到對應的硬體地址之間提供動態映射。ARP用於將電腦的網路地址(IP地址32位)轉化為物理地址(MAC地址48位)[RFC826].ARP協議是屬於鏈路層的協議,在乙太網中的數據幀從一個主機到達網內的另一臺主機是根據48位的乙太網地址(硬體地址)來確定介面的,而不是根據32位的IP地址。內核(如驅動)必須知道目的端的硬體地址才能發送數據。當然,點對點的連接是不需要ARP協議的。
ARP的原理[1]
1.ARP的高速緩存技術
ARP高效運行的關鍵是每台使用ARP的主機中都有一個ARP高速緩存。ARP在緩存中存放了最近被解釋的IP地址到MAC地址之間的映射記錄,以減少廣播量。由於多數網路通信都要連續發送多個報文,所以高速緩存大大提高了ARP的效率。ARP緩存總是為本地子網保留硬體廣播地址(0xffffffffffffh)作為一個永久項。此項使主機能夠接受ARP廣播,當查看緩存時,該項不會顯示。另外,在ARP請求報文中還放人信源機的IP地址和MAC地址的映射,以防止信宿機接著為信源機的MAC地址再來一次ARP請求,形成死鎖。信源機在廣播自己的地址映射時,網路上所有主機都可以將它存人自己的緩存。在新機入網時,主動廣播自己的地址映射,以減少其他主機對該新主機的ARP請求廣播。ARP協議使用一個數據結構atp—table的表。表中每個條目描述一個IP和物理地址的對應。這些條目在IP地址需要轉換的時候創建,隨著時間推移變得陳舊的時候被刪除。
ARP表包含一個指針(arp—tables向量表)的表,把arp—table的條目鏈接在一起。這些條目被緩存,以加速對它們的訪問。每一個條目用它的IP地址的最後兩個位元組做表的索引進行查找,然後跟蹤這個條目鏈,直到找到正確的條目。Linux也緩存從atp—table條目預先建立的硬體頭,用hhcache數據結構的形式進行緩存。網路拓撲結構不斷變化,IP地址可能被重新分配到不同的硬體地址。例如,一些撥號服務為它建立的每一個連接分配一個IP地址。為了讓ARP表中包括最新的條目,每當需要分配一個新的條目而ARP表到達了它的最大尺寸的時候,就查找最舊的條目並刪除它們,從而更新緩存表。每個動態ARP高速緩存項的生存時間從被創建時開始算起為10min。2min內未用則刪除。緩存容量滿時,刪除最老的記錄。
ARP高速緩存保存有動態項和靜態項。動態項是自動添加和刪除的,而靜態ARP項是永久的,可用TCP/IP工具ARP手工載入。靜態ARP高速緩存項用於防止向路由器和伺服器IP地址發出ARP請求。通過添加靜態ARP項可減少ARP請求訪問主機的次數。當網路介面配置改變時,應手工更新靜態ARP項。對於一個ARP請求來說,除目的端硬體地址外的所有其他的欄位都有填充值。當系統收到一份目的端為本機的ARP請求報文後,它就把硬體地址填進去,然後用兩個目的端地址分別替換兩個發送端地址,並把操作欄位置為2,最後把它發送回去。在ARP背後有一個基本概念,那就是網路介面有一個硬體地址(一個48bir的值,以標識不同的乙太網或令牌環網路介面),在硬體層次上進行的數據幀交換必須使用正確的硬體地址。因此,僅僅知道主機的IP地址並不能讓內核發送一幀數據給主機。內核(如乙太網驅動程式)必須知道目的端的硬體地址才能發送數據。
ARP的功能是在32bitlP地址和採用不同網路技術的硬體地址之間提供動態映射。點對點鏈路不使用ARP。當設置這些鏈路時(一般在引導過程進行),必須告知內核鏈路每一端的IP地址,並不涉及像乙太網地址這樣的硬體地址。
2.ARP高速緩存超時設置
在ARP高速緩存中的表項一般都要設置超時值。從伯克利系統演變而來的系統一般對完整的表項設置超時值為20min,而對不完整的表項(例如在乙太網上對一個不存在的主機發出ARP請求)設置超時值為3min。當這些表項再次使用時,這些實現一般都把超時值重新設為20min.
3.ARP命令
ARP高速緩存在ARP的運行過程中非常關鍵。高速緩存中的每一項內容都有一個定時器,根據它來刪除不完整和過時的表項。ARP命令加上參數—a可顯示ARP高速緩存中的所有內容。超級用戶可以用參數-d來刪除ARP高速緩存中的某一項內容(可以在運行一些例子之前使用該命令格式,以看清楚ARP的交換過程)。另外,可以通過參數—s來增加高速緩存中的內容。這個參數需要主機名和乙太網地址:對應於主機名的IP地址和乙太網地址被增加到高速緩存中。新增加的內容是永久性的(比如,它沒有超時值),除非在命令行的末尾附上關鍵字temp。位於命令行末尾的關鍵字pub和,s參數一起,可以使系統起著主機ARP代理的作用。系統將回答與主機名對應的IP地址的ARP請求,並以指定的乙太網地址作為回答。如果廣播的地址是系統本身,那麼系統就為指定的主機名起著委托ARP代理的作用。
ARP的使用[2]
為了查看受害機器的ARP表,我們所使用的命令非常類似於在Windows實時響應中所使用的命令:
victim#./arp—an
從受害系統上返回的ARP表如下:
?(192.168.1.1,at00:BD:81:43:07:03[ether]on ethO
結果顯示了IP地址為192.168.1.1的網路介面具有MAC地址00:BD:81:43:07:03。其他信息將有助於在不能控制IP地址時,在網路上追蹤IP地址為192.168.1.1的機器。可以檢查每一臺機器,直至發現MAC地址為06:BD:8l:43:07:03的機器。
警告:在許多操作系統中,具有足夠特權的用戶可以修改他自己的MAC地址(和IP地址)。在Windows或Unix機器中,這一行為是可能的。
從邏輯Internet地址到對應的物理硬體地址需要進行翻譯。
ARP 緩存表是可以查看的,也可以添加和修改。在命令提示符下,輸入“arp -a”就可以查看ARP 緩存表中的內容了。用“arp -d”命令可以刪除ARP 表中某一行的內容;用“arp -s”可以手動在ARP 表中指定IP 地址與MAC 地址的對應。