Arp命令
ARP
(地址解析協(xié)議)
?
功能
地址解析協(xié)議由互聯(lián)網(wǎng)工程任務(wù)組(IETF)在1982年11月發(fā)布的RFC 826中描述制定。[1]??地址解析協(xié)議是IPv4中必不可少的協(xié)議,而IPv4是使用較為廣泛的互聯(lián)網(wǎng)協(xié)議版本(IPv6仍處在部署的初期)。 OSI模型把網(wǎng)絡(luò)工作分為七層,IP地址在OSI模型的第三層,MAC地址在第二層,彼此不直接打交道。在通過以太網(wǎng)發(fā)送IP數(shù)據(jù)包時,需要先封裝第三層(32位IP地址)、第二層(48位MAC地址)的報頭,但由于發(fā)送時只知道目標IP地址,不知道其MAC地址,又不能跨第二、三層,所以需要使用地址解析協(xié)議。使用地址解析協(xié)議,可根據(jù)網(wǎng)絡(luò)層IP數(shù)據(jù)包包頭中的IP地址信息解析出目標硬件地址(MAC地址)信息,以保證通信的順利進行。[2]原理
工作過程
主機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通信時,地址解析協(xié)議可以將主機B的IP地址(192.168.1.2)解析成主機B的MAC地址,以下為工作流程: 第1步:根據(jù)主機A上的路由表內(nèi)容,IP確定用于訪問主機B的轉(zhuǎn)發(fā)IP地址是192.168.1.2。然后A主機在自己的本地ARP緩存中檢查主機B的匹配MAC地址。 第2步:如果主機A在ARP緩存中沒有找到映射,它將詢問192.168.1.2的硬件地址,從而將ARP請求幀廣播到本地網(wǎng)絡(luò)上的所有主機。源主機A的IP地址和MAC地址都包括在ARP請求中。本地網(wǎng)絡(luò)上的每臺主機都接收到ARP請求并且檢查是否與自己的IP地址匹配。如果主機發(fā)現(xiàn)請求的IP地址與自己的IP地址不匹配,它將丟棄ARP請求。 第3步:主機B確定ARP請求中的IP地址與自己的IP地址匹配,則將主機A的IP地址和MAC地址映射添加到本地ARP緩存中。 第4步:主機B將包含其MAC地址的ARP回復(fù)消息直接發(fā)送回主機A。 第5步:當主機A收到從主機B發(fā)來的ARP回復(fù)消息時,會用主機B的IP和MAC地址映射更新ARP緩存。本機緩存是有生存期的,生存期結(jié)束后,將再次重復(fù)上面的過程。主機B的MAC地址一旦確定,主機A就能向主機B發(fā)送IP通信了。工作要素:ARP緩存
查看ARP緩存 ARP緩存是個用來儲存IP地址和MAC地址的緩沖區(qū),其本質(zhì)就是一個IP地址-->MAC地址的對應(yīng)表,表中每一個條目分別記錄了網(wǎng)絡(luò)上其他主機的IP地址和對應(yīng)的MAC地址。每一個以太網(wǎng)或令牌環(huán)網(wǎng)絡(luò)適配器都有自己單獨的表。當?shù)刂方馕鰠f(xié)議被詢問一個已知IP地址節(jié)點的MAC地址時,先在ARP緩存中查看,若存在,就直接返回與之對應(yīng)的MAC地址,若不存在,才發(fā)送ARP請求向局域網(wǎng)查詢。 為使廣播量最小,ARP維護IP地址到MAC地址映射的緩存以便將來使用。ARP緩存可以包含動態(tài)和靜態(tài)項目。動態(tài)項目隨時間推移自動添加和刪除。每個動態(tài)ARP緩存項的潛在生命周期是10分鐘。新加到緩存中的項目帶有時間戳,如果某個項目添加后2分鐘內(nèi)沒有再使用,則此項目過期并從ARP緩存中刪除;如果某個項目已在使用,則又收到2分鐘的生命周期;如果某個項目始終在使用,則會另外收到2分鐘的生命周期,一直到10分鐘的最長生命周期。靜態(tài)項目一直保留在緩存中,直到重新啟動計算機為止。[2]?工作媒介:報文
地址解析協(xié)議是通過報文工作的。報文包括如下字段:| 硬件類型 | 協(xié)議類型 | |
| 硬件地址長度 | 協(xié)議長度 | 操作類型 |
| 發(fā)送方硬件地址(0-3字節(jié)) | ||
| 發(fā)送方硬件地址(4-5字節(jié)) | 發(fā)送方IP地址(0-1字節(jié)) | |
| 發(fā)送方IP地址(2-3字節(jié)) | 目標硬件地址(0-1字節(jié)) | |
| 目標硬件地址(2-5字節(jié)) | ||
| 目標IP地址(0-3字節(jié)) | ||
應(yīng)用
ARP命令
ARP命令 ARP緩存中包含一個或多個表,它們用于存儲IP地址及其經(jīng)過解析的MAC地址。ARP命令用于查詢本機ARP緩存中IP地址-->MAC地址的對應(yīng)關(guān)系、添加或刪除靜態(tài)對應(yīng)關(guān)系等。如果在沒有參數(shù)的情況下使用,ARP命令將顯示幫助信息。 常見用法 arp -a或arp –g 用于查看緩存中的所有項目。-a和-g參數(shù)的結(jié)果是一樣的,多年來-g一直是UNIX平臺上用來顯示ARP緩存中所有項目的選項,而Windows用的是arp -a(-a可被視為all,即全部的意思),但它也可以接受比較傳統(tǒng)的-g選項。 arp -a Ip 如果有多個網(wǎng)卡,那么使用arp -a加上接口的IP地址,就可以只顯示與該接口相關(guān)的ARP緩存項目。 arp -s Ip 物理地址 可以向ARP緩存中人工輸入一個靜態(tài)項目。該項目在計算機引導(dǎo)過程中將保持有效狀態(tài),或者在出現(xiàn)錯誤時,人工配置的物理地址將自動更新該項目。 arp -d Ip 使用該命令能夠人工刪除一個靜態(tài)項目。[4]? ?ARP欺騙
地址解析協(xié)議是建立在網(wǎng)絡(luò)中各個主機互相信任的基礎(chǔ)上的,它的誕生使得網(wǎng)絡(luò)能夠更加高效的運行,但其本身也存在缺陷: ARP地址轉(zhuǎn)換表是依賴于計算機中高速緩沖存儲器動態(tài)更新的,而高速緩沖存儲器的更新是受到更新周期的限制的,只保存最近使用的地址的映射關(guān)系表項,這使得攻擊者有了可乘之機,可以在高速緩沖存儲器更新表項之前修改地址轉(zhuǎn)換表,實現(xiàn)攻擊。ARP請求為廣播形式發(fā)送的,網(wǎng)絡(luò)上的主機可以自主發(fā)送ARP應(yīng)答消息,并且當其他主機收到應(yīng)答報文時不會檢測該報文的真實性就將其記錄在本地的MAC地址轉(zhuǎn)換表,這樣攻擊者就可以向目標主機發(fā)送偽ARP應(yīng)答報文,從而篡改本地的MAC地址表。[5]??ARP欺騙可以導(dǎo)致目標計算機與網(wǎng)關(guān)通信失敗,更會導(dǎo)致通信重定向,所有的數(shù)據(jù)都會通過攻擊者的機器,因此存在極大的安全隱患。 防御措施- 不要把網(wǎng)絡(luò)安全信任關(guān)系建立在IP基礎(chǔ)上或MAC基礎(chǔ)上(RARP同樣存在欺騙的問題),理想的關(guān)系應(yīng)該建立在IP+MAC基礎(chǔ)上。
- 設(shè)置靜態(tài)的MAC-->IP對應(yīng)表,不要讓主機刷新設(shè)定好的轉(zhuǎn)換表。
- 除非很有必要,否則停止使用ARP,將ARP做為永久條目保存在對應(yīng)表中。
- 使用ARP服務(wù)器。通過該服務(wù)器查找自己的ARP轉(zhuǎn)換表來響應(yīng)其他機器的ARP廣播。確保這臺ARP服務(wù)器不被黑。
- 使用“proxy”代理IP的傳輸。
- 使用硬件屏蔽主機。設(shè)置好路由,確保IP地址能到達合法的路徑(靜態(tài)配置路由ARP條目),注意,使用交換集線器和網(wǎng)橋無法阻止ARP欺騙。
- 管理員定期用響應(yīng)的IP包中獲得一個RARP請求,然后檢查ARP響應(yīng)的真實性。
- 管理員定期輪詢,檢查主機上的ARP緩存。
- 使用防火墻連續(xù)監(jiān)控網(wǎng)絡(luò)。注意有使用SNMP的情況下,ARP的欺騙有可能導(dǎo)致陷阱包丟失。[6]?
- 若感染ARP病毒,可以通過清空ARP緩存、指定ARP對應(yīng)關(guān)系、添加路由信息、使用防病毒軟件等方式解決。[7]?
對比
RARP
RARP的查詢過程 地址解析協(xié)議是根據(jù)IP地址獲取物理地址的協(xié)議,而反向地址轉(zhuǎn)換協(xié)議(RARP)是局域網(wǎng)的物理機器從網(wǎng)關(guān)服務(wù)器的ARP表或者緩存上根據(jù)MAC地址請求IP地址的協(xié)議,其功能與地址解析協(xié)議相反。與ARP相比,RARP的工作流程也相反。首先是查詢主機向網(wǎng)路送出一個RARP Request廣播封包,向別的主機查詢自己的IP地址。這時候網(wǎng)絡(luò)上的RARP服務(wù)器就會將發(fā)送端的IP地址用RARP Reply封包回應(yīng)給查詢者,這樣查詢主機就獲得自己的IP地址了。[8]?代理ARP
代理ARP 地址解析協(xié)議工作在一個網(wǎng)段中,而代理ARP(Proxy ARP,也被稱作混雜ARP(Promiscuous ARP)[9-10]??)工作在不同的網(wǎng)段間,其一般被像路由器這樣的設(shè)備使用,用來代替處于另一個網(wǎng)段的主機回答本網(wǎng)段主機的ARP請求。 例如,主機PC1(192.168.20.66/24)需要向主機PC2(192.168.20.20/24)發(fā)送報文,因為主機PC1不知道子網(wǎng)的存在且和目標主機PC2在同一主網(wǎng)絡(luò)網(wǎng)段,所以主機PC1將發(fā)送ARP協(xié)議請求廣播報文請求192.168.20.20的MAC地址。這時,路由器將識別出報文的目標地址屬于另一個子網(wǎng)(注意,路由器的接口IP地址配置的是28位的掩碼),因此向請求主機回復(fù)自己的硬件地址(0004.dd9e.cca0)。之后,PC1將發(fā)往PC2的數(shù)據(jù)包都發(fā)往MAC地址0004.dd9e.cca0(路由器的接口E0/0),由路由器將數(shù)據(jù)包轉(zhuǎn)發(fā)到目標主機PC2。(接下來路由器將為PC2做同樣的代理發(fā)送數(shù)據(jù)包的工作)。代理ARP協(xié)議使得子網(wǎng)化網(wǎng)絡(luò)拓撲對于主機來說時透明的(或者可以說是路由器以一個不真實的PC2的MAC地址欺騙了源主機PC1)。NDP
地址解析協(xié)議是IPv4中必不可少的協(xié)議,但在IPv6中將不再存在地址解析協(xié)議。在IPv6中,地址解析協(xié)議的功能將由NDP(鄰居發(fā)現(xiàn)協(xié)議,Neighbor Discovery Protocol)實現(xiàn),它使用一系列IPv6控制信息報文(ICMPv6)來實現(xiàn)相鄰節(jié)點(同一鏈路上的節(jié)點)的交互管理,并在一個子網(wǎng)中保持網(wǎng)絡(luò)層地址和數(shù)據(jù)鏈路層地址之間的映射。鄰居發(fā)現(xiàn)協(xié)議中定義了5種類型的信息:路由器宣告、路由器請求、路由重定向、鄰居請求和鄰居宣告。與ARP相比,NDP可以實現(xiàn)路由器發(fā)現(xiàn)、前綴發(fā)現(xiàn)、參數(shù)發(fā)現(xiàn)、地址自動配置、地址解析(代替ARP和RARP)、下一跳確定、鄰居不可達檢測、重復(fù)地址檢測、重定向等更多功能。 NDP與ARP的區(qū)別- IPv4中地址解析協(xié)議是獨立的協(xié)議,負責IP地址到MAC地址的轉(zhuǎn)換,對不同的數(shù)據(jù)鏈路層協(xié)議要定義不同的地址解析協(xié)議。IPv6中NDP包含了ARP的功能,且運行于因特網(wǎng)控制信息協(xié)議ICMPv6上,更具有一般性,包括更多的內(nèi)容,而且適用于各種數(shù)據(jù)鏈路層協(xié)議;
- 地址解析協(xié)議以及ICMPv4路由器發(fā)現(xiàn)和ICMPv4重定向報文基于廣播,而NDP的鄰居發(fā)現(xiàn)報文基于高效的組播和單播。[12]?
轉(zhuǎn)載于:https://www.cnblogs.com/cn-chy-com/p/7749680.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
- 上一篇: LeetCode 215 数组中的第K个
- 下一篇: String类型的算法题(获取子串在主串