搞網路怎麼的也有一年了,今天說起了幾個帶有「arp」的協定依舊有些混淆,所以這裡我來做個簡單的區分。
首先說ARP(address resolution protocol):
這個不難理解,arp協定用於在電腦知道自己MAC位址和IP位址的情況下,用來獲取對端IP位址所對應的MAC位址。當然,交換器的MAC表也是從這裡獲取的,這也就是為什麼一般你裝好網路,測試PING的時候第一個包總是MISS、並且在PT中配好網路總要先fire個全1位址。
它的工作過程是這樣的:
- A首先發送廣播訊息請求其對應目的IP位址的硬體位址是多少,同時在該廣播訊息中還附帶自己的IP位址和硬體位址。
- B接受到該廣播包後,取出A的IP位址和硬體位址,將其添加到位址映射表中。同時返回單播回應,回應包中包含B的IP位址和硬體位址。
- A收到回應,取出B的IP位址和硬體位址,將其添加到位址映射表中。
- 之後設備A和B就可以正常進行資料傳送了。
然後我們來說說Inverse ARP:
- A首先發送單播消息請求其對應目的硬體位址的IP位址是多少? 同時在該廣播訊息中還附帶自己的IP位址。
- B接受到該廣播包後,修改該請求資料包,從框架轉送幀頭中提取硬體位址放入請求包的源硬體位址域中,即可形成A的位址映射。然後形成單播回應,回應包中包含B的IP位址以及A的IP位址和硬體位址。
- 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)的擴展功能 | 否 | 否 | 是 |
本文由 落格博客 原創撰寫:落格博客 » ARP RARP Inverse ARP以及DHCP之間的那點破事兒
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/247.html
註釋