天天看點

TCP/IP詳解學習筆記——位址解析協定ARP

一 概述 我們知道,IP協定是用來在不同的實體網絡之間傳輸資料的。要在不同的網絡之間傳輸資料,至少需要将IP協定所用的位址轉換成特定網絡所使用的實體位址。一般來說,就是将IPv4位址轉換為mac位址。要想與一個特定的裝置進行資料交換,光知道它的IP位址是不夠的,還需要知道它的實體位址。而位址解析協定(ARP)就是來完成這個工作的,它能将IPv4位址轉換為裝置的硬體位址。需要注意的是,ARP隻能轉換IPv4的位址,IPv6需要使用另外的協定進行轉換。 另外需要說明的是,網絡層和資料鍊路層位址并不是由同一個組織進行配置設定的。對于硬體位址來說,是由生産它的廠家進行配置設定的,并且一旦生産出來,實體位址永遠不會改變。而IP位址是由使用者或者管理者配置設定的,并且是可以更改的。我們知道IP資料包是封裝在資料鍊路層的幀裡的。當一個包含IP資料包得以太網幀資料在一個區域網路内傳輸時,是通過48bit的以太網位址(硬體位址)來決定目的端口的。 ARP提供動态的位址解析。就是說,解析的過程是自動的、自适應的,當實體位址改變(但是IP位址沒變)的時候,比如更換網卡,ARP仍然能夠正确的通過IP位址找到對應的網卡,而不需要進行額外的配置。

二 一個例子 當我們使用網絡的時候,比如打開浏覽器,浏覽一個網頁,我們使用的主機需要判斷怎樣與我們感興趣的網站伺服器主機建立連接配接。第一個需要判斷的就是伺服器主機是處于本地還是非本地。換句話說,是在同一個區域網路還是處于另外的網絡。如果處于同一個區域網路,隻需要ARP協定即可通路,否則,需要通過路由器進行連接配接。 當兩台主機處于同一網段,或者說處于同一區域網路,那麼用ARP可以直接進行通路(direct delivery)。我們通過一個例子來說明直接通路要經曆哪些步驟。 比如我們在浏覽器裡輸入http://10.0.0.1,将會發生以下步驟: 1.應用程式(浏覽器)擷取目的IP位址,這裡是10.0.0.1。 2.應用程式請求TCP協定建立與10.0.0.1的連接配接 3.TCP發送連接配接請求給10.0.0.1。 4.我們這裡假設10.0.0.1和本地主機處于同一區域網路,是以請求連接配接資料可以直接發送而不用經過路由器。 5.這個時候,需要找到10.0.0.1對應的主機,就必須将該IP位址轉換為對應的實體位址。這就是ARP的作用。ARP使用廣播的方式傳輸資料,如果區域網路不支援廣播,那麼需要用到更加複雜的協定,當然,這種情況很少見。 6.ARP給每個連接配接在這個區域網路的主機發送ARP請求資料。ARP請求資料裡面包含目的IP位址,也就是10.0.0.1,該請求的意思是,如果你的IP位址是10.0.0.1,那麼把你的mac位址發給我。

TCP/IP詳解學習筆記——位址解析協定ARP

7.如上圖所示,本地主機廣播ARP請求給所有主機,隻有具有目的IP位址的主機會做出應答,應答資料中包括了自身的mac位址。應答不再采用廣播方式,而是單點傳播給發送請求的主機。與此同時,所有收到ARP請求的主機,都能在請求資料中得到發送請求的主機的IP位址和對應的mac位址,他們會将其存在自己的緩存中,以供後續使用。 8.收到應答後,TCP的連接配接請求資訊現在就可以發送了,因為現在能夠找到目的主機在哪兒了。 9.發送資料至目的主機。 點對點鍊路(PPP)不使用ARP。在設定這些鍊路時,必須告知核心鍊路每一端的IP位址,是以像以太網這樣的硬體位址并不涉及。

三 ARP高速緩存 ARP高效運作的關鍵是由于每個主機上都有一個ARP高速緩存。這個高速緩存存放了最近IP位址到硬體位址之間的映射記錄。高速緩存中每一項記錄的生存時間一般位20分鐘,開始時間從被建立時開始。

四 ARP幀格式

TCP/IP詳解學習筆記——位址解析協定ARP

在以太網上解析IP位址時,ARP請求和應答分組的格式如上圖所示。一開始的14位元組是以太網頭部,在上一章介紹資料鍊路層時讨論過。剩餘的部分是由ARP協定所定義的。ARP資料部分的前8個位元組是通用的,後面的部分是特定的。這裡是針對IP位址和以太網實體位址的轉換。事實上,除此之外,ARP還可以用于其他類型的網絡。如果換了其他類型,這裡的發送方和接收方的硬體位址和IP位址都要做出相應的更改。是以說這個部分是特定的,而前面的Hard Type字段到Op字段8個位元組是通用的,無論轉換什麼樣的網絡類型,都是這8位元組。

在以太網幀頭部的兩個部分分别是目的位址字段和源位址字段,在發送ARP請求時,目的位址字段要填充為全1,也就是廣播位址。類型或長度字段(Length/Type)為0x0806,表示這是ARP協定資料。 Hard Type字段表示硬體位址類型,值為1表示以太網位址。Prot Type表示要解析的協定位址類型,值為0x0800表示IPv4位址。Hard Size字段和Prot Size字段分别表示硬體位址和協定位址的長度,這裡分别是6和4.對應的時mac位址6位元組,IP位址4位元組。Op字段指出4種操作類型。1表示ARP請求,2表示ARP應答,3表示RARP請求,4表示RARP應答。RARP是ARP的逆協定,現在已經很少用到了。接下來的分别是發送端的硬體位址、協定位址,目的端的硬體位址、協定位址。大概就是這樣了。

五 ARP代理(Proxy ARP) 代理ARP就是通過使用一個主機(通常是一個特定配置的路由器),來作為指定的裝置對另一裝置的ARP請求作出應答。 舉個例子

TCP/IP詳解學習筆記——位址解析協定ARP

PC1和PC2雖然屬于不同的廣播域,但它們處于同一網段中,是以PC1會向PC2發出ARP請求廣播包,請求獲得PC2的mac位址。由于路由器不會轉發廣播包,是以ARP請求隻能到達路由器,不能到達PC2。當在路由器上啟用ARP代理後,路由器會檢視ARP請求,發現IP位址172.16.20.100屬于它連接配接的另一個網絡,是以路由器用自己的接口mac位址替換PC2的mac位址,向PC1發送了一個ARP應答。PC1收到ARP應答後,會認為PC2的mac位址就是00-00-0c-94-36-ab,不會感覺ARP代理的存在。正是由于這個原因,代理ARP用的不多,并且如果可能,盡可能避免使用它。

六 Gratuitous ARP 和位址沖突檢測(ACD) Gratuitous ARP的意思就是主機向自身IP位址發送ARP請求。這樣做得目的有兩個: (1)這樣可以讓主機知道自身的IP位址有沒有已經被其他主機占用。顯然,如果已經被其他主機占用的話,傳回的mac位址和自身mac位址不一緻。 (2)如果主機剛好更換了網卡,那麼使用Gratuitous ARP就能讓廣播域中其他的主機更新正确的IP位址到mac位址映射。因為其他主機的ARP緩存中存儲的可能是更換網卡之前的mac位址,是以需要更新。

繼續閱讀