TCP IP詳解 5 逆位址解析協議

2021-03-31 08:56:30 字數 3307 閱讀 3286

5.1 引言

具有本地磁碟的系統引導時,一般是從磁碟上的配置檔案中讀取ip位址。但是無盤

機,如x終端或無盤工作站,則需要採用其他方法來獲得ip位址。

網路上的每個系統都具有唯一的硬體位址,它是由網路介面生產廠家配置的。無盤

系統的rarp實現過程是從介面卡上讀取唯一的硬體位址,然後傳送乙份rarp請求(一幀

在網路上廣播的資料),請求某個主機響應該無盤系統的ip位址(在rarp回答中)。

在概念上這個過程是很簡單的,但是實現起來常常比arp要困難,其原因在本章後

面介紹。rarp的正式規範是rfc 903 [finlayson et al. 1984]。

5.2 rarp的分組格式

rarp分組的格式與arp分組基本一致(圖4.3)。它們之間主要的差別是rarp請求或

回答的幀型別**為0x8035,而且rarp請求的操作**為3,回答操作**為4。

對應於arp,rarp請求以廣播方式傳送,而rarp回答一般是單播(unicast)傳送的。

圖5.1 rarp請求和回答

rarp請求是廣播方式(第1行),而第2行的rarp回答是單播方式。第2行的輸出中

at sun表示rarp回答包含主機sun的ip位址(140.252.13.33)。

在第3行中,我們可以看到,一旦sun收到rarp回答,它就傳送乙個tftp讀請求

(rrq)給檔案8cfc0d21.sun4c。(tftp表示簡單檔案傳輸協議。我們將在第15章詳細

介紹它。)檔名中的8個十六進製制數字表求主機sun的ip位址140.252.13.33。這個ip

位址在rarp回答中返回。檔名的字尾sun4c表示被引導系統的型別。

tcpdump在第3行中指出ip資料報的長度是65個位元組,而不是乙個udp資料報(實際

上是乙個udp資料報),因為我們執行tcpdump命令時帶有-e引數,以檢視硬體層的位址。

在圖5.1中需要指出的另一點是,第2行中的乙太網資料幀長度比最小長度還要小(在

4.5節中我們說過應該是60位元組。)其原因是我們在傳送該乙太網資料幀的系統(bisdi)

上執行tcpdump命令的。應用程式rarpd寫42位元組到bsd分組過濾裝置上(其中14位元組為

乙太網資料幀的報頭,剩下的28位元組是rarp回答),這就是tcpdump收到的副本。但是

乙太網裝置驅動程式要把這一短幀填充空白字元以達到最小傳輸長度(60)。如果我們

在另乙個系統上執行tcpdump命令,其長度將會是60。

我們從這個例子可以看出,當無盤系統從rarp回答中收到它的ip位址後,它將傳送

tftp請求來讀取引導映象。在這一點上我們將不再進一步詳細討論無盤系統是如何引導

的。(第16章將描述無盤x終端利用rarp,bootp以及tftp進行引導的過程。)

當網路上沒有rarp伺服器時,其結果如圖5.2所示。每個分組的目的位址都是以太

網廣播位址。在who-後面的乙太網位址是目的硬體位址,跟在tell後面的乙太網位址是

傳送端的硬體位址。

請注意重發的頻度。第一次重發是在6.55秒以後,然後增加到42.80秒,然後又減

到5.34秒和6.55秒,然後又回到42.79秒。這種不確定的情況一直繼續下去。如果計算

一下兩次重發之間的時間間隔,我們發現存在一種雙倍的關係:從5.34到6.55是1.21秒,

從 6.55到8.97是2.42秒,從8.97到13.80是4.83秒,一直這樣繼續下去。當時間間隔達

到某個閾值時(大於42.80秒),它又重新置為5.34秒。

圖5.2 網路中沒有rarp伺服器的rarp請求

超時間隔採用這樣的遞增方法比每次都採用相同值的方法要好。在圖6.8中,我們

將看到一種錯誤的超時重發方法,以及在第21章中將看到tcp的超時重發機制。

5.4 rarp伺服器的設計

雖然rarp在概念上很簡單,但是設計乙個rarp伺服器與系統相關而且比較複雜。相

反,提供乙個arp伺服器很簡單,通常是tcp/ip在核心中實現的一部分。由於核心知道

ip位址和硬體位址,因此當它收到乙個詢問ip位址的arp請求時,只需用相應的硬體地

址來提供回答就可以了。

作為使用者程序的rarp伺服器

rarp伺服器的複雜性在於,伺服器一般要為多個主機(網路上所有的無盤系統)提

供硬體位址到ip位址的對映。該對映包含在乙個磁碟檔案中(在unix系統中一般位於

/etc/ethers目錄中)。由於核心一般不讀取和分析磁碟檔案,因此rarp伺服器的功能

就由使用者程序來提供,而不是作為核心的tcp/ip實現的一部分。

更為複雜的是,rarp請求是作為乙個特殊型別的乙太網資料幀來傳送的(幀型別字

段值為0x8035,如圖2.1所示)。這說明rarp伺服器必須能夠傳送和接收這種型別的以

太網資料幀。在附錄a中,我們描述了bsd分組過濾器,sun的網路介面栓,以及svr4數

據鏈路提供者介面都可用來接收這些資料幀。由於傳送和接收這些資料幀與系統有關,

因此rarp伺服器的實現與系統是**在一起的。

每個網路有多個rarp伺服器

rarp伺服器實現的乙個複雜因素是rarp請求是在硬體層上進行廣播的,如圖5.2所

示。這意味著它們不經過路由器進行**。為了讓無盤系統在rarp伺服器關機的狀態下

也能引導,通常在乙個網路上(例如一根電纜)要提供多個rarp伺服器。

當伺服器的數目增加時(以提供冗餘備份),網路流量也隨之增加,因為每個服務

器對每個rarp請求都要傳送rarp回答。傳送rarp請求的無盤系統一般採用最先收到的

rarp回答。(對於arp我們從來沒有遇到這種情況,因為只有一台主機傳送arp回答。)

另外,還有一種可能發生的情況是每個rarp伺服器同時回答,這樣會增加乙太網發生衝

突的概率。

5.5 小結

rarp協議是許多無盤系統在引導時用來獲取ip位址。rarp分組格式基本上與arp分

組一致。乙個rarp請求在網路上進行廣播,它在分組中標明傳送端的硬體位址,以請求

相應ip位址的響應。回答通常是單播發送的。

rarp帶來的問題包括使用鏈路層廣播,這樣就阻止大多數路由器**rarp請求,只

返回很少資訊:只是系統的ip位址。在第16章中,我們將看到bootp在無盤系統引導時

會返回更多的資訊:ip位址,引導主機的名字等等。

雖然rarp在概念上很簡單,但是rarp伺服器的實現卻與系統相關。因此,並不是所

有的tcp/ip實現都提供rarp伺服器。

習題5.1 rarp需要不同的幀型別欄位嗎?arp和rarp都使用相同的值0x0806嗎?

5.2 在乙個有多個rarp伺服器的網路上,如何防止它們的響應發生衝突?

5-3

TCP IP 第5章 RARP 逆位址解析協議

昨天學習了下 arp 位址解析協議,簡單點說,arp就是將ip位址對映為實體地址,鏈路層位址,那麼今天要學習的這個rarp位址和arp正好相反,不用我說,大家基本已經明白了它是幹嘛用的吧,ok,現在詳細學習一下arap到底是個啥。什麼情況下需要用到rarp協議呢,具有本地磁碟的系統,一般從磁碟上的配...

ARP 位址解析協議 RARP 逆位址解析協議

資料鏈路如乙太網或令牌環網都有自己的定址機制 常常為48bit 這是使用資料鏈路的任何網路層都必須遵從的。當一台主機把乙太網資料幀傳送到位於同一區域網上的另一台主機上時,是根據48bit的乙太網位址來確認目的介面位址的。裝置驅動程式從不檢查ip資料報中的目的ip位址。資料解析為這兩種不同的位址形式提...

RARP 逆位址解析協議

圖5 1 rarp請求和應答r a r p請求是廣播方式 第1行 而第2行的r a r p應答是單播方式。第2行的輸出中a t s u n表示r a r p應答包含主機s u n的i p位址 1 4 0 2 5 2 1 3 3 3 在第3行中,我們可以看到,一旦s u n收到i p位址,它就傳送乙個...