TCP/IP協議詳解筆記——ARP協議和RARP協議

ARP:地址解析協議

對於以太網,數據鏈路層上是根據48bit的以太網地址來肯定目的接口,設備驅動程序從不檢查IP數據報中的目的IP地址。ARP協議爲IP地址到對應的硬件地址之間提供動態映射。緩存

工做過程

在以太網(ARP協議只適用於局域網)中,若是本地主機想要向某一個IP地址的主機(路由表中的下一跳路由器或者直連的主機,注意此處IP地址不必定是IP數據報中的目的IP)發包,可是並不知道其硬件地址,此時利用ARP協議提供的機制來獲取硬件地址,具體過程以下:服務器

1) 本地主機在局域網中廣播ARP請求,ARP請求數據幀中包含目的主機的IP地址。意思是「若是你是這個IP地址的擁有者,請回答你的硬件地址」。網絡

2) 目的主機的ARP層解析這份廣播報文,識別出是詢問其硬件地址。因而發送ARP應答包,裏面包含IP地址及其對應的硬件地址。工具

3) 本地主機收到ARP應答後,知道了目的地址的硬件地址,以後的數據報就能夠傳送了。spa

點對點鏈路不使用ARP協議。代理

幀格式

 ARP/RARP幀格式

  • 以太網目的地址:目的主機的硬件地址。目的地址全爲1的特殊地址是廣播地址。
  • 以太網源地址:源主機的硬件地址。
  • 幀類型:對於ARP協議,該字段爲0x0806。對於RARP協議,該字段爲0x8035
  • 硬件類型:表示硬件地址的類型。值爲1時表示以太網地址。也就是說ARP協議不只僅應用於以太網協議,還能夠支持別的鏈路層協議
  • 協議類型:表示要映射的協議地址類型。值爲0x0800時表示IP協議。
  • 硬件地址長度:與硬件類型對應的硬件地址的長度,以字節爲單位。若是是以太網,則是6字節(MAC長度)。
  • 協議地址長度:與協議類型對應的協議地址長度,以字節爲單位。若是是IP協議,則是4字節(IP地址長度)。
  • 操做類型(op):四中操做類型。ARP請求(1),ARP應答(2),RARP請求(3),RARP應答(4
  • 發送端硬件地址:若是是以太網,則是源主機以太網地址,此處和以太網頭中的源地址對應。
  • 發送端協議地址:若是是IP協議,則表示源主機的IP地址。
  • 目的端硬件地址:若是是以太網,則是目的以太網地址,和以太網頭中的目的地址對應。
  • 目的端協議地址:若是是IP協議,則表示源主機要請求硬件地址的IP地址。
  • 對應ARP請求包來講,目的端的硬件地址字段無須填充,其餘字段都須要填充。對於ARP回覆包來講,全部字段都須要填充。

APR請求包是廣播的,可是ARP應答幀是單播的。blog

以太網數據報最小長度是60字節(14字節的以太網頭,不包含4字節的FCS),ARP數據包長度爲42字節(14字節的以太網頭和28字節的ARP數據),須要加入填充字符到以太網最小長度要求:60字節。接口

ARP高速緩存

每一個主機都有一個ARP高速緩存表,這樣避免每次發包時都須要發送ARP請求來獲取硬件地址。默認老化時間是20分鐘。利用arp -a命令能夠查看顯示系統中高速緩存的內容。路由

Windows下「arp -d」命令能夠清除arp高速緩存表。it

有時候須要手動清除arp緩存,曾經就是由於arp緩存沒有作清理,致使迷惑了好久。遇到的問題:

1) 製做了一個寫路由器MAC地址的工具,每次寫完MAC地址,重啓路由器,會發現沒法telnet登錄路由器。IP地址沒變,可是MAC地址更改了,而ARP緩存表中IP地址映射的仍然是舊的MAC地址。

2) 相似的問題,有兩個路由器具備相同的IP地址。先鏈接一個路由器,登錄成功後,再去鏈接另外一臺路由器,卻發現登錄不了。

ARP代理

若是ARP請求時從一個網絡的主機發往另外一個網絡上的主機,那麼鏈接這兩個網絡的路由器能夠回答該請求,這個過程稱做委託ARP或者ARP代理。這樣能夠欺騙發起ARP請求的發送端,使它誤覺得路由器就是目的主機。

RARP:逆地址解析協議

將局域網中某個主機的物理地址轉換爲IP地址,好比局域網中有一臺主機只知道物理地址而不知道IP地址,那麼能夠經過RARP協議發出徵求自身IP地址的廣播請求,而後由RARP服務器負責回答。RARP協議普遍應用於無盤工做站引導時獲取IP地址

RARP容許局域網的物理機器從網管服務器ARP表或者緩存上請求其IP地址。

幀格式

幀格式同ARP協議,幀類型字段和操做類型不一樣,具體見ARP幀格式描述。

工做原理

1. 主機發送一個本地的RARP廣播,在此廣播包中,聲明本身的MAC地址而且請求任何收到此請求的RARP服務器分配一個IP地址。

2. 本地網段上的RARP服務器收到此請求後,檢查其RARP列表,查找該MAC地址對應的IP地址。

3. 若是存在,RARP服務器就給源主機發送一個響應數據包並將此IP地址提供給對方主機使用。

4. 若是不存在,RARP服務器對此不作任何的響應。

5. 源主機收到從RARP服務器的響應信息,就利用獲得的IP地址進行通信;若是一直沒有收到RARP服務器的響應信息,表示初始化失敗。

相關文章
相關標籤/搜索