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