(一百六十五)TCP/IP詳解筆記-第4章 ARP:地址解析協議

4.1 引言

本章我們要討論的問題是隻對TCP/IP協議簇有意義的IP地址。數據鏈路如以太網或令牌環網都有自己的尋址機制(常常爲48 bit地址),這是使用數據鏈路的任何網絡層都必須遵從的。一個網絡如以太網可以同時被不同的網絡層使用。例如,一組使用TCP/IP協議的主機和另一組使用某種PC網絡軟件的主機可以共享相同的電纜。

當一臺主機把以太網數據幀發送到位於同一局域網上的另一臺主機時,是根據48 bit的以太網地址來確定目的接口的。設備驅動程序從不檢查IP數據報中的目的IP地址。

地址解析爲這兩種不同的地址形式提供映射:32 bit的IP32位Internet地址地址和數據鏈路層使用的任何類型的地址。RFC 826[Plummer 1982]是ARP規範描述文檔。

本章及下一章我們要討論的兩種協議如圖4-1所示:ARP(地址解析協議)和RARP(逆地址解析協議)。

圖4-1 地址解析協議:ARP和RARP

ARP爲IP地址到對應的硬件地址之間提供動態映射。我們之所以用動態這個詞是因爲這個過程是自動完成的,一般應用程序用戶或系統管理員不必關心。

RARP是被那些沒有磁盤驅動器的系統使用(一般是無盤工作站或X終端),它需要系統管理員進行手工設置。我們在第5章對它進行討論。

總結:ARP是將ip地址解析爲鏈路層地址,RARP相反。

 

4.2一個例子

任何時候我們敲入下面這個形式的命令:

% ftp bsdi

都會進行以下這些步驟。這些步驟的序號如圖4-2所示。

  1. 應用程序FTP客戶端調用函數gethostbyname(3)把主機名(bsdi)轉換成32 bit的IP地址。這個函數在DNS(域名系統)中稱作解析器,我們將在第14章對它進行介紹。這個轉換過程或者使用DNS,或者在較小網絡中使用一個靜態的主機文件(/etc/hosts)。
  2. FTP客戶端請求TCP用得到的IP地址建立連接。
  3. TCP發送一個連接請求分段到遠端的主機,即用上述IP地址發送一份IP數據報(在第18章我們將討論完成這個過程的細節)。
  4. 如果目的主機在本地網絡上(如以太網、令牌環網或點對點鏈接的另一端),那麼IP數據報可以直接送到目的主機上。如果目的主機在一個遠程網絡上,那麼就通過IP選路函數來確定位於本地網絡上的下一站路由器地址,並讓它轉發IP數據報。在這兩種情況下,IP數據報都是被送到位於本地網絡上的一臺主機或路由器。
  5. 假定是一個以太網,那麼發送端主機必須把32 bit的IP地址變換成48 bit的以太網地址。從邏輯Internet地址到對應的物理硬件地址需要進行翻譯。這就是ARP的功能。ARP本來是用於廣播網絡的,有許多主機或路由器連在同一個網絡上。
  6. ARP發送一份稱作ARP請求的以太網數據幀給以太網上的每個主機。這個過程稱作廣播,如圖4-2中的虛線所示。ARP請求數據幀中包含目的主機的IP地址(主機名爲bsdi),其意思是“如果你是這個IP地址的擁有者,請回答你的硬件地址。”
  7. 目的主機的ARP層收到這份廣播報文後,識別出這是發送端在尋問它的IP地址,於是發送一個ARP應答。這個ARP應答包含IP地址及對應的硬件地址。
  8. 收到ARP應答後,使ARP進行請求—應答交換的IP數據報現在就可以傳送了。
  9. 發送IP數據報到目的主機。

在ARP背後有一個基本概念,那就是網絡接口有一個硬件地址(一個48 bit的值,標識不同的以太網或令牌環網絡接口)。在硬件層次上進行的數據幀交換必須有正確的接口地址。但是,TCP/IP有自己的地址:32 bit的IP地址。知道主機的IP地址並不能讓內核發送一幀數據給主機。內核(如以太網驅動程序)必須知道目的端的硬件地址才能發送數據。ARP的功能是在32 bit的IP地址和採用不同網絡技術的硬件地址之間提供動態映射。

點對點鏈路不使用ARP。當設置這些鏈路時(一般在引導過程進行),必須告知內核鏈路每一端的IP地址。像以太網地址這樣的硬件地址並不涉及。

總結:感覺FTP發送數據包經歷瞭如下幾個過程

1)應用層 dns將主機名轉換爲ip地址

2)傳輸層 用剛纔的ip地址發送ip數據報

3)鏈路層 藉助ARP將ip地址轉換爲物理地址併發送ARP請求

4)目的主機收到ARP請求進行ARP應答

5)收到ARP應答後開始ip數據報傳送到目的主機

突然忘記了ARP是在哪一層了,放個圖,是在鏈路層,將ip發來的數據報中的ip地址轉換爲物理地址,這個物理地址結合上下文應該是自己的物理地址,之後發個ARP請求出去,ARP應答會攜帶目的主機的物理地址

 

4.3 ARP高速緩存

ARP高效運行的關鍵是由於每個主機上都有一個ARP高速緩存。這個高速緩存存放了最近Internet地址到硬件地址之間的映射記錄。高速緩存中每一項的生存時間一般爲20分鐘,起始時間從被創建時開始算起。

我們可以用arp(8)命令來檢查ARP高速緩存。參數-a的意思是顯示高速緩存中所有的內容。

bsdi %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.8小節我們將討論arp命令的其他功能。

總結:

C:\Users\83535>arp -a

接口: 192.168.0.102 --- 0x8
  Internet 地址         物理地址              類型
  192.168.0.1           20-6b-e7-93-84-f7     動態
  192.168.0.100         e4-db-6d-6f-dd-b2     動態
  192.168.0.101         e4-46-da-6b-f5-50     動態
  192.168.0.255         ff-ff-ff-ff-ff-ff     靜態
  224.0.0.2             01-00-5e-00-00-02     靜態
  224.0.0.22            01-00-5e-00-00-16     靜態
  224.0.0.251           01-00-5e-00-00-fb     靜態
  224.0.0.252           01-00-5e-00-00-fc     靜態
  239.255.255.250       01-00-5e-7f-ff-fa     靜態
  255.255.255.255       ff-ff-ff-ff-ff-ff     靜態

 

4.4 ARP的分組格式

在以太網上解析IP地址時,ARP請求和應答分組的格式如圖4-3所示(ARP可以用於其他類型的網絡,可以解析IP地址以外的地址。緊跟着幀類型字段的前四個字段指定了最後四個字段的類型和長度)。

圖4-3 用於以太網的ARP請求或應答分組格式

以太網報頭中的前兩個字段是以太網的源地址和目的地址。目的地址爲全1的特殊地址是廣播地址。電纜上的所有以太網接口都要接收廣播的數據幀。

兩個字節長的以太網幀類型表示後面數據的類型。對於ARP請求或應答來說,該字段的值爲0x0806。

形容詞hardware(硬件)和protocol(協議)用來描述ARP分組中的各個字段。例如,一個ARP請求分組詢問協議地址(這裏是IP地址)對應的硬件地址(這裏是以太網地址)。

硬件類型字段表示硬件地址的類型。它的值爲1即表示以太網地址。協議類型字段表示要映射的協議地址類型。它的值爲0x0800即表示IP地址。它的值與包含IP數據報的以太網數據幀中的類型字段的值相同,這是有意設計的(參見圖2-1)。

接下來的兩個1字節的字段,硬件地址長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節爲單位。對於以太網上IP地址的ARP請求或應答來說,它們的值分別爲6和4。

操作字段指出四種操作類型,它們是ARP請求(值爲1)、ARP應答(值爲2)、RARP請求(值爲3)和RARP應答(值爲4)(我們在第5章討論RARP)。這個字段必需的,因爲ARP請求和ARP應答的幀類型字段值是相同的。

接下來的四個字段是發送端的硬件地址(在本例中是以太網地址)、發送端的協議地址(IP地址)、目的端的硬件地址和目的端的協議地址。注意,這裏有一些重複信息:在以太網的數據幀報頭中和ARP請求數據幀中都有發送端的硬件地址。

對於一個ARP請求來說,除目的端硬件地址外的所有其他的字段都有填充值。當系統收到一份目的端爲本機的ARP請求報文後,它就把硬件地址填進去,然後用兩個目的端地址分別替換兩個發送端地址,並把操作字段置爲2,最後把它發送回去。

總結:這節主要講了下幀的格式以及發送的細節

待續。。。

 

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