arp協議是「address resolution protocol」(位址解析協議)的縮寫。其作用是在乙太網環境中,資料的傳輸所依賴的是mac位址而非ip位址,而將已知ip位址轉換為mac位址的工作是由arp協議來完成的。
在區域網中,網路中實際傳輸的是「幀」,幀裡面是有目標主機的mac位址的。在乙太網中,乙個主機和另乙個主機進行直接通訊,必須要知道目標主機的mac位址。但這個目標mac位址是如何獲得的呢?它就是通過位址解析協議獲得的。所謂「位址解析」就是主機在傳送幀前將目標ip位址轉換成目標mac位址的過程。arp協議的基本功能就是通過目標裝置的ip位址,查詢目標裝置的mac位址,以保證通訊的順利進行。
靜態對映的意思是要手動建立一張arp表,把邏輯(ip)位址和實體地址關聯起來。這個arp表儲存在網路中的每一台機器上。例如,知道其機器的ip位址但不知道其實體地址的機器就可以通過查arp表找出對應的實體地址。這樣做有一定的侷限性,因為實體地址可能發生變化:
(1)機器可能更換nic(網路介面卡),結果變成乙個新的實體地址。
(2)在某些區域網中,每當計算機加電時,他的實體地址都要改變一次。
(3)移動電腦可以從乙個物理網路轉移到另乙個物理網路,這樣會時實體地址改變。
要避免這些問題出現,必須定期維護更新arp表,此模擬較麻煩而且會影響網路效能。
動態對映時,每次只要機器知道另一台機器的邏輯(ip)位址,就可以使用協議找出相對應的實體地址。已經設計出的實現了動態對映協議的有arp和rarp兩種。
arp把邏輯(ip)位址對映為實體地址。rarp把物理位址對映為邏輯(ip)位址。
在任何時候,一台主機有ip資料報文傳送給另一台主機,它都要知道接收方的邏輯(ip)位址。但是ip位址必須封裝成幀才能通過物理網路。這就意味著傳送方必須有接收方的物理(mac)位址,因此需要完成邏輯位址到實體地址的對映。而arp協議可以接收來自ip協議的邏輯位址,將其對映為相應的實體地址,然後把實體地址遞交給資料鏈路層。
任何時候,當主機需要找出這個網路中的另乙個主機的實體地址時,它就可以傳送乙個arp請求報文,這個報文包好了傳送方的mac位址和ip位址以及接收方的ip位址。因為傳送方不知道接收方的實體地址,所以這個查詢分組會在網路層中進行廣播。(見圖1)
區域網中的每一台主機都會接受並處理這個arp請求報文,然後進行驗證,檢視接收方的ip位址是不是自己的位址,只有驗證成功的主機才會返回乙個arp響應報文,這個響應報文包含接收方的ip位址和實體地址。這個報文利用收到的arp請求報文中的請求方實體地址以單播的方式直接傳送給arp請求報文的請求方。(見圖2)
硬體型別:16位欄位,用來定義執行arp的網路型別。每個區域網基於其型別被指派乙個整數。例如:乙太網的型別為1。arp可用在任何物理網路上。
協議型別:16位欄位,用來定義使用的協議。例如:對ipv4協議這個欄位是0800。arp可用於任何高層協議
操作碼:16位欄位,用來定義報文的型別。已定義的分組型別有兩種:arp請求(1),arp響應(2)。
,因為傳送方並不知道目標的硬體位址。
arp報文的總長度為64位元組。
首先要知道幀的概念 幀是在資料鏈路層傳輸的資料格式,比如乙太網v2,乙太網ieee802.3和ppp等。
所以wireshark抓到的幀是包含幀頭的,即包含乙太網v2的幀頭,長14 bytes;
而arp資料報的長度固定為28 bytes;
幀總長度 = 幀頭 + 網路層包頭 + 傳輸層報文頭 + 應用資料;
而arp請求中arp包已經是最高層,之上沒有傳輸層和應用層,所以總長度為:
幀總長度 = 幀頭 + arp包頭 = 14 + 28 = 42 bytes;
而真正 發包的時為了保證乙太網幀的最小幀長為64 bytes,會在報文裡新增乙個padding字段,用來填充資料報大小。
使用wireshark抓包時,抓到的包為60 bytes。比乙太網幀的最小幀長掃了4 bytes,原因是因為wireshark抓包時不能抓到資料報最後的crc欄位。
crc欄位是為了校驗乙太網幀的正確性。在資料報填充完成後,回去通過演算法計算乙個值放到資料報的crc欄位中。當接受端收到資料報後,會同樣使用演算法計算乙個值,然後和crc欄位的值進行對比,檢視是否相同。如果不同則證明資料報被更改,如果相同則證明資料報並未被更改。
arp報文直接封裝在資料鏈路幀中,例如,圖4中,arp分組被封裝在乙太網的幀中。注意,幀中的型別字段指出此幀所攜帶的資料是arp報文。
既然了解了arp的詳細格式,就嘗試獲取arp報文。
例:
如圖5所示,pc1給pc2傳送arp請求,此時使用wireshark獲取arp抓包資料
當pc1傳送的arp請求報文,以廣播報的形式傳送到區域網後,當pc2檢測到ip位址與自己的ip相同,就會傳送給pc1響應報文。
對於arp響應包來說,源ip,目地ip,源mac,目地mac都是知道的。
ps:報文中的padding欄位是填充資料,為了保證幀最少有64個位元組
將區域網中某個主機的實體地址轉換為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伺服器的響應資訊,表示初始化失敗。
IP協議 ARP協議 RARP協議
ip資料報 ip是tcp ip協議族中最核心的協議,所有的tcp udp icmp igmp資料都以ip資料報的格式傳輸。ip僅提供盡力而為的傳輸服務,如果發生某種錯誤,ip會丟失該資料,然後傳送icmp訊息給信源端。另外,ip資料報可以不按傳送順序接受。ip資料報的格式如下 前20位元組和緊接其後...
IP協議 ARP協議 RARP協議
主機通過路由器和目的主機連線。主機通過ip資料報連線目的主機時,按照如下步驟搜尋 同一網路中的搜尋要經過arp協議將目的主機的ip位址解析為mac位址 搜尋路由表,優先搜尋匹配主機,如果能找到和ip位址完全一致的目標主機,則將該包發向目標主機 搜尋路由表,如果匹配主機失敗,則匹配同子網的路由器,這需...
ARP協議以及RARP協議
我們都知道ip位址是不能直接用來通訊的。這是因為ip位址只是主機在抽象網路層中的位址。若要將網路層中的資料傳送給目的主機,則還需要傳到資料鏈路層變成mac幀後才能發到目的網路上。因此,不管網路層使用的是什麼協議,在實際網路的鏈路上傳輸時,最終還是必須使用硬體位址。由於ip位址只有32位,而 硬體位址...