ARP RARP Inverse ARP以及DHCP之間的那點破事兒

搞網路怎麼的也有一年了,今天說起了幾個帶有「arp」的協定依舊有些混淆,所以這裡我來做個簡單的區分。

首先說ARP(address resolution protocol):

這個不難理解,arp協定用於在電腦知道自己MAC位址和IP位址的情況下,用來獲取對端IP位址所對應的MAC位址。當然,交換器的MAC表也是從這裡獲取的,這也就是為什麼一般你裝好網路,測試PING的時候第一個包總是MISS、並且在PT中配好網路總要先fire個全1位址

它的工作過程是這樣的:

  1. A首先發送廣播訊息請求其對應目的IP位址的硬體位址是多少,同時在該廣播訊息中還附帶自己的IP位址和硬體位址。
  2. B接受到該廣播包後,取出A的IP位址和硬體位址,將其添加到位址映射表中。同時返回單播回應,回應包中包含B的IP位址和硬體位址。
  3. A收到回應,取出B的IP位址和硬體位址,將其添加到位址映射表中。
  4. 之後設備A和B就可以正常進行資料傳送了。

然後我們來說說Inverse ARP:

Inverse ARP用於框架轉送網路中IP位址和虛電路號的映射關係的動態維護。
其工作原理簡示如下:
  1. A首先發送單播消息請求其對應目的硬體位址的IP位址是多少? 同時在該廣播訊息中還附帶自己的IP位址。
  2. B接受到該廣播包後,修改該請求資料包,從框架轉送幀頭中提取硬體位址放入請求包的源硬體位址域中,即可形成A的位址映射。然後形成單播回應,回應包中包含B的IP位址以及A的IP位址和硬體位址。
  3. A收到回應,修改回應資料包,從幀頭中取出硬體位址放入回應資料包的源硬體位址域中,然後將其添加到位址映射表中。之後設備A和B就可以正常進行資料傳送了。

最後再來說說這個讓人懊惱的RARP:

為什麼說RARP讓人懊惱呢? 其實RARP在功能上有點類似于DHCP協定,確切的說DHCP是BOOTP協定的升級,而BOOTP在某種意義上又是RARP協定的升級。BOOTP和RARP的區別在於RARP是在資料連結層實現的,而BOOTP是在應用層實現的,作為BOOTP的升級版DHCP也是在應用層實現的。這種實現層面的差別也從RARP和BOOTP/DHCP的報文封裝格式的差別上體現出來了,RARP直接封裝在乙太網幀中,協定類型置為0x0800以標識這個報文是ARP/RARP報文,BOOTP/DHCP報文是直接封裝在UDP報文中,作為UDP的資料段出現的。

從功能上說,RARP只能實現簡單的從MAC位址到IP位址的查詢工作,RARP server上的MAC位址和IP位址是必須事先靜態配置好的。但DHCP卻可以實現除靜態配置外的動態IP位址分配以及IP位址租期管理等等相對複雜的功能。(在前段時間的這篇文章中,我簡單寫了DHCP的運行原理,不妨參考之。)

RARP是早期提供的通過硬體位址獲取ip的解決方案,但它有自己的局限性,比如RARP客戶與RARP伺服器不在同一網段,中間有路由器等設備連接,這時候利用RARP就顯得無能為力,因為RARP請求報文不能通過路由器。所以,BOOTP/DHCP應運而生,提供了很好的解決方法。 所以,現在RARP基本已經被BOOTP和DHCP所取代,自然逐漸不為人所知。

 

RARP、BOOTP和DHCP的比較:

特性 RARP BOOTP DHCP
依賴于伺服器來分配IP位址
消息封裝在IP和UDP中,所以它們可以轉發到遠端伺服器
用戶端可發現自己的遮罩、閘道、DNS和下載伺服器
由IP位址集區動態分配位址,而不需要知道用戶端的MAC位址
允許IP位址的臨時租用
包含註冊用戶端主機的FQDN(用DNS)的擴展功能

 

這篇文章的內容,借鑒了這裡這裡還有這裡,你也可以點擊查看更詳細的相關內容。

由...出版 R0uter

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

加入對話

2 註釋

您的電子郵件地址不會被公開. 必填字段標 *