ARP and RARP 靜宜大學資工系 蔡奇偉 副教授 2006
大綱 簡介 ARP RARP
簡介 IP 位址是一種邏輯位址 (logical address), Internet 上的電腦利用它來辨認彼此的身分。 然而,封包最終還是得經過實體網路才會到達目標電腦或路由器。在實體層,電腦與路由器是以實體位址 (physical address) 來做身分的辨認。 實體位址與邏輯位址為不同的辨認代碼,實體網路可以支援兩種不同網路層協定 (如 IP 及 IPX) ,相反地,網路層的 IP 封包也可以經過不同的實體網路 (如乙太網路或 LocalTalk)。
這表示將封包送到一台電腦或路由器,需要邏輯層及實體層的定址。因此,我們必須在邏輯位址與實體位址兩者之間建立一種對照關係。 位址解析協定 (Address Resolution Protocol, ARP) 和反向位址解析協定 (Reverse Address Resolution Protocol, RARP) 就是用來提供上述的對照關係。
下圖顯示 ARP 與 RARP 在 TCP/IP 協定組的位置:
ARP ARP 將一個 IP 位址關聯到它的實體位址。當一台主機,需要在同一實體網路上的目標主機的實體位址時,它就以廣播的方式送出一個 ARP 詢問封包 (query packet),如下圖所示: 141.23.56.23
在這整個網路上的每台電腦或路由器都會收到這個 ARP 詢問封包,但是只有預定的接收者才會以單點傳送方式送回一個 ARP 回應封包 (response packet)。回應封包包含接收者的 IP 位址及實體位址,如下圖所示
Figure 7-4 ARP 封包的格式
■ 硬體種類 (Hardware type) 這是一個 16 位元欄位,定義跑 ARP 協定的網路種類,每種區域網路依其類別被賦予一個整數值。例如,乙太網路為 1, ARP 可以用在任意一種實體網路上。 ■ 協定種類 (Protocol type) 這 16 位元定義協定類別。例如, IPv4 協定以 080016 代表。ARP 可與其他任意一種高層協定搭配使用。 ■ 硬體長度 (hardware length) 本欄為 8 位元定義實體位址的長度,單位是位元組。譬如,若是乙太網路的話,其值為 6
■ 協定長度 (Protocol length) 本欄為 8 位元定義邏輯位址的長度,單位是位元組。例如,以 IPv4 協定而言,其值為 4。 ■ 運作 (Operation) 這是一個 16 位元欄位,定義封包的種類。目前有 ARP 要求(其值為 1 ) 與 ARP 回應 (其值為 2) 兩種封包。 ■ 送出者硬體位址 (Sender hardware address) 本欄不固定長度,定義送出者的實體位址。如為乙太網路,本欄為 6 個位元組長。
■ 送出者協定位址 (Sender protocol address) 本欄不固定長度,定義送出者的邏輯位址。如為 lP 協定,這個欄位為 4 個位元組長。 ■ 目標硬體位址(Target hardware address) 本欄不固定長度,定義目標者的實體位址。如為乙太網路,本欄為 6 個位元組長。對 ARP 要求封包而言,這個欄位全部為 0,因為送出者不知道目標的實體位址。 ■ 目標協定位址(Target protocol address) 本欄不固定長度,定義目標者的邏輯位址 (如 IP)。以 IPv4 協定而言,這個欄位為 4 個位元組長。
Figure 7-5 封裝 (Encapsulation) ARP 封包直接被包在資料連接層的訊框裡。如下圖所示,乙太網路的訊框將 ARP 封包包起來。注意,訊框的 Type 欄值是 0x0806,代表所攜帶資料是一個 ARP 封包。
ARP 的運作 送出者先決定出目標的 IP 位址。我們稍後會說明送出者如何得到目標的 IP 位址。 IP 要求 ARP 建立一個 ARP 要求封包,將送出者的實體位址、IP 位址及目的 IP 位址填入其中,而目的實體位址則填入 0 將該 ARP 訊息送到資料連接層封裝成訊框,使用送出者的實體位址為來源位址,以實體廣播位址為目的位址。
在該實體網路上的每台電腦或路由器都會接收到這個訊框,因為它的目的位址是一個廣播位址。各個站由訊框中取出訊息送給各自的 ARP,除了目的電腦以外,其他都將此訊息丟棄,目的機器認識自已的 lP 位址。 原來的送出者從收到回應訊息中得知目標機器的實體位址。 現在,送往目標機器的 lP 資料包都可以組裝成訊框,以單點位址傳送到目的地了。
使用 ARP 服務的狀況有以下四種 : Case 1: Figure 7-6:a 使用 ARP 服務的狀況有以下四種 : Case 1: 送出者主機想要送封包到在同一網路上的另一台電腦。在這種情況下,要對應到實體位址的邏輯位址就在資料包標頭的目的 IP 位址。
Figure 7-6:b Case 2: 送出者主機想要送封包到在另一個網路上的一台主機。送出者先在自己的路徑表中找出到目的地的下一站路由器 lP 位址。如果它沒有路徑表,它就找預設路由器的 lP 位址,如此所得路由器的 IP 位址就是要對應到實體位址的邏輯位址。
Figure 7-6:c Case 3: 送出者為一路由器,它接收到一個目的地在另一個網路的資料包。該路由器檢查其路徑表,並找出下一個路由器的lP 位址,這個 IP 位址即為對應到實體位址的邏輯位址。
送出者為一路由器,它接收到一個資料包,這個資料包的目的地主機在相同的網路上,該資料包的目的 IP 位址即為對應到實體位址的邏輯位址。 Figure 7-6:d Case 4: 送出者為一路由器,它接收到一個資料包,這個資料包的目的地主機在相同的網路上,該資料包的目的 IP 位址即為對應到實體位址的邏輯位址。
範例 某主機 IP 位址為 130.23.43.20,其實體位址為0xB23455102210,有封包要送到另一主機其 IP 位址為 130.23.43.25,實體位址是 0xA46EF45983AB。這兩台電腦在相同的乙太網路上。試寫出封裝在乙太訊框內的 ARP 要求及回應封包。
ARP 要求包封
Figure 7-7: reply ARP 回應包封
RARP RARP 用來解決一台只知道自己實體位址的機器,但不知道邏輯位址的問題。 每台電腦或路由器可被給予一個或一個以上的 IP 位址。IP位址通常可從存在硬碟的組態檔案中取得。 然而,如果是一台無硬碟機器,它通常是由 ROM 開機。ROM 裡只含有必要的開機程式,ROM 由電腦製造者提供,無法包括 IP 位址,因為 IP 位址通常由網路管理者分配。 這種無硬碟機器,可以經由其網路卡而知硬體位址,然後可以使用 RARP 協定,藉由實體位址去得到 IP 位址。
RARP 訊息是以廣播方式送到區域網路上,網路上的某台機器知道所有的 IP 位址,會回一個 RARP 的回應訊息,所以要求的機器要跑一個 RARP 用戶端程式,而回應的機器要跑 RARP 的伺服端程式。
RARP operation
RARP 封包的格式 註:RARP 封包的欄位意義與 ARP 封包相同。
Figure 7-12 封裝
RARP 的代替方案 當一台無硬碟機器開機時,它所要求的訊息不只是 IP 位址,它還需要子網遮罩、路由器的 IP 位址、名稱伺服器的 IP 位址。RARP 無法提供這些額外的訊息。 以後,我們會介紹兩種新協定:BOOTP 及DHCP,可以用來取代 RARP。