【網絡】ARP 的工作原理

起序:文字篇幅略長,請讀者耐心讀下去。
原理:發送 ARP 廣播報文,接收 ARP 單播應答。

一、概述

地址解析協議 ARP(Address Resolution Protocol),在實際應用中,它是爲了解決 已經知道了一個機器(主機或路由器)的IP地址,需要找出其相應的硬件地址 這樣的問題。

網絡層使用的是 IP地址 ,但在實際網絡的鏈路上傳送數據幀時,最終還是必須使用該網絡的 硬件地址。但 IP地址 和下面的網絡的 硬件地址 之間由於格式不同而不存在簡單的映射關係,因爲

  • IP 地址:32 位
  • 硬件地址(MAC 地址):48 位

地址解析協議 ARP 解決這個問題的方法是在主機 ARP 高速緩存 中存放一個從 IP地址硬件地址 的映射表,並且這個映射表還經常動態更新(新增或超時刪除)。


二、工作流程

每一臺主機都設有一個 ARP高速緩存(ARP cache),裏面有本局域網上的各主機和路由器的 IP地址硬件地址 的映射表,這些都是該主機目前知道的一些地址。

1、網絡拓撲圖

假設 主機 PC1主機 PC3 發送 HTTP 請求,會有兩種 “心裏活動”。

  1. 主機 PC1ARP 高速緩存 中存在 主機 PC3IP 地址硬件地址 的映射關係。
  2. 主機 PC1ARP 高速緩存 中不存在 主機 PC3IP 地址硬件地址 的映射關係。

在這裏插入圖片描述


2、存在

如果 主機 PC1 存在 主機 PC3IP 地址硬件地址 的映射關係。在發送 HTTP 請求 的時候,就會把這個 硬件地址 寫入 MAC 幀,然後通過局域網把該 MAC 幀 發往此 硬件地址


3、不存在

主機 PC1ARP 高速緩存 中不存在 主機 PC3IP 地址硬件地址 的映射關係。

1)、發送 HTTP 請求

下面圖片顯示的就是 PC1 發送 HTTP請求PC3 在 MAC 層的 MAC 幀 格式,爲了清晰瞭解 MAC 幀 格式,圖片有對應關係。點贊謝謝。

在這裏插入圖片描述

注:此時的 PC1ARP 高速緩存 中還沒有 PC3IP 地址MAC 地址 的映射關係,也就是說,這個 封裝不成功,是無法發送到 PC3 的。


2)、發送 ARP 請求

這個時候就該 ARP 大顯神威了,此時 ARP 的 “心裏活動” 是:“你在一邊等着,我把 MAC 地址 給你帶回來”。

  • ARP 中的目的 MAC 地址 是未知的,所以是以 00:00:00:00:00:00 暫時填補空缺位置。
  • 幀頭 中的 目的 MAC 地址 也是未知的,但是以 FF:FF:FF:FF:FF:FF 這個 廣播地址 作爲 目標 MAC 地址
  • ARP 請求分組的主要內容是:“我的 IP 地址192.168.1.1MAC 地址AA,我想知道 IP 地址192.168.1.3MAC 地址 是什麼”。

在這裏插入圖片描述

注:從上方可分析得 ARP 是廣播報文。


3)、交換機廣播轉發

交換機的主要工作是 轉發,因爲交換機是 二層設備 ,只會檢查 幀頭幀尾 ,當交換機知道 ARP 請求協議幀目的 MAC 地址12FF 時,就可以知道,這個報文是 廣播報文

注:這裏不細說 交換機的工作原理


4)、機器收到 ARP 請求

這裏的 機器 有多種,這裏只介紹兩種,主機路由器

Ⅰ、主機
  • 主機 收到 ARP 請求報文 後,不是立即丟棄這個報文,而是先送到 主機 的網卡
  • 網卡檢查出 目標 MAC 地址12FF,說明是給所有人的,自己也是所有人之一
  • 解封裝 幀頭幀尾 後,發現 幀頭 中的 類型 字段的值是 0806,就會把 ARP 包頭和 ARP 數據 交給 主機 的網絡層的 ARP 協議 來處理這個數據
  • ARP 協議ARP 數據 中的 目的 IP 地址(192.168.1.3) 和自己的 IP 地址 匹配

匹配成功

5)、發送 ARP 響應

匹配失敗

就會由 主機 PC2 的網絡層的 ARP 協議 丟棄,而不是網卡進行丟棄。


Ⅱ、路由器

路由器 收到 ARP 請求報文 後,檢查出 目標 MAC 地址12FF路由器三層設備 ,解封裝 幀頭幀尾 後,發現 幀頭 中的 類型 字段的值是 0806,就會把 ARP 包頭和 ARP 數據 交給 主機 的網絡層的 ARP 協議 來處理這個數據。

問:路由器會不會轉發(路由) ARP 報文

答:不會

  1. 路由器要路由的話,是需要檢查 IP包頭裏面的 目標IP地址,再匹配路由表。而 ARP 報文 裏是沒有 IP 包頭 的。
  2. ARP 是廣播報文,路由器是不允許廣播報文通過的

注:ARP 是出不了 網關 的,所以是內網協議(局域網協議)。


5)、發送 ARP 響應

ARP 響應分組的主要內容是:"我的 IP 地址192.168.1.3MAC 地址CC"。

在這裏插入圖片描述

6)、交換機單播轉發

這時的 ARP 響應報文 有明確的 MAC 地址(AA),就會轉發到 主機 PC1

7)、主機收到 ARP 響應

這一步和第五步(機器收到 ARP 請求)不一樣,因爲 交換機 在轉發 ARP 響應 時,是以 單播 的通信方式。

主機 PC1 收到 ARP 響應後,先到達 主機 PC1 的網卡,解封裝 幀頭幀尾,把 ARP 包頭和 ARP 數據 交給 主機 PC1 的網絡層的 ARP 協議 來處理這個數據,就可以得到 目的 MAC 地址(CC)

同時 主機 PC1 會創建一個 ARP 高速緩存表

Internet 地址 物理地址 類型
192.168.1.3 CC 動態

可以在命令行窗口查看

# 查看 ARP 緩存
arp -a

8)、完善 HTTP 請求報文

這個時候就把 目的 MAC 地址(CC) 填寫在 HTTP 請求報文幀目的 MAC 地址 的位置。

在這裏插入圖片描述
如果對您有幫助,點個贊再走吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章