TCP-IP學習筆記(七)——ARP:地址解析協議

1、引言

數據鏈路如以太網或令牌環網都有自己的尋址機制(常常爲 48 bit地址),這是使用數據鏈路的任何網絡層都必須遵從的。一個網絡如以太網可以同時被不同的網絡層使用。例如,一組使用TCP/IP協議的主機和另一組使用某種P C網絡軟件的主機可以共享相同的電纜。
當一臺主機把以太網數據幀發送到位於同一局域網上的另一臺主機時,是根據 48 bit的以太網地址來確定目的接口的。設備驅動程序從不檢查 IP數據報中的目的IP地址。
地址解析爲這兩種不同的地址形式提供映射: 32 bit的IP地址和數據鏈路層使用的任何類型的地址。
ARP爲I P地址到對應的硬件地址之間提供動態映射。我們之所以用動態這個詞是因爲這個過程是自動完成的,一般應用程序用戶或系統管理員不必關心。
RARP是被那些沒有磁盤驅動器的系統使用(一般是無盤工作站或 X終端),它需要系統管理員進行手工設置。如下圖所示。
這裏寫圖片描述

2、一個例子

任何時候我們敲入下面這個形式的命令:
% ftp bsdi
會進行如下步驟
1) 應用程序FTP客戶端調用函數gethostbyname(3)把主機名(bsdi)轉換成32 bit的IP地址。這個函數在DNS(域名系統)中稱作解析器。這個轉換過程或者使用DNS,或者在較小網絡中使用一個靜態的主機文件(/etc/ hosts)。
2) FTP客戶端請求TCP用得到的IP地址建立連接。
3) TCP發送一個連接請求分段到遠端的主機,即用上述IP地址發送一份IP數據報。
4) 如果目的主機在本地網絡上(如以太網、令牌環網或點對點鏈接的另一端),那麼IP數據報可以直接送到目的主機上。如果目的主機在一個遠程網絡上,那麼就通過 IP選路函數來確定位於本地網絡上的下一站路由器地址,並讓它轉發IP數據報。在這兩種情況下,IP數據報都是被送到位於本地網絡上的一臺主機或路由器。
5) 假定是一個以太網,那麼發送端主機必須把 32 bit的IP地址變換成48 bit的以太網地址。
從邏輯Internet地址到對應的物理硬件地址需要進行翻譯。這就是ARP的功能
ARP本來是用於廣播網絡的,有許多主機或路由器連在同一個網絡上。
6) ARP發送一份稱作ARP請求的以太網數據幀給以太網上的每個主機。這個過程稱作廣播,如圖中的虛線所示。ARP請求數據幀中包含目的主機的 IP地址(主機名爲bsdi),其意思是“如果你是這個IP地址的擁有者,請回答你的硬件地址。”
7) 目的主機的ARP層收到這份廣播報文後,識別出這是發送端在尋問它的IP地址,於是發送一個ARP應答。這個ARP應答包含IP地址及對應的硬件地址。
8) 收到ARP應答後,使ARP進行請求—應答交換的IP數據報現在就可以傳送了。
9) 發送IP數據報到目的主機。
這裏寫圖片描述
在ARP背後有一個基本概念,那就是網絡接口有一個硬件地址(一個48bit的值,標識不同的以太網或令牌環網絡接口)。在硬件層次上進行的數據幀交換必須有正確的接口地址。但是TCP/IP有自己的地址:32 bit的IP地址。知道主機的IP地址並不能讓內核發送一幀數據給主機。內核(如以太網驅動程序)必須知道目的端的硬件地址才能發送數據。 A R P的功能是:在32 bit的I P地址和採用不同網絡技術的硬件地址之間提供動態映射。

3、ARP的分組格式

在以太網上解析IP地址時,ARP請求和應答分組的格式如圖所示(ARP可以用於其他類型的網絡,可以解析 IP地址以外的地址。緊跟着幀類型字段的前四個字段指定了最後四個字段的類型和長度)。
這裏寫圖片描述
以太網報頭中的前兩個字段是以太網的源地址和目的地址。目的地址爲全1的特殊地址是廣播地址。電纜上的所有以太網接口都要接收廣播的數據幀。
兩個字節長的以太網幀類型表示後面數據的類型。對於ARP請求或應答來說,該字段的值爲0x0806。
形容詞hardware(硬件)和protocol(協議)用來描述ARP分組中的各個字段。例如,一個ARP請求分組詢問協議地址(這裏是IP地址)對應的硬件地址(這裏是以太網地址)。
硬件類型字段表示硬件地址的類型。它的值爲1即表示以太網地址。協議類型字段表示要映射的協議地址類型。它的值爲0x0800即表示IP地址。它的值與包含IP數據報的以太網數據幀中的類型字段的值相同。
接下來的兩個1字節的字段,硬件地址長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節爲單位。對於以太網上IP地址的ARP請求或應答來說,它們的值分別爲6和4。操作字段指出四種操作類型,它們是ARP請求(值爲1)、ARP應答(值爲2)、RARP請求(值爲3)和RARP應答(值爲4)。這個字段必需的,因爲ARP請求和ARP應答的幀類型字段值是相同的。
接下來的四個字段是發送端的硬件地址(在本例中是以太網地址)、發送端的協議地址(IP地址)、目的端的硬件地址和目的端的協議地址。注意,這裏有一些重複信息:在以太網的數據幀報頭中和ARP請求數據幀中都有發送端的硬件地址。
對於一個ARP請求來說,除目的端硬件地址外的所有其他的字段都有填充值。當系統收到一份目的端爲本機的ARP請求報文後,它就把硬件地址填進去,然後用兩個目的端地址分別替換兩個發送端地址,並把操作字段置爲2,最後把它發送回去。

發佈了33 篇原創文章 · 獲贊 11 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章