ARP與RARP 協議

概述

1、ARP協議和RARP協議就負責將IP地址映射到MAC地址上。
2、在IPV6的環境中已經沒有ARP協議了。ICMPV6裏的“NS/NA”結合“被請求節點組播地址”代替ARP完成了工作。

ARP存在的必要性:

OSI模型把網絡工作分爲七層,IP地址在OSI模型的第三層,MAC地址在第二層,彼此不直接打交道。在通過以太網發送IP數據包時,需要先封裝第三層(32位IP地址)、第二層(48位MAC地址)的報頭,但由於發送時只知道目標IP地址,不知道其MAC地址,又不能跨第二、三層,所以需要使用地址解析協議(ARP)
使用地址解析協議,可根據網絡層IP數據包包頭中的IP地址信息解析出目標硬件地址(MAC地址)信息,以保證通信的順利進行。

以太網的傳輸機制

1、以太網是一種廣播網絡、即在同一個以太網中的任何一個主機都能接收到網絡上的所有數據幀。但主機會檢查數據幀的目的地址、如果該數據不是發送給自己的、那麼就會將其丟棄。
2、連接到以太網中的每一個連接口(通常是網卡)都會有一個自己唯一的以太網地址(MAC地址)。
3、如果MAC地址匹配、再交給對應的網絡層交給IP協議處理。
4、IP協議將數據包交給網卡發送的時候、必須告訴網卡將數據發送給那個MAC地址。
5、IP協議在通訊的時候必須知道對方的MAC地址。
6、IP協議中有一張表、表中記錄着每個IP地址對應的MAC地址。這個表產生的過程、就是IP地址向MAC地址的映射過程。

兩者的基本關係

地址解析協議 ARP和逆地址解析協議RARP
在這裏插入圖片描述

ARP

地址解析協議(Address Resolution Protocol,ARP)是在僅知道主機的IP地址時確地址解析協議定其物理地址的一種協議。

計算機A是如何得知B的MAC地址的呢?

在TCP/IP協議中,A給B發送IP包,在報頭中需要填寫B的IP爲目標地址,但這個IP包在以太網上傳輸的時候,還需要進行一次以太包的封裝,在這個以太包中,目標地址就是B的MAC地址。

那A是如何得知B的mac地址呢?
解決問題的關鍵就在於ARP協議。

在A不知道B的MAC地址的情況下,A就廣播一個ARP請求包,請求包中填有B的IP(192.168.1.2),以太網中的所有計算機都會接收這個請求,而正常的情況下只有B會給出ARP應答包,包中就填充上了B的MAC地址,並回復給A。

A得到ARP應答後,將B的MAC地址放入本機緩存,便於下次使用。

本機MAC緩存是有生存期的,生存期結束後,將再次重複上面的過程。

地址解析協議 ARP的實現過程

不管網絡層使用的是什麼協議,在實際網絡的鏈路上傳送數據幀時,最終還是必須使用硬件地址。

每一個主機都設有一個 ARP高速緩存(ARP cache),裏面有所在的局域網上的各主機和路由器的IP地址到硬件地址的映射表。

當主機 A 欲向本局域網上的某個主機B發送IP數據報時,就先在其ARP高速緩存中查看有無主機B的 IP地址。如有,就可查出其對應的硬件地址,再將此硬件地址寫入MAC幀,然後通過局域網將該MAC幀發往此硬件地址。

在這裏插入圖片描述

ARP 高速緩存的作用

爲了減少網絡上的通信量,主機 A 在發送其 ARP請求分組時,就將自己的IP地址到硬件地址的映射寫入ARP請求分組。

當主機 B 收到A的 ARP請求分組時,就將主機A的這一地址映射寫入主機B自己的ARP高速緩存中。這對主機B以後向A發送數據報時就更方便了。

ARP協議注意到的問題

ARP 是解決同一個局域網上的主機或路由器的IP地址和硬件地址的映射問題。

如果所要找的主機和源主機不在同一個局域網上,那麼就要通過 ARP 找到一個位於本局域網上的某個路由器的硬件地址,然後把分組發送給這個路由器,讓這個路由器把分組轉發給下一個網絡。剩下的工作就由下一個網絡來做。

從IP地址到硬件地址的解析是自動進行的,主機的用戶對這種地址解析過程是不知道的。

只要主機或路由器要和本網絡上的另一個已知 IP 地址的主機或路由器進行通信,ARP協議就會自動地將該IP地址解析爲鏈路層所需要的硬件地址。

  • 當兩個主機H1、H2處於同一個物理網絡

在這裏插入圖片描述

1、當源主機H1的IP協議構造好IP數據包、但這時還並不知道目的地的M2、所以並不能交給網卡發送。
2、這時源ARP協議將構造一個ARP數據包、其中包含目的IP地址P2、目的M2空缺着、並將ARP數據包交給網卡廣播發送給整個以太網。
3、H2網卡在收到ARP請求後、將其交給H2的ARP協議進行處理、如果查詢的IP地址與自身的地址P2相符、會將自身的M2填寫進去並作爲ARP響應包交給網卡發送回去。如果查詢的IP地址與自身的地址P2不符、則丟棄該ARP請求包。
4、H1在收到ARP應答包後、再開始向M2發送IP數據包。

  • 當兩個主機H1、H2處於不同的物理網絡

1、網關
網關IP就是默認路由的內網IP地址.正常環境下、當用戶接入網絡時、都會通過DHCP協議或手工配置的方式得到IP和網關信息
2、代理ARP
當ARP請求目標跨網段時、網關設備收到此ARP請求、會用自己的MAC地址返回給請求者、這便是代理ARP(Proxy ARP)。

在這裏插入圖片描述

  • ARP與代理ARP的選擇

1、當電腦沒有網關時、採用代理ARP
2、當電腦有網關時、採用正常ARP

ARP代理

如果ARP請求是從一個網絡的主機發往另一個網絡上的主機,那麼連接這兩個網絡的路由器就可以回答該請求,這個過程稱作委託ARP或ARP代理(Proxy ARP)。
這樣可以欺騙發起ARP請求的發送端,使它誤以爲路由器就是目的主機,而事實上目的主機是在路由器的“另一邊”。
路由器的功能相當於目的主機的代理,把分組從其他主機轉發給它。即路由器代理ARP。

使用 ARP 的四種典型情況

  • 發送方是主機,要把IP數據報發送到本網絡上的另一個主機。這時用ARP找到目的主機的硬件地址。
  • 發送方是主機,要把 IP 數據報發送到另一個網絡上的一個主機。這時用ARP找到本網絡上的一個路由器的硬件地址。剩下的工作由這個路由器來完成。
  • 發送方是路由器,要把 IP 數據報轉發到本網絡上的一個主機。這時用ARP找到目的主機的硬件地址。
  • 發送方是路由器,要把 IP數據報轉發到另一個網絡上的一個主機。這時用ARP找到本網絡上的一個路由器的硬件地址。剩下的工作由這個路由器來完成。

ARP的分組格式

用於以太網的ARP請求或應答分組格式,如圖所示

在這裏插入圖片描述

  • 以太網目的地址,目的地址爲全1的特殊地址是廣播地址,電纜上的所有以太網接口都要接收廣播的數據幀。
  • 以太網源地址:
  • 幀類型:表示數據類型,對於ARP請求或者應答來說,該字段的值爲0x0806,RARP爲0x0835
  • 硬件類型:表示硬件地址的類型,1表示以太網地址。值爲1表示Ethernet。
  • 協議類型:指定發送方支持的上層協議的類型,0x0800表示IP地址。
  • 硬件地址長度:指定物理(硬件)地址的長度,以字節爲單位。
  • 協議地址長度:網絡層協議的地址長度。若爲IP協議,其值爲4,以字節爲單位。
  • 操作類型:ARP請求(1),ARP應答(2),RARP請求(3),RARP應答(4)。可見ARP和RARP的幀類型字段一致。
  • 發送端硬件地址:指定目的物理地址。
  • 發送端IP地址:指定發送方的IP地址
  • 目的端硬件地址:注意這裏有重複信息。
  • 目的端IP地址:指定目的IP地址

RARP

逆地址解析協議 RARP 使只知道自己硬件地址的主機能夠知道其 IP地址。

這種主機往往是無盤工作站。 因此 RARP協議目前已很少使用。

RARP工作原理

(1)網絡上的每臺設備都會有一個獨一無二的硬件地址,通常是由設備廠商分配的MAC地址。PC1從網卡上讀取MAC地址,然後在網絡上發送一個RARP請求的廣播數據包,請求RARP服務器回覆該PC的IP地址。

(2)RARP服務器收到了RARP請求數據包,爲其分配IP地址,並將RARP迴應發送給PC1。

(3)PC1收到RARP迴應後,就使用得到的IP地址進行通訊。

ARP和RARP請求是廣播方式,應答都是單播方式

例子

我們敲入下面這個形式的命令:

% ftp bsdi

都會進行以下這些步驟。這些步驟的序號如圖:

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

在這裏插入圖片描述

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

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