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