CCNP 筆記本

2010 年 03 月 13 日

ARP 協定

Filed under: 網路基本服務原理 — nkongkimo @ 19:52:11

這裡我們要介紹的是 Address Resolution Protocol (ARP)。 ARP 是 TCP/IP 設計者利用乙太網的廣播性質﹐設計出來的位址解釋協定。它的主要特性和優點是它的位址對應關係是動態的﹐它以查詢的方式來獲得 IP 位址和實體位址的對應。它的工作原理非常簡單﹕

1. 首先﹐每一台主機都會在 ARP 快取緩衝區 (ARP Cache)中建立一個 ARP 表格﹐用來記錄 IP 位址和實體位址的對應關係。這個 Table 的每一筆資料會根據自身的存活時間遞減而最終消失﹐以確保資料的真實性。

2. 當發送主機有一個封包要傳送給目的主機的時候﹐並且獲得目的主機的 IP 位址﹔那發送主機會先檢查自己的 ARP 表格中有沒有該 IP 位址的實體位址對應。如果有﹐就直接使用此位址來傳送框包﹔如果沒有﹐則向網路發出一個 ARP Request 廣播封包﹐查詢目的主機的實體位址。這個封包會包含發送端的 IP 位址和實體位址資料。

3. 這時﹐網路上所有的主機都會收到這個廣播封包﹐會檢查封包的 IP 欄位是否和自己的 IP 位址一致。如果不是則忽略﹔如果是則會先將發送端的實體位址和 IP 資料更新到自己的 ARP 表格去﹐如果已經有該 IP 的對應﹐則用新資料覆蓋原來的﹔然後再回應一個 ARP Reply 封包給對方﹐告知發送主機關於自己的實體位址﹔

4. 當發送端接到 ARP Reply 之後﹐也會更新自己的 ARP 表格﹔然後就可以用此紀錄進行傳送了。

如果發送端沒有得到 ARP Reply ﹐則宣告查詢失敗。

ARP 的查詢過程可參考下圖﹕

 

前面說的 ARP 表格﹐只有在 TCP/IP 協定被載入核心之後才會建立﹐如果 TCP/IP 協定被卸載或關閉機器﹐那麼表格就會被清空﹔到下次協定載入或開機的時候再重新建立﹐而同時會向網路發出一個 ARP 廣播﹐告訴其它機器它的目前位址是什麼﹐以便所有機器都能保持最正確的資料。

然而﹐ARP cache 的大小是有所限制的﹐如果超過了界限﹐那麼越長時間沒被使用過渡資料就必須清理掉﹐以騰出空間來儲存更新的資料。所以﹐當機器收到 ARP equest 封包時﹐如果查詢對象不是自己﹐則不會根據發送端位址資料來更新自己的 ARP 表格﹐而是完全忽略該封包。同時﹐每筆存在 cache 中的資料﹐都不是永久保存的﹕每筆資料再更新的時候﹐都會被賦予一個存活倒數計時值﹐如果在倒數時間到達的時候﹐該資料就會被清掉。然而﹐如果該資料在倒數時間到達之前被使用過﹐則計時值會被重新賦予。

當然了﹐ARP 尚有一套機制來處理當 ARP 表格資料不符合實際位址資料的狀況(例如﹐在當前連線尚未結束前﹐收到目的端的位址資料更新訊息)﹔或是目的主機太忙碌而未能回答 ARP 請求等狀況。

ARP 和 RARP 之封包格式

讓我們溫習前面討論 OSI 層級時提到的乙太網路框包格式﹕

乙太網的框包格式

我們可以發現標準的乙太網框包其中有一段 46 到 1500 byte 長度的數據空間﹐假如這是一個 ARP 封包的話﹐那麼該段數據空間就用來包裝整個 ARP 封。ARP 和 RARP 的封包格式是一模一樣的﹕

ARP / ARAP 封包格式

下面我們就封包中每一欄位做一個簡單的說明﹕

Hardware Type

這是指網路界面卡的種類﹐如果該值為 1﹐則表示為乙太網 ( Ethernet )。

Protocol Type

這是指上層網路協定位址種類﹐如果該值為 0x0800﹐則表示為 IP 位址格式。

Hlen

這是指硬體位址長度(單位為 byte)﹐乙太網的位址長度為 6 。

Plen

這是指網路協定位址的長度(單位為 byte)﹐IP 協定位址長度為 4。

Operation

這是指封包類別﹐一共有四種﹕

1 ARP Request

2 ARP Reply

3 RARP Request

4 RARP Reply

Sender HA (Source MAC)

這是指發送端的實體位址﹐如果是乙太網的話﹐將會是一個 6 byte 長度的乙太網位址。

Sender IP(source IP)

這是指發送端的 IP 位址﹐會是一個 4 byte 長度的 IP 位址。

Traget HA(Destination MAC)

這是指目的端的實體位址﹐如果是乙太網的話﹐將會是一個 6 byte 長度的乙太網位址。

Target IP(Destination IP)

這是指目的端的 IP 位址﹐會是一個 4 byte 長度的 IP 位址。

ARP 之 RFC 文件

ARP 的詳細資料可以查詢 RFC-826﹑RFC-814﹑以及 RFC-1166 等文件。而 RARP 的資料則可以參考 RFC-903﹑RFC-906﹑還有 RFC-1293 等文件。

廣告

發表迴響 »

仍無迴響。

RSS feed for comments on this post. TrackBack URI

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

在 WordPress.com 建立免費網站或網誌.

%d 位部落客按了讚: