天天看點

《TCPIP詳解卷一》第四章(ARP位址解析協定)學習筆記

4.1引言

當一台主機把以太網資料幀發送到位于同一區域網路上的另一台主機時,是根據48 bit的以太網位址來确定目的接口的。裝置驅動程式從不檢查IP資料報中的目的I P位址。是以就有了ARP協定,為這兩種不同的位址形式提供映射。

本章及下一章我們要讨論的兩種協定:A RP(位址解析協定)和R A R P(逆位址解析協定)

A R P為I P位址到對應的硬體位址之間提供動态映射。我們之是以用動态這個詞是因為這個過程是自動完成的,一般應用程式使用者或系統管理者不必關心。

R A R P是被那些沒有磁盤驅動器的系統使用(一般是無盤工作站或X終端),它需要系統管理者進行手工設定。

4.2一個例子

指令:% ftp heyong

具體過程如下圖:

具體步驟描述如下:

(1)FTP用戶端調用函數g e t h o s t b y n a m e()把主機名(heyong)轉換成32 bit的IP位址。這個函數在D N S(域名系統)中稱作解析器,我們将在第1 4章對它進行介紹。這個轉換過程或者使用DNS,或者在較小網絡中使用一個靜态的主機檔案(/e t c / h o s t s)。

(2)F T P用戶端請求T C P使用上一步獲得到的I P位址建立連接配接。

(3)T C P發送一個連接配接請求分段到遠端的主機,即用上述I P位址發送一份I P資料報。

(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請求資料幀中包含目的主機的IP位址(主機名為heyong),其意思是“如果你是這個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的功能是在32 bit的I P位址和采用不同網絡技術的硬體位址之間提供動态映射。

點對點鍊路不使用A R P。當設定這些鍊路時(一般在引導過程進行),必須告知核心鍊路每一端的I P位址。像以太網位址這樣的硬體位址并不涉及。

4.3 ARP高速緩存

A R P高效運作的關鍵是由于每個主機上都有一個A R P高速緩存。這個高速緩存存放了最近I n t e r n e t位址到硬體位址之間的映射記錄。高速緩存中每一項的生存時間一般為2 0分鐘,起始時間從被建立時開始算起。

我們可以用a r p指令來檢查ARP高速緩存。參數-a的意思是顯示高速緩存中所有的内容。

指令:% arp -a

sun (140.252.13.33) at 8:0:20:3:f6:42

svr4 (140.252.13.34) at 0:0:c0:c2:9b:26

48 bit的以太網位址用6個十六進制的數來表示,中間以冒号隔開。

4.4 ARP的分組格式

A R P請求和應答分組的格式如下圖,A R P可以用于其他類型的網絡,可以解析I P位址以外的位址。緊跟着幀類型字段的前四個字段指定了最後四個字段的類型和長度。

以太網的源位址和目的位址:目的位址為全1的特殊位址是廣播位址。電纜上的所有以太網接口都要接收廣播的資料幀。

         幀類型:表示後面資料的類型。對于AR P請求或應答來說,該字段的值為0 x 0 8 0 6。

形容詞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資料報的以太網資料幀中的類型字段的值相同。

硬體位址長度和協定位址長度:分别指出硬體位址和協定位址的長度,以位元組為機關。對于以太網上I P位址的A R P請求或應答來說,它們的值分别為6(48bit)和4(32bit)。

         OP字段:操作字段指出四種操作類型,它們是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,最後把它發送回去。

4.6 ARP代理

A R P請求是從一個網絡的主機發往另一個網絡上的主機,那麼連接配接這兩個網絡的路由器就可以回答該請求,這個過程稱作委托AR P或A R P代理(Proxy ARP)。這樣可以欺騙發起A R P請求的發送端,使它誤以為路由器就是目的主機,而事實上目的主機是在路由器的“另一邊”。

路由器的功能相當于目的主機的代理,把分組從其他主機轉發給它。

A R P代理也稱作混合A R P(p r o m i sc u o u s A R P)或ARP 出租(ARP hack)。這些名字來自于A R P代理的其他用途:通過兩個實體網絡之間的路由器可以互相隐藏實體網絡。

4.7免費ARP

另一個A R P特性稱作免費ARP(gratuitous ARP)。它是指主機發送A R P查找自己的I P位址。通常,它發生在系統引導期間進行接口配置的時候。

免費A R P可以有兩個方面的作用:

1) 一個主機可以通過它來确定另一個主機是否設定了相同的I P位址。主機b s d i并不希望對此請求有一個回答。但是,如果收到一個回答,那麼就會在終端日志上産生一個錯誤消息“以太網位址:a : b : c : d : e : f發送來重複的I P位址”。這樣就可以警告系統管理者,某個系統有不正确的設定。

2) 如果發送免費A R P的主機正好改變了硬體位址(很可能是主機關機了,并換了一塊接口卡,然後重新啟動),那麼這個分組就可以使其他主機高速緩存中舊的硬體位址進行相應的

更新。一個比較著名的A R P協定事實是,如果主機收到某個I P位址的A R P請求,而且它已經在接收者的高速緩存中,那麼就要用A R P請求中的發送端硬體位址(如以太網位址)對高速緩存中相應的内容進行更新。主機接收到任何A R P請求都要完成這個操作(A R P請求是在網上廣播的,是以每次發送A R P請求時網絡上的所有主機都要這樣做)。

4.8 arp指令

arp –a //顯示A R P高速緩存中的所有内容

arp –d  //删除A R P高速緩存中的某一項内容

arp –s  //增加高速緩存中的内容,這個參數需要主機名和以太網位址:對應于主機名的I P

                   位址和以太網位址被增加到高速緩存中。新增加的内容是永久性的(比如,它沒有

逾時值),除非在指令行的末尾附上關鍵字t e m p。

繼續閱讀