ARP:地址解析協議
說明:本文為《TCP/IP詳解,卷1:協議》的第四章“ARP:地址解析協議”的學習筆記。
一.引言
地址解析協議:ARP、RARP圖示:

當一臺主機把以太網數據幀發送到位于同一局域網上的另一臺主機時,是根據48 bit的以太網地址來確定目的接口的。設備驅動程序從不檢查IP數據報中的目的IP地址。
ARP為IP地址到對應的硬件地址之間提供動態映射。我們之所以用動態這個詞是因為這個過程是自動完成的,一般應用程序用戶或系統管理員不必關心。
RARP是被那些沒有磁盤驅動器的系統使用(一般是無盤工作站或X終端),它需要系統管理員進行手工設置。
二.ARP高速緩存
ARP高效運行的關鍵是由于每個主機上都有一個ARP高速緩存。這個高速緩存存放了最近Internet地址到硬件地址之間的映射記錄。高速緩存中每一項的生存時間一般為2 0分鐘,起始時間從被創建時開始算起。
我們可以用a r p(8)命令來檢查ARP高速緩存。參數-a的意思是顯示高速緩存中所有的內容。
三.ARP的分組格式
用于以太網的ARP請求或應答分組格式如下圖所示:

以太網報頭中的前兩個字段是以太網的源地址和目的地址。目的地址為全1的特殊地址是廣播地址。電纜上的所有以太網接口都要接收廣播的數據幀。
兩個字節長的以太網幀類型表示后面數據的類型。對于ARP請求或應答來說,該字段的值為0x0806。
硬件類型字段表示硬件地址的類型。它的值為1即表示以太網地址。協議類型字段表示要映射的協議地址類型。它的值為0x0800即表示IP地址。
接下來的兩個1字節的字段,硬件地址長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節為單位。對于以太網上IP地址的ARP請求或應答來說,它們的值分別為6和4。
操作字段指出四種操作類型,它們是ARP請求(值為1)、ARP應答(值為2)、RARP請求(值為3)和RARP應答(值為4)(我們在第5章討論RARP)。這個字段必需的,因為ARP請求和ARP應答的幀類型字段值是相同的。
接下來的四個字段是發送端的硬件地址(在本例中是以太網地址)、發送端的協議地址(IP地址)、目的端的硬件地址和目的端的協議地址。
四.ARP代理
如果ARP請求是從一個網絡的主機發往另一個網絡上的主機,那么連接這兩個網絡的路由器就可以回答該請求,這個過程稱作委托ARP或ARP代理(Proxy ARP)。
ARP代理也稱作混合ARP(promiscuous ARP)或ARP 出租(ARP hack)。這些名字來自于ARP代理的其他用途:通過兩個物理網絡之間的路由器可以互相隱藏物理網絡。在這種情況下,兩個物理網絡可以使用相同的網絡號,只要把中間的路由器設置成一個ARP代理,以響應一個網絡到另一個網絡主機的ARP請求。
五.免費ARP
免費ARP指的是主機發送ARP尋找自己的IP地址。
免費ARP可以有兩個方面的作用:
1. 一個主機可以通過它來確定另一個主機是否設置了相同的I P地址;
2. 如果發送免費A R P的主機正好改變了硬件地址(很可能是主機關機了,并換了一塊接口卡,然后重新啟動),那么這個分組就可以使其他主機高速緩存中舊的硬件地址進行相應的更新。
六.arp命令
1. 參數–a
用來顯示ARP高速緩存中的所有內容。
2. 參數-d
超級用戶可以用選項-d來刪除ARP高速緩存中的某一項內容。
3. 參數-s
用來增加高速緩存中的內容。
七.小結
在大多數的TCP/IP實現中,ARP是一個基礎協議,但是它的運行對于應用程序或系統管理員來說一般是透明的。ARP高速緩存在它的運行過程中非常關鍵,我們可以用arp命令對高速緩存進行檢查和操作。高速緩存中的每一項內容都有一個定時器,根據它來刪除不完整和完整的表項。arp命令可以顯示和修改ARP高速緩存中的內容。
我們介紹了ARP的一般操作,同時也介紹了一些特殊的功能:委托ARP(當路由器對來自于另一個路由器接口的ARP請求進行應答時)和免費ARP(發送自己IP地址的ARP請求,一般發生在引導過程中)。
RARP:逆地址解析協議
說明:本文為《TCP/IP詳解,卷1:協議》的第五章“RARP:逆地址解析協議”的學習筆記。
一. 引言
具有本地磁盤的系統引導時,一般是從磁盤上的配置文件中讀取I P地址。但是無盤機,如X終端或無盤工作站,則需要采用其他方法來獲得I P地址。
網絡上的每個系統都具有唯一的硬件地址,它是由網絡接口生產廠家配置的。無盤系統的R A R P實現過程是從接口卡上讀取唯一的硬件地址,然后發送一份R A R P請求(一幀在網絡上廣播的數據),請求某個主機響應該無盤系統的I P地址(在R A R P應答中)
二. 分組格式
與ARP基本一致,區別在于:
RARP請求或應答的幀類型代碼為0x8035;
而且RARP請求的操作代碼為3,應答操作代碼為4。
對應于ARP,RARP請求以廣播方式傳送,而RARP應答一般是單播( unicast )傳送的。
三. RARP服務器的設計
1. 作為用戶進程的RARP服務器
R A R P服務器的復雜性在于,服務器一般要為多個主機(網絡上所有的無盤系統)提供硬件地址到I P地址的映射。該映射包含在一個磁盤文件中(在U n i x系統中一般位于/etc/ethers目錄中)。由于內核一般不讀取和分析磁盤文件,因此RARP服務器的功能就由用戶進程來提供,而不是作為內核的TCP/IP實現的一部分。
更為復雜的是,RARP請求是作為一個特殊類型的以太網數據幀來傳送的,這說明RARP服務器必須能夠發送和接收這種類型的以太網數據幀。
2.每個網絡有多個RAPR服務器
RARP服務器實現的一個復雜因素是RARP請求是在硬件層上進行廣播的,這意味著它們不經過路由器進行轉發。為了讓無盤系統在RARP服務器關機的狀態下也能引導,通常在一個網絡上(例如一根電纜)要提供多個RARP服務器。
當服務器的數目增加時(以提供冗余備份),網絡流量也隨之增加,因為每個服務器對每個RARP請求都要發送RARP應答。發送RARP請求的無盤系統一般采用最先收到的RARP應答(對于ARP,我們從來沒有遇到這種情況,因為只有一臺主機發送ARP應答)。另外,還有一種可能發生的情況是每個RARP服務器同時應答,這樣會增加以太網發生沖突的概率。
四. 小結
RARP協議是許多無盤系統在引導時用來獲取IP地址的。RARP分組格式基本上與ARP分組一致。一個RARP請求在網絡上進行廣播,它在分組中標明發送端的硬件地址,以請求相應I P地址的響應。應答通常是單播傳送的。
RARP帶來的問題包括使用鏈路層廣播,這樣就阻止大多數路由器轉發RARP請求,只返回很少信息:只是系統的IP地址。在第1 6章中,我們將看到BOOTP在無盤系統引導時會返回更多的信息:IP地址和引導主機的名字等。
雖然RARP在概念上很簡單,但是RARP服務器的實現卻與系統相關。因此,并不是所有的TCP/IP實現都提供RARP服務器。
posted on 2007-08-23 22:21
阿蜜果 閱讀(1547)
評論(4) 編輯 收藏 所屬分類:
網絡通信相關