TCP/IP網絡協議學習筆記三

ARP:地址解析協議

當一臺主機把以太網數據幀發送到位於同一局域網上的另一臺主機時,是根據 48 bit的以太網地址來確定目的接口的。設備驅動程序從不檢查IP數據報中的目的I P地址。地址解析爲這兩種不同的地址形式提供映射:32bit的IP地址和數據鏈路層使用的任何類型的地址。

A R P爲I P地址到對應的硬件地址之間提供動態映射。R A R P是被那些沒有磁盤驅動器的系統使用(一般是無盤工作站或 X終端),它需要系統管理員進行手工設置。

1) 應用程序FTP客戶端調用函數g e t h o s t b y n a m e把主機名(bsdi)轉換成32 bit的IP地址。這個函數在D N S(域名系統)中稱作解析器。
2) F T P客戶端請求T C P用得到的I P地址建立連接。
3) T C P發送一個連接請求分段到遠端的主機,即用上述 I P地址發送一份I P數據報(在第1 8章我們將討論完成這個過程的細節) 。
4) 如果目的主機在本地網絡上(如以太網、令牌環網或點對點鏈接的另一端) ,那麼I P數據報可以直接送到目的主機上。如果目的主機在一個遠程網絡上,那麼就通過 I P選路函數來確定位於本地網絡上的下一站路由器地址,並讓它轉發 I P數據報。在這兩種情況下,I P數據報都是被送到位於本地網絡上的一臺主機或路由器。
5) 假定是一個以太網,那麼發送端主機必須把 32 bit的I P地址變換成48 bit的以太網地址。從邏輯I n t e r n e t地址到對應的物理硬件地址需要進行翻譯。這就是 A R P的功能。A R P本來是用於廣播網絡的,有許多主機或路由器連在同一個網絡上。
6) A R P發送一份稱作A R P請求的以太網數據幀給以太網上的每個主機。這個過程稱作廣播。 A R P請求數據幀中包含目的主機的 I P地址(主機名爲b s d i) ,其意思是“如果你是這個I P地址的擁有者,請回答你的硬件地址。 ”
7) 目的主機的A R P層收到這份廣播報文後,識別出這是發送端在尋問它的 I P地址,於是發送一個A R P應答。這個A R P應答包含I P地址及對應的硬件地址。
8) 收到A R P應答後,使A R P進行請求—應答交換的I P數據報現在就可以傳送了。
9) 發送I P數據報到目的主機。

點對點鏈路不使用A R P。當設置這些鏈路時(一般在引導過程進行) ,必須告知內核鏈路每一端的I P地址。像以太網地址這樣的硬件地址並不涉及。
ARP高速緩存
A R P高效運行的關鍵是由於每個主機上都有一個 A R P高速緩存。這個高速緩存存放了最近I n t e r n e t地址到硬件地址之間的映射記錄。

ARP的分組格式

以太網報頭中的前兩個字段是以太網的源地址和目的地址。目的地址爲全 1的特殊地址是廣播地址。電纜上的所有以太網接口都要接收廣播的數據幀。
兩個字節長的以太網幀類型表示後面數據的類型。對於 A R P請求或應答來說,該字段的值爲0x0806。
形容詞h a r d w a r e (硬件)和p r o t o c o l (協議)用來描述A R P分組中的各個字段。例如,一個A R P請求分組詢問協議地址(這裏是I P地址)對應的硬件地址(這裏是以太網地址) 。
硬件類型字段表示硬件地址的類型。它的值爲 1即表示以太網地址。協議類型字段表示要映射的協議地址類型。它的值爲 0 x 0 8 0 0即表示I P地址。它的值與包含I P數據報的以太網數據幀中的類型字段的值相同 。
接下來的兩個1字節的字段,硬件地址長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節爲單位。對於以太網上I P地址的A R P請求或應答來說,它們的值分別爲6和4。
操作字段指出四種操作類型,它們是 A R P請求(值爲1) 、A R P應答(值爲2) 、R A R P請求(值爲3)和R A R P應答(值爲4) (我們在第5章討論R A R P) 。這個字段必需的,因爲A R P請求和A R P應答的幀類型字段值是相同的。
接下來的四個字段是發送端的硬件地址(在本例中是以太網地址) 、發送端的協議地址(I P地址) 、目的端的硬件地址和目的端的協議地址。注意,這裏有一些重複信息:在以太網的數據幀報頭中和A R P請求數據幀中都有發送端的硬件地址。
對於一個A R P請求來說,除目的端硬件地址外的所有其他的字段都有填充值。當系統收到一份目的端爲本機的 A R P請求報文後,它就把硬件地址填進去,然後用兩個目的端地址分別替換兩個發送端地址,並把操作字段置爲 2,最後把它發送回去。

ARP代理

如果A R P請求是從一個網絡的主機發往另一個網絡上的主機,那麼連接這兩個網絡的路由器就可以回答該請求,這個過程稱作委託 A R P或A R P代理(Proxy ARP)。
當子網1 4 0 . 2 5 2 . 1(稱作g e m i n i)上的其他主機有一份I P數據報要傳給地址爲1 4 0 . 2 5 2 . 1 . 2 9的s u n時,g e m i n i比較網絡號(1 4 0 . 2 5 2)和子網號(1) ,因爲它們都是相同的,因而在圖中上面的以太網中發送I P地址1 4 0 . 2 5 2 . 1 . 2 9的A R P請求。路由器n e t b識別出該I P地址屬於它的一個拔號主機,於是把它的以太網接口地址1 4 0 . 2 5 2 . 1作爲硬件地址來回答。主機g e m i n i通過以太網發送I P數據報到n e t b,n e t b通過撥號S L I P鏈路把數據報轉發到s u n。這個過程對於所有1 4 0 . 2 5 2 . 1子網上的主機來說都是透明的,主機s u n實際上是在路由器n e t b後面進行配置的。



免費ARP

免費ARP指的是主機發送ARP查找自己的IP地址,通常發生在系統引導器件進行接口配置的時候。
免費ARP主要有兩個方面的應用:
1)一個主機可以通過它來確定另一個主機是否設置了相同的IP地址。
2)如果發送免費ARP的主機正好改變了硬件地址,那麼這個分組就可以使其他主機告訴緩存中舊的硬件地址進行相應的更新。

在大多數的T C P / I P實現中,A R P是一個基礎協議,但是它的運行對於應用程序或系統管理員來說一般是透明的。A R P高速緩存在它的運行過程中非常關鍵,我們可以用 a r p命令對高速緩存進行檢查和操作。高速緩存中的每一項內容都有一個定時器,根據它來刪除不完整和完整的表項。a r p命令可以顯示和修改A R P高速緩存中的內容。


arp命令

命令及參數- a來顯示A R P高速緩存中的所有內容。
超級用戶可以用選項- d來刪除A R P高速緩存中的某一項內容(這個命令格式可以在運行一些例子之前使用,以讓我們看清楚A R P的交換過程) 。
另外,可以通過選項- s來增加高速緩存中的內容。這個參數需要主機名和以太網地址:對應於主機名的I P地址和以太網地址被增加到高速緩存中。新增加的內容是永久性的(比如,它沒有超時值) ,除非在命令行的末尾附上關鍵字t e m p。
位於命令行末尾的關鍵字 p u b和- s選項一起,可以使系統起着主機 A R P代理的作用。系統將回答與主機名對應的 I P地址的A R P請求,並以指定的以太網地址作爲應答。如果廣播的地址是系統本身,那麼系統就爲指定的主機名起着委託 A R P代理的作用。


RARP:逆地址解析協議

無盤系統的RARP實現過程是從接口卡上讀取唯一的硬件地址,然後發送一份RARP請求(一幀在網絡上廣播的數據),請求某個主機響應該無盤系統的IP地址(在RARP應答中)。

RARP分組格式

R A R P分組的格式與A R P分組基本一致 。它們之間主要的差別是 R A R P請求或應答的幀類型代碼爲0 x 8 0 3 5,而且R A R P請求的操作代碼爲3,應答操作代碼爲4。對應於A R P,R A R P請求以廣播方式傳送,而R A R P應答一般是單播( u n i c a s t )傳送的。

RARP服務器的複雜性

1)內核一般不讀取和分析存儲着硬件地址到IP地址映射的磁盤文件,因此RARP服務器的功能由用戶進程來提供,而不是作爲內核的TCP/IP實現的一部分
2)RARP請求時作爲一個特殊類型的以太網數據幀來傳送的(幀類型字段值爲0x8035),則RARP服務器必須能夠發送和接收這種類型的以太網數據幀。
3)RARP請求時在硬件層上進行廣播着(利用鏈路層),這意味着他們不經過路由器進行轉發。因此爲了讓無盤系統在RARP服務器關機的狀態下也能引導,通常一個網絡上要提供多個RARP服務器,這不僅增加網絡流量,同時增加以太網發生衝突的概率。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章