[TCP/IP]ARP與RARP的總結


一. 總述

簡單的說,ARP協議就是將IP地址轉換為MAC物理地址;而RARP,就是ARP的逆向,也就是將MAC物理地址轉換為IP地址。看起來這兩個協議是完全對稱的,但發明這兩個協議的初衷基本上沒有什么關系。ARP協議是為了在鏈接層中傳輸的datagram只能識別MAC地址,所以只能將IP地址轉換為MAC物理地址再進行傳輸和定向;RARP協議是為了獲取無磁盤操作系統的IP地址而設計的。具有本地磁盤的系統通常是從磁盤中的配置文件中讀取IP地址的,但是無盤系統無法這樣操作,所以就需要將MAC地址轉換成IP地址了。

再介紹一下無盤系統。比如有些網吧的機器本身沒有硬盤,而是通過局域網連接到服務器。從這些機器上看到的磁盤實際上是共享的服務器的磁盤。

二. ARP協議

(一)ARP介紹

ARP協議將IP地址轉化為MAC物理地址。網絡體系結構自上而下可以大致分成四層:應用層,傳輸層,網絡層,鏈接層。數據傳輸的過程也是從上至下,最后在鏈接層之間進行數據交換。當數據包從網絡層將要進入鏈接層時,這個數據包只有目的地的IP地址,這時鏈接層就不清楚這個IP地址是什么了,就好像接口不統一的手機和充電器無法連接一樣。這時,ARP server就派上用場了。ARP server先將目的地的IP地址轉換成物理地址,發出一個ARP request,這個request是個沒有指定目的地的廣播,當網絡中有匹配的物理地址時,就將這個物理地址返回,即ARP reply,但ARP reply是有明確的目標地址的,是單播。這時,數據包就有方向了,就可以繼續向目的地進發了。

(二)ARP Cache

緩存的思想無處不在。IP地址對應MAC物理地址,ARP Cahe中存儲的就是這些mappings。有緩存自然就會有timeout,當過了某個時間間隔后,緩存就會被清除,否則緩存無限制增長是件非常可怕的事。如果需要,可以用arp命令的-s選項來添加一個永久的緩存條目。

三.RARP服務器在設計上的復雜性

RARP是將MAC物理地址轉換成IP地址。RARP也有request與reply,並且RARP request也是廣播,沒有目標地址;RARP reply也是有目標地址,也是單播。這兩點與ARP都相同。看起來雖然僅僅是ARP協議的逆向操作,但是RARP server設計的復雜性是遠遠超過ARP server的。首先,ARP server是存在於kernel中,而RARP server僅僅是一個用戶進程,RARP就有些"先天不足"。其次,RARP是尋找與物理地址對應的IP地址,這就表明了RARP request packet包中沒有IP地址,自然也就無法通過路由器進行轉發了。因為路由器是工作在網絡層,網絡層的協議是IP協議,ARP request能夠通過路由器進行轉發,是因為在ARP request packet中有IP地址的字段,而RARP request packet沒有,所以路由器對RARP也就沒有幫助了。

RARP還有一個機制,就是在每個網絡中都有多個RARP server。我猜想這可能是為了增大可靠性,是用的主從服務器的設計理念。源地址一般只接受第一個RARP reply。有多個服務器,自然也就可能出現沖突。所以RARP server是這樣設計的:一般有一個主服務器是接收到request后立刻發送RARP reply,沒有發送延遲;而其他的服務器即使接收到了request,也會在一個隨機的發送延遲后才能發送reply,而且一般是在短時間內收到重復的第二個request才可以發送reply。因為如果這些次要的服務器都收到了第二次相同的request,那么這種情況一般是主服務器掛了。

四. ARP與RARP的比較

(一)相同點

對於ARP與RARP,request是廣播,而reply是單播。

(二)不同點

1.協議的目的完全不同。在總述中已經說明。

2.發送ARP packet的是路由器,而RARP不是。

3.ARP server在kernel中,而RARP是一個用於進程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM