ARP協議有啥用?帶你全面瞭解ARP協議

在生活中我們常常聽說ARP攻擊,到底ARP的作用是啥呢?今天來個全面的瞭解關於ARP協議的知識。網絡設備有數據要發送給另一臺網絡設備時,必須要知道對方的網絡層地址(即IP地址)。IP地址由網絡層來提供,但是僅有IP地址是不夠的,IP數據報文必須封裝成幀才能夠通過數據鏈路進行轉發。數據幀必須要包含目的MAC地址,因此發送端還必須獲取到目的MAC地址。通過目的IP地址而獲取目的MAC地址的過程由ARP(Address Resolution Protocol)協議來實現。

ARP數據包格式

ARP協議有啥用?帶你全面瞭解ARP協議

PS:ARP報文不能穿越路由器,不能被轉發到其他廣播域

網絡設備通過ARP報文來發現目的MAC地址。 ARP報文中包含以下字段

  1. Hardware Type表示硬件地址類型, 一般為以太網;
  2. Protocol Type表示三層協議地址類型, 一般為IP;
  3. Hardware Length和Protocol Length為MAC地址和IP地址的長度單位是字節;
  4. Operation Code指定了ARP報文的類型, 包括ARP request和ARP reply;
  5. Source Hardware Address指的是發送ARP報文的設備MAC地址;
  6. Source Protocol Address指的是發送ARP報文的設備IP地址;
  7. Destination Hardware Address指的是接收者MAC地址在ARPrequest報文中 該字段值為0;
  8. Destination Protocol Address指的是指接收者的IP地址。

ARP工作過程

ARP協議有啥用?帶你全面瞭解ARP協議

主機A發送一個數據包給主機C之前,首先獲取主機C的MAC地址。通過ARP協議, 網絡設備可以建立目標IP地址和MAC地址之間的映射。網絡設備通過網絡層獲取到目的IP地址之後, 還要判斷目的MAC地址是否已知。

ARP緩存

ARP協議有啥用?帶你全面瞭解ARP協議

網絡設備一般都有一個ARP緩存(ARP Cache) , ARP緩存用來存放IP地址和MAC地址的關聯信息。 在發送數據前, 設備會先查找ARP緩存表。 如果緩存表中存在對方設備的MAC地址, 則直接採用該MAC地址來封裝幀, 然後將幀發送出去。 如果緩存表中不存在相應信息, 則通過發送ARP request報文來獲得它。 學習到的IP地址和MAC地址的映射關係會被放入ARP緩存表中存放一段時間。 在有效期內, 設備可以直接從這個表中查找目的MAC地址來進行數據封裝, 而無需進行ARP查詢。 過了這段有效期, ARP表項會被自動刪除。

如果目標設備位於其他網絡, 則源設備會在ARP緩存表中查找網關的MAC地址, 然後將數據發送給網關, 網關再把數據轉發給目的設備。

ARP請求

ARP協議有啥用?帶你全面瞭解ARP協議

本例中,主機A的ARP緩存表中不存在主機C的MAC地址, 所以主機A會發送ARP request來獲取目的MAC地址。 ARP request報文封裝在以太幀裡。 幀頭中的源MAC地址為發送端主機A的MAC地址。 此時, 由於主機A不知道主機C的MAC地址, 所以目的MAC地址為

廣播地址FF-FFFF-FF-FF-FF。 ARP request報文中包含源IP地址、 目的IP地址、 源MAC地址、 目的MAC地址, 其中目的MAC地址的值為0。ARP Request報文會在整個網絡上傳播, 該網絡中所有主機包括網關都會接收到此ARP request報文。 網關將會阻止該報文發送到其他網絡上。

ARP響應

ARP協議有啥用?帶你全面瞭解ARP協議

所有的主機接收到該ARP Request報文後, 會檢查它的目的協議地址字段與自身的IP地址是否匹配。 如果不匹配, 則該主機將不會響應該ARP Request報文。 如果匹配, 則該主機會將ARP報文中的源MAC地址和源IP地址信息記錄到自己的ARP緩存表中, 然後通過ARP Reply報文進行響應。

ARP協議有啥用?帶你全面瞭解ARP協議

主機C會向主機A回應ARP Reply報文。 ARP Reply報文中的源協議地址是主機C自己的IP地址, 目標協議地址是主機A的IP地址, 目的MAC地址 是 主 機 A 的 MAC 地 址 , 源 MAC 地 址 是 自 己 的 MAC 地 址 , 同 時Operation Code被設置為reply。

ARP Reply報文通過單播傳送。

ARP緩存

ARP協議有啥用?帶你全面瞭解ARP協議

主機A收到ARP Reply以後, 會檢查ARP報文中目的MAC地址是否與自己的MAC匹配。 如果匹配, ARP報文中的源MAC地址和源IP地址會被記錄到主機A的ARP緩存表中。 ARP表項的老化超時時間缺省為1200秒

ARP代理

ARP協議有啥用?帶你全面瞭解ARP協議

在上述例子的組網中,主機A需要與主機B通信時, 目的IP地址與本機的IP地址位於不同網絡, 但是由於主機A未配置網關, 所以它將會以廣播形式發送ARP Request報文, 請求主機B的MAC地址。 但是, 廣播報文無法被路由器轉發, 所以主機B無法收到主機A的ARP請求報文, 當然也就無法應答。

在路由器上啟用代理ARP功能, 就可以解決這個問題。 啟用代理ARP後, 路由器收到這樣的請求, 會查找路由表, 如果存在主機B的路由表項, 路由器將會使用自己的G0/0/0接口的MAC地址來回應該ARP request。 主機A收到ARP reply後, 將以路由器的G0/0/0接口MAC地址作為目的MAC地址進行數據轉發。

路由器啟用代理ARP功能:在接口模式下執行如下命令

arp-proxy enable

免費ARP

免費ARP是用來探測IP地址是否衝突。

ARP協議有啥用?帶你全面瞭解ARP協議

主機被分配了IP地址或者IP地址發生變更後, 必須立刻檢測其所分配的IP地址在網絡上是否是唯一的, 以避免地址衝突。 主機通過發送ARP request報文來進行地址衝突檢測。

主機A將ARP Request廣播報文中的目的IP地址字段設置為自己的IP地址, 該網絡中所有主機包括網關都會接收到此報文。 當目的IP地址已經被某一個主機或網關使用時, 該主機或網關就會回應ARP reply報文。通過這種方式,主機A就能探測到IP地址衝突了。


分享到:


相關文章: