1. 程式人生 > >TCP/IP詳解學習筆記——地址解析協議ARP

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地址發給我。

7.如上圖所示,本地主機廣播ARP請求給所有主機,只有具有目的IP地址的主機會做出應答,應答資料中包括了自身的mac地址。應答不再採用廣播方式,而是單播給傳送請求的主機。與此同時,所有收到ARP請求的主機,都能在請求資料中得到傳送請求的主機的IP地址和對應的mac地址,他們會將其存在自己的快取中,以供後續使用。 8.收到應答後,TCP的連線請求資訊現在就可以傳送了,因為現在能夠找到目的主機在哪兒了。 9.傳送資料至目的主機。 點對點鏈路(PPP)不使用ARP。在設定這些鏈路時,必須告知核心鏈路每一端的IP地址,因此像乙太網這樣的硬體地址並不涉及。
三 ARP快取記憶體 ARP高效執行的關鍵是由於每個主機上都有一個ARP快取記憶體。這個快取記憶體存放了最近IP地址到硬體地址之間的對映記錄。快取記憶體中每一項記錄的生存時間一般位20分鐘,開始時間從被建立時開始。
四 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請求作出應答。 舉個例子

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地址,因此需要更新。

相關推薦

TCP/IP學習筆記——地址解析協議ARP

一 概述 我們知道,IP協議是用來在不同的物理網路之間傳輸資料的。要在不同的網路之間傳輸資料,至少需要將IP協議所用的地址轉換成特定網路所使用的實體地址。一般來說,就是將IPv4地址轉換為mac地址。要想與一個特定的裝置進行資料交換,光知道它的IP地址是不夠的,還需要知道它

TCP/IP學習筆記(3)IP協議ARP協議和RARP協議

out 處理機 傳輸 包含 發送 res 這也 進行 默認 把這三個協議放到一起學習是因為這三個協議處於同一層,ARP協議用來找到目標主機的Ethernet網卡Mac地址,IP則承載要發送的消息。數據鏈路層可以從ARP得到數據的傳送信息,而從IP得到要傳輸的數據信息。   

TCP/IP學習筆記(8)-DNS域名系統

dns 支持 設置 類型 hosts name 安裝 報文 定義 前面已經提到了訪問一臺機器要靠IP地址和MAC地址,其中,MAC地址可以通過ARP協議得到,所以這對用戶是透明的,但是IP地址就不行,無論如何用戶都需要用一個指定的IP來訪問一臺計算機,而IP地址又非常不好記

TCP/IP學習筆記(1)-基本概念【轉】

網絡號 最大的 net 容易 學習 ip地址 其他 title 編寫 轉自:http://blog.csdn.net/goodboy1881/article/details/665041 為什麽會有TCP/IP協議 在世界上各地,各種各樣的電腦運行著各自不同的操作系統為大家

基礎才是王道——TCP/IP學習筆記 這位仁兄寫得太好了

TCP/IP詳解學習筆記   這位仁兄寫得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP詳解學習筆記(13)-TCP堅持定時器,TCP保活定時器 TCP/IP詳解學習筆記(12)-TCP的超時

TCP/IP學習筆記(13)-- TCP連線的建立與終止

1.TCP連線的建立            設主機B執行一個伺服器程序,它先發出一個被動開啟命令,告訴它的TCP要準備接收客戶程序的連續請求,然後服務程序就處於聽的狀態。不斷檢測是否有客戶程序發起連續請求,如有,作出響應。設客戶程序執行在主機A中,他先向自己的TCP發出主動開啟的命令,表明要向某個IP地址

TCP/IP學習筆記——資料鏈路層(2)

五 Wireless LANs(Wi-Fi) 如今非常流行的一種接入網際網路的方式就是Wi-Fi了,我們用的ipad、手機、膝上型電腦等等都可以用這種方式接入網際網路,非常方便靈活。一個典型的Wi-Fi網路如下圖所示,一些基本概念大致瞭解。 1. 802.11標準幀格式

TCP/IP學習筆記(5)-IP選路,動態選路,和一些細節

1.靜態IP選路 1.1.一個簡單的路由表 選路是IP層最重要的一個功能之一。前面的部分已經簡單的講過路由器是通過何種規則來根據IP資料包的IP地址來選擇路由。這裡就不重複了。首先來看看一個簡單的系統路由表。 Destination     Gateway        

TCP/IP學習筆記——IP協議

一 概述 IP協議是TCP/IP協議簇中最核心的協議,所有的TCP、UDP、ICMP以及IGMP資料都以IP資料報格式傳輸。IP協議提供不可靠、無連線的資料傳輸服務。不可靠的意思是它不能保證IP資料報能成功到達目的地。IP僅僅提供最好的傳輸服務。意思就是,我盡我所能傳輸資料

TCP/IP學習筆記(5)-- ICMP:internet 控制報文協議

1.概述      ICMP是(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制訊息。控制訊息是指網路通不通、主機是否可達、路由是否可用等網路本身的訊息。這些控制訊息雖然並不傳輸使用者資料

TCP/IP學習筆記(10)-TCP連線的建立與中止

TCP是一個面向連線的協議,所以在連線雙方傳送資料之前,都需要首先建立一條連線。這和前面講到的協議完全不同。前面講的所有協議都只是傳送資料而已,大多數都不關心傳送的資料是不是送到,UDP尤其明顯,從程式設計的角度來說,UDP程式設計也要簡單的多----UDP都不用考慮資料分片

TCP/IP學習筆記 這位仁兄寫得太好了.

TCP/IP詳解學習筆記(1)-基本概念 為什麼會有TCP/IP協議 在世界上各地,各種各樣的電腦執行著各自不同的作業系統為大家服務,這些電腦在表達同一種資訊的時候所使用的方法是千差萬別。就好像聖經中上帝打亂了各地人的口音,讓他們無法合作一

TCP/IP學習筆記(2)-資料鏈路層

資料鏈路層有三個目的: 為IP模組傳送和 接收IP資料報。 為ARP模組傳送ARP請求和接收ARP應答。 為RARP傳送RARP請 求和接收RARP應答 ip大家都聽說過。至於ARP和RARP,ARP叫做地址解析協議,是用IP地址換MAC地址的一種協議,而

TCP/IP學習筆記(1)-基本概念

為什麼會有TCP/IP協議 在世界上各地,各種各樣的電腦執行著各自不同的作業系統為大家服務,這些電腦在表達同一種資訊的時候所使用的方法是千差萬別。就好像聖經中上帝打亂了各地人的口音,讓他們無法合作一樣。計算機使用者意識到,計算機只是單兵作戰並不會發揮太大的作用。只有把它們聯合

TCP/IP ,卷1:協議學習筆記、吐槽及其他

《TCP/IP 詳解,卷1:協議》是經典,但不適合初學者。它更像是一本字典,適合學過網路的人溫習和查閱一些記不清的概念。 這本書,我看的版本是機械工業出版社、範建華等譯的。這本書在我看來,翻譯得一般,甚至有明顯的錯誤。如果英文熟練,看原版更好:http://pcvr.nl/

TCP/IP學習---ARP & RARP

ARP(地址解析協議) 功能 提供IP地址到硬體地址之間的對映關係。 從物理層面來說,想讓任何一臺裝置接收發送給他的報文,最基本的前提是報文中封裝的目的地址(硬體實體地址,全世界唯一的)必須跟接收報文的介面地址相同,否則一律棄掉(廣播報文的全F地址除外);

TCP/IP筆記——IP選路

本系列是針對《TCP/IP詳解》的筆記總結,包含各章節的主要內容。有助於幫助你快速瞭解並掌握TCP/IP協議的相關內容。 目錄  1、概述  2、選路原理  3、ICMP重定向差錯  4、ICMP發現報文 1、概述 IP層工作步驟

TCP/IP卷一之Internet 協議

1 IP提供了一種盡力而為、無連線的資料報交付服務 —“盡力而為”的含義是不保證IP資料報能成功到達目的地。 —“無連線”意味著IP不維護網路單元(即路由器)中資料報相關的任何連結狀態資訊,每個資料報獨立於其他資料報來處理;也意味著IP資料報可不按順序交付。 · 2 IPv4頭部和IPv6頭

TCP/IP (10) 動態選路協議

10 動態選路協議 10.1 引言在前面各章中,我們討論了靜態選路。在配置介面時,以預設方式生成路由表項(對於直接連線的介面),並通過route命令增加表項(通常從系統自載入程式檔案),或是通過ICMP改變路由生成表項(通常是在預設方式出錯的情況下)。在網路很小時,與其它網路

TCP/IP,卷1:協議,第七章:Ping程式

小結:”Ping這個名字源於聲納定位操作。目的是為了測試另一臺主機是否可達。該程式傳送一份ICMP回顯請求報文給主機,並等待發揮ICMP回顯應答。不需經過傳輸層。ping伺服器一般在核心中實現ICMP的功能。 ping程式是對兩個TCP/IP系統連通性進行測試