當一臺主機把以太網數據幀發送到位于同一局域網上的另一臺主機時,是根據48bit的以太網地址來確定目的接口的。設備驅動程序從不檢查IP數據報中的目的IP地址。
ARP為IP地址到對應的硬件地址(MAC)之間提供動態映射。

ARP高速緩存
ARP高效運行的關鍵是由于每個主機上都有一個A R P高速緩存。這個高速緩存存放了最近Internet地址到硬件地址之間的映射記錄。高速緩存中每一項的生存時間一般為20分鐘,起始時間從被創建時開始算起。
可以用arp -a命令來查看ARP高速緩存。
ARP的分組格式
在以太網上解析IP地址時, ARP請求和應答分組的格式如圖1所示:

圖1:用于以太網的ARP請求或應答分組格式
以太網報頭中的前兩個字段是以太網的源地址和目的地址。目的地址為全1的特殊地址是廣播地址。電纜上的所有以太網接口都要接收廣播的數據幀。
兩個字節長的以太網幀類型表示后面數據的類型。對于ARP請求或應答來說,該字段的
值為0x0806。形容詞hardware(硬件)和protocol(協議)用來描述ARP分組中的各個字段。例如,一個ARP請求分組詢問協議地址(這里是I P地址)對應的硬件地址(這里是以太網地址)。
硬件類型字段表示硬件地址的類型。它的值為1即表示以太網地址。
協議類型字段表示要映射的協議地址類型。它的值為0x0800即表示IP地址。它的值與包含IP數據報的以太網數據幀中的類型字段的值相同,這是有意設計的。
接下來的兩個1字節的字段,硬件地址長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節為單位。對于以太網上IP地址的ARP請求或應答來說,它們的值分別為6和4。
操作字段指出四種操作類型,它們是ARP請求(值為1)、ARP應答(值為2)、RARP請求
(值為3)和RARP應答(值為4)。這個字段必需的,因為ARP請求和ARP應答的幀類型字段值是相同的。
接下來的四個字段是發送端的硬件地址(在本例中是以太網地址)、發送端的協議地址
(IP地址)、目的端的硬件地址和目的端的協議地址。注意,這里有一些重復信息:在以太網的數據幀報頭中和ARP請求數據幀中都有發送端的硬件地址。
對于一個ARP請求來說,除目的端硬件地址外的所有其他的字段都有填充值。當系統收
到一份目的端為本機的ARP請求報文后,它就把硬件地址填進去,然后用兩個目的端地址分別替換兩個發送端地址,并把操作字段置為2,最后把它發送回去。
ARP代理
如果ARP請求是從一個網絡的主機發往另一個網絡上的主機,那么連接這兩個網絡的路
由器就可以回答該請求,這個過程稱作委托ARP或ARP代理(Proxy ARP)。這樣可以欺騙發起
ARP請求的發送端,使它誤以為路由器就是目的主機,而事實上目的主機是在路由器的“另
一邊”。路由器的功能相當于目的主機的代理,把分組從其他主機轉發給它。
免費ARP
免費ARP (gratuitous ARP)。它是指主機發送ARP查找自己的IP地址。通常,它發生在系統引導期間進行接口配置的時候。
posted on 2008-06-05 20:51
水 閱讀(2619)
評論(0) 編輯 收藏 引用 所屬分類:
tcp/ip