回答:
ARP(Address Resolution Protocol,地址解析協(xié)議)是將 IP 地址解析為以太網(wǎng) MAC 地址(或稱物理地址)的協(xié)議。
在網(wǎng)絡(luò)中,當主機或其它網(wǎng)絡(luò)設(shè)備有數(shù)據(jù)要發(fā)送給另一個主機或設(shè)備時,它必須知道對方的網(wǎng)絡(luò)層地址(即 IP 地址)。但是僅僅有 IP 地址是不夠的,因為 IP 數(shù)據(jù)報必須封裝成幀才能通過物理網(wǎng)絡(luò)發(fā)送,因此發(fā)送站還必須有接收站的物理地址,所以需要一個從 IP 地址到物理地址的映射。ARP就是實現(xiàn)這個功能的協(xié)議。
為什么需要ARP?
在發(fā)送者給其他的網(wǎng)絡(luò)設(shè)備發(fā)送數(shù)據(jù)的時候, 是以數(shù)據(jù)幀的形式發(fā)送的,數(shù)據(jù)幀被網(wǎng)卡解析成電信號或者光信號傳遞到對端。
數(shù)據(jù)幀是由源MAC地址和目的MAC地址組成的,如果發(fā)送者只知道目的主機的IP地址, 不知道目的主機的MAC地址, 就不能把這個數(shù)據(jù)包轉(zhuǎn)化成數(shù)據(jù)幀發(fā)走,而ARP 協(xié)議就是負責地址解析的, 使用目的主機IP地址來解析對方的MAC地址。
如果發(fā)送者和接收者在同一個網(wǎng)絡(luò)內(nèi),arp解析的就是接收者的MAC地址。如果發(fā)送者和接收者不在同一個網(wǎng)絡(luò)內(nèi), arp解析的就是這個網(wǎng)絡(luò)內(nèi)網(wǎng)關(guān)的接口MAC地址。
ARP工作流程
在網(wǎng)絡(luò)設(shè)備中會存在一個ARP緩存表,這個緩存表記錄著這個IP 地址和MAC地址的映射關(guān)系,可以在設(shè)備終端使用arp -a 來查看本地的arp 緩存表的緩存信息。
arp 協(xié)議的作用, 就是形成這個arp緩存表,那么,交換機是如何形成這個緩存表的呢?
設(shè)備需要解析一個IP地址時, 會發(fā)出一個arp 請求報文的廣播幀,2層報文中目的MAC地址為全F ,目的設(shè)備在收到ARP請求報文之后,會向源設(shè)備發(fā)送一個單播幀,該單播幀是一個ARP的應(yīng)答報文,該應(yīng)答報文中包含了目的設(shè)備的MAC地址。
同一個網(wǎng)絡(luò)內(nèi)的ARP請求和應(yīng)答過程如下:
如圖:PC 1 只知道PC3 的IP地址是10.1.1.3, 但是不知道PC3的MAC, 現(xiàn)在想獲取PC3 的MAC地址:
1、發(fā)送者PC1:PC 1 會發(fā)送一個廣播幀, 源IP和源MAC是PC1, 目的IP是PC3,目的MAC為FF-FF-FF-FF-FF-FF, 這個幀是廣播發(fā)送的, 該網(wǎng)絡(luò)內(nèi)所有主機都會接收到,這個報文的載荷內(nèi)容是一個ARP請求報文,意思是我的MAC地址是MAC1,我想給10.1.1.3發(fā)送數(shù)據(jù), 誰是10.1.1.3, 請回復(fù)一下我。
2、非目的主機PC2:由于這個廣播幀網(wǎng)絡(luò)內(nèi)主機都可以收到,PC2 收到這個幀, 提取IP地址, 發(fā)現(xiàn), 它要找的IP地址是10.1.1.3, 我的IP地址是10.1.1.2, 這個數(shù)據(jù)包不是發(fā)給我的, 丟棄, 不回復(fù)。
3、 目的主機PC3:PC 3 收到這個廣播數(shù)據(jù)幀后,拆開數(shù)據(jù)幀, 提取IP地址, 發(fā)現(xiàn)和我本地IP地址是一樣的, 這個數(shù)據(jù)包就是發(fā)給我的, 然后再拆, 提取報文后, 了解到對方要請求我自己的MAC地址,然后就打包一個ARP的應(yīng)答報文,源IP和源MAC都是自己的,目的IP和目的MAC是對方的,單播的發(fā)送給接收者,這樣PC1 就有了PC3的MAC地址。
代理ARP
如果這兩個主機不在同一個網(wǎng)絡(luò)內(nèi), 被3層設(shè)備隔離了, 怎么通信?
目的IP地址與本機的IP地址位于不同網(wǎng)絡(luò), 由于主機A沒有配置網(wǎng)關(guān),所以它將會以廣播形式發(fā)送ARP Request報文,請求主機B的MAC地址。但是,廣播報文無法被路由器轉(zhuǎn)發(fā),所以主機B無法收到主機A的ARP請求報文,當然也就無法應(yīng)答。
在路由器上啟用代理ARP功能,就可以解決這個問題。
啟用代理ARP后, 主機A解析網(wǎng)關(guān)MAC 地址過程:
1、主機A發(fā)送arp 請求網(wǎng)關(guān)MAC: 在電腦主機要先配置網(wǎng)關(guān)地址,主機A給主機B發(fā)送數(shù)據(jù),發(fā)現(xiàn)是不同網(wǎng)段的數(shù)據(jù)通信,而我本地是沒有這個關(guān)于B的ARP映射關(guān)系的,就會發(fā)送一個arp請求報文,解析網(wǎng)關(guān)MAC地址,源IP和源MAC地址都是主機A,目的IP是網(wǎng)關(guān)IP地址,目的MAC地址是全0。
2、網(wǎng)關(guān)回復(fù)自己的MAC 地址:網(wǎng)關(guān)收到這個arp請求報文后, 檢查目的主機是否可達,可達,就會把自己的MAC地址以arp reply報文回復(fù)給主機A,目的主機不可達就不回復(fù)。
3:主機A 給主機B 發(fā)送數(shù)據(jù):主機A收到這個arp應(yīng)答報文就會把網(wǎng)關(guān)MAC和網(wǎng)關(guān)的IP地址添加進arp表,A要給主機B發(fā)送數(shù)據(jù),需要先解析B的MAC地址,發(fā)送一個arp請求報文,源IP 和源MAC是A的信息,目的IP地址是B的IP地址,目的MAC是網(wǎng)關(guān)MAC。
4:網(wǎng)關(guān)收到數(shù)據(jù)包后的處理:網(wǎng)關(guān)收到這樣的請求,會查找路由表,如果存在主機B的路由表項,路由器將會使用自己的G0/0/0接口的MAC地址來回應(yīng)該ARP request。主機A收到ARP reply后,將以路由器的G0/0/0接口MAC地址作為目的MAC地址進行數(shù)據(jù)轉(zhuǎn)發(fā)。
arp協(xié)議具體用法
ARP是IPv4中網(wǎng)絡(luò)層必不可少的協(xié)議,不過在IPv6中已不再適用,并被鄰居發(fā)現(xiàn)協(xié)議(NDP)所替代。說白了,就是把通過ip地址找到設(shè)備mac地址。
ARP的命令一般有三個用法,就是查詢顯示、添加記錄、與刪除記錄,這個在我們做網(wǎng)絡(luò)項目時經(jīng)常會用到。
1、arp -a ,當你需要顯示當期ip地址對應(yīng)的mac地址時使用
當你需要了解你網(wǎng)絡(luò)中設(shè)備對應(yīng)的mac地址時,你可以使用arp地址進行顯示,這個有利于我們可以清楚了解到ip地址對應(yīng)的mac地址是哪臺設(shè)備。
在命令提示符中輸入“arp -a”并回車;自動在緩存中,讀取IP地址和mac地址的對應(yīng)關(guān)系表;
2、arp -s ,當你需要手動添加或綁定一條arp記錄時使用。
手工輸入一條ARP項目,格式為“ARP+空格+-a+IP地址+MAC地址”;
在網(wǎng)絡(luò)中,通常在辦公網(wǎng)絡(luò)或監(jiān)控項目中,為了防止用戶亂改ip地址或ip地址沖突,我們需要給ip地址綁定設(shè)備的mac地址。
如下圖,先用ARP -s 192.168.1.1 3c-22-3f-5d-f6-77綁定一條記錄,然后用arp -a查詢了ARP記錄添加是否成功。
其實這個命令也叫作綁定mac地址的命令,例如一個公司的網(wǎng)絡(luò),員工經(jīng)常喜歡改自己電腦的ip地址,經(jīng)常會造成ip地址混亂,無法管理,那么這個時候你只需要把它的ip地址與它電腦mac地址進行綁定,那么下次出現(xiàn)網(wǎng)絡(luò)故障,就可以直接mac地址定位到那幾臺電腦。
3、arp -d,當你覺得某條arp記錄有問題時,可以刪除。
功能為:刪除所有ARP記錄
其實如果想徹底清空ARP列表,需要您禁止所有網(wǎng)絡(luò)連接,否則網(wǎng)絡(luò)數(shù)據(jù)交互過程中仍然會產(chǎn)生新的ARP列表。
當你網(wǎng)絡(luò)中出了問題,可能是有某些ip地址發(fā)生沖突了,mac對應(yīng)的ip地址有誤,那么你可以對它進行刪除這條arp記錄,然后重新添加新的記錄,網(wǎng)絡(luò)問題就會得到解決。
免責聲明:本網(wǎng)站部分文章、圖片等信息來源于網(wǎng)絡(luò),版權(quán)歸原作者平臺所有,僅用于學術(shù)分享,如不慎侵犯了你的權(quán)益,請聯(lián)系我們,我們將做刪除處理!