36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

初識 ARP

從網路分層上看,我們知道

二層網路

中,使用

MAC 地址

進行傳輸,MAC 地址做為資料鏈路層的裝置識別符號。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

二層網路

三層網路

中,使用

IP 地址

進行傳輸,IP 地址做為網路層的裝置識別符號。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

三層網路

我們還知道,容易記憶的域名,透過

DNS

解析成 IP 地址,有了 IP 地址就可以在網路上找到目的地。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

DNS

IP 地址透過

ARP

,獲得 MAC 地址,有了 MAC 地址才能在物理網路上傳輸資料。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

ARP

ARP 是什麼呢?

ARP

,是地址解析協議。

根據裝置的 IP 地址來查詢對應 MAC 地址的協議。

主機透過 ARP 查詢到 MAC 地址後,將在

ARP 快取表

中增加對映表項,即 IP 地址和 MAC 地址的對映表項。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

ARP表

舉個栗子

:我想去騰訊總部( IP 地址),但不知道具體位置( MAC 地址),這時我就可以透過導航軟體( ARP )找到騰訊大廈。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

騰訊大廈

ARP 原理

ARP 是如何知道 MAC 地址的呢?簡單說,ARP 是透過

ARP 請求

ARP 響應

報文確定 MAC 地址的。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

ARP報文

假如主機 A 向同一網段上的主機 B 傳送資料。主機 A 的 IP 地址為

10。0。0。1

,主機 B 的 IP 地址為

10。0。0。2

,主機 C 的 IP 地址為

10。0。0。3

。它們都不知道對方的 MAC 地址。ARP 地址解析過程如下:

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

ARP解析過程

主機 A

首先檢視自己的 ARP 表(即 ARP 快取表),確定是否有主機 B 的 IP 地址對應表項。如果有,則直接使用表項中的 MAC 地址進行封裝,封裝成幀後傳送給主機 B 。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

主機A檢視ARP表

如果

主機 A

的 ARP 表沒有對應的表項,就傳送一個廣播幀,源 IP 和源 MAC 地址是主機 A ,目的 IP 地址是主機 B ,目的 MAC 地址是廣播 MAC 地址,即

FFFF-FFFF-FFFF

。這就是

ARP 請求報文

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

ARP請求

ARP 請求是廣播報文,同一個網段的所有主機都能收到。只有主機 B 發現報文中的目的 IP 地址是自己,於是

主機 B

傳送響應報文給主機 A ,源 MAC 地址和源 IP 地址是主機 B ,目的 MAC 地址和目的 IP 地址是主機 A ,這個報文就叫

ARP 響應報文

。同時,主機 B 的 ARP 表記錄主機 A 的對映關係,即主機 A 的 IP 地址和 MAC 地址的對應關係。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

ARP響應

主機 C

也收到了 ARP 請求報文,但目的 IP 地址不是自己,所以不會進行響應。於是主機 C 新增主機 A 的對映關係到 ARP 表,並丟棄 ARP 請求報文。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

ARP表

主機 A 收到 ARP 響應報文後,新增主機 B 的對映關係,同時用主機 B 的 MAC 地址做為目的地址封裝成幀,併發送給主機 B 。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

ARP獲取MAC地址

如果每傳送一個 IP 報文就要進行一次 ARP 請求,來確定 MAC 地址,那將會造成不必要的網路流量,通常的做法是用 ARP 表記錄 IP 地址和 MAC 地址的對映關係。主機發送報文時,首先會檢視它的

ARP 表

,目的是為了確定是否是已知的裝置 MAC 地址。如果有,就直接使用;如果沒有,就發起 ARP 請求獲取。不過,快取是有一定期限的。ARP 表項在

老化時間

aging time

)內是有效的,如果老化時間內未被使用,表項就會被刪除。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

ARP快取

ARP 表項分為

動態 ARP 表項

靜態 ARP 表項

動態 ARP 表項

由 ARP 動態獲取,因此在網路通訊中,無需事先知道 MAC 地址,只要有 IP 地址即可。如果老化時間內未被使用,表項就會被自動刪除。

靜態 ARP 表項

是手工配置,不會老化。靜態 ARP 表項的優先順序高於動態 ARP 表項,可以將相應的動態 ARP 表項覆蓋。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

ARP表項型別

代理 ARP

ARP 廣播報文會被路由器隔離,沒有預設閘道器、網段不同的主機相互通訊時,連線這兩個網路的路由器可以響應這個 ARP 請求,這個過程叫做

代理 ARP

( Proxy ARP )。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

代理ARP

主機 A 與另一個網段的主機 B 通訊,

主機 A

直接傳送 ARP 請求,解析主機 B 的 MAC 地址。運行了代理 ARP 的路由器收到 ARP 請求後,代替主機 A 在

20。0。0。0

網段發出 ARP 請求,解析主機 B 的地址。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

代理ARP請求

主機 B

收到路由器發出的 ARP 請求,發出 ARP 響應報文,告知自己的 MAC 地址是

2222-2222-2222

。路由器收到 ARP 響應後,也向主機 A 傳送 ARP 響應,但目的 MAC 地址是與 10。0。0。0 網段連線的埠 MAC 地址是

1010-1010-1010

。主機 A 收到報文後,在 ARP 表中新增 IP 地址是 20。0。0。1 和 MAC 地址是

1010-1010-1010

的對映表項。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

代理ARP響應

因此主機 A 會將所有要傳送給主機 B 的資料傳送給路由器,路由器再將其轉發給主機 B 。反之亦然。

代理 ARP 功能

遮蔽了分離的網路,主機不用修改 IP地址和子網掩碼就可以和現有的網路互通。讓使用者使用起來,跟在同一個網路上一樣。代理 ARP 使用在主機

沒有預設網路

,或沒有任何路由的網路上,通常是那些不支援設定子網掩碼的老裝置。但代理 ARP 會轉發 ARP 廣播報文,造成網路效率低,不適合用於大規模網路。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

代理ARP

RARP

RARP

是將 ARP 反過來,

從裝置 MAC 地址獲取 IP 地址的一種協議

。通常是印表機等小型嵌入式裝置接入網路時會用得到。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

RARP

RARP 原理

使用 RARP 需要搭建一臺

RARP 伺服器

,在伺服器上註冊裝置的 MAC 地址及 IP 地址。

裝置插電啟動後,廣播發送一個請求報文,希望獲得 IP 地址應答。目的 MAC 地址是廣播地址,源 MAC 地址是自己的物理地址。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

RARP請求

RARP 伺服器收到 IP 地址請求後,給裝置分配一個 IP 地址,並透過響應報文傳送給裝置。裝置收到響應報文後,把 RARP 伺服器分配的 IP 地址設定成自己的 IP 地址。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

RARP響應

免費 ARP

免費 ARP

是一種特殊的 ARP 請求,它並非透過 IP 找到對應的 MAC 地址,而是當主機啟動的時候,傳送一個免費 ARP 請求,即請求自己的 IP 地址的 MAC 地址。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

免費ARP

與普通 ARP 請求報文的區別在於報文中的目標 IP 地址。普通 ARP 報文中的目標 IP 地址是其它主機的 IP 地址;而免費 ARP 的請求報文中,

目標 IP 地址是自己的 IP 地址

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

廣播免費ARP

免費 ARP 的作用:

起到一個

宣告

作用。它以廣播的形式將資料包傳送出去,不需要得到迴應,只為了告訴其它主機自己的 IP 地址和 MAC 地址。

可用於

檢測 IP 地址衝突

。當一臺主機發送了免費 ARP 請求報文後,如果收到了 ARP 響應報文,則說明網路內已經存在使用該 IP 地址的主機。

可用於

更新

其它主機的 ARP 快取表。如果該主機更換了網絡卡,而其它主機的 ARP 快取表仍然保留著原來的 MAC 地址。這時,透過免費的 ARP 資料包,更新其它主機的 ARP 快取表。

ARP 報文

ARP 報文分為

ARP 請求報文

ARP 應答報文

,它們的報文格式相同,但是各個欄位的取值不同。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

ARP報文格式

ARP 報文中各個欄位的含義如下。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

ARP報文欄位含義

網路實戰

ARP 可以動態地進行地址解析,因此網路中的裝置無需配置,只要有 IP 地址就可以自動獲得 MAC 地址。但是靜態 ARP 和代理 ARP 等是需要單獨配置。下面我們

代理 ARP

的實驗。

代理 ARP

網路拓撲

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

網路拓撲

實驗要求

PC1 和 PC2 只配置 IP 地址和子網掩碼;

RT(路由器)配置代理 ARP 功能,PC1 可以 ping 通 PC2 。

操作步驟

PC1 、PC2 分別配置 IP 地址。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

PC配置

RT 配置 IP 地址和代理 ARP 功能。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

RT配置

功能驗證

配置完成後,下面就要進行驗證,檢查功能是否生效、配置是否正確。在 PC1 上 ping PC2 的 IP 地址,進行連通性測試。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

ping測試驗證

還可以抓包檢視完整的報文互動過程,同時驗證下理論知識是否正確。

36 張圖詳解 ARP:網路世界沒有我,你哪也別想去

抓包

原文連結:https://mp。weixin。qq。com/s/yh912ZVbnR_jmmPKL4hrxA

作者:Fox