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

上帝視角

初識 ARP

從網絡分層上看,我們知道二層網絡中,使用 MAC 地址進行傳輸,MAC 地址做爲數據鏈路層的設備標識符。

二層網絡

三層網絡中,使用 IP 地址進行傳輸,IP 地址做爲網絡層的設備標識符。

三層網絡

我們還知道,容易記憶的域名,通過 DNS 解析成 IP 地址,有了 IP 地址就可以在網絡上找到目的地。

DNS

IP 地址通過 ARP ,獲得 MAC 地址,有了 MAC 地址才能在物理網絡上傳輸數據。

ARP

ARP 是什麼呢?

ARP ,是地址解析協議。**根據設備的 IP 地址來查詢對應 MAC 地址的協議。**主機通過 ARP 查詢到 MAC 地址後,將在 ARP 緩存表中增加映射表項,即 IP 地址和 MAC 地址的映射表項。

ARP 表

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

騰訊大廈

ARP 原理

ARP 是如何知道 MAC 地址的呢?簡單說,ARP 是通過 ARP 請求ARP 響應報文確定 MAC 地址的。

ARP 報文

假如主機 A 向同一網段上的主機 B 發送數據。主機 A 的 IP 地址爲 10.0.0.1 ,主機 B 的 IP 地址爲 10.0.0.2 ,主機 C 的 IP 地址爲 10.0.0.3 。它們都不知道對方的 MAC 地址。ARP 地址解析過程如下:

ARP 解析過程

  1. 主機 A 首先查看自己的 ARP 表(即 ARP 緩存表),確定是否有主機 B 的 IP 地址對應表項。如果有,則直接使用表項中的 MAC 地址進行封裝,封裝成幀後發送給主機 B 。

主機 A 查看 ARP 表

  1. 如果主機 A 的 ARP 表沒有對應的表項,就發送一個廣播幀,源 IP 和源 MAC 地址是主機 A ,目的 IP 地址是主機 B ,目的 MAC 地址是廣播 MAC 地址,即 FFFF-FFFF-FFFF 。這就是 ARP 請求報文

ARP 請求

  1. ARP 請求是廣播報文,同一個網段的所有主機都能收到。只有主機 B 發現報文中的目的 IP 地址是自己,於是主機 B 發送響應報文給主機 A ,源 MAC 地址和源 IP 地址是主機 B ,目的 MAC 地址和目的 IP 地址是主機 A ,這個報文就叫 ARP 響應報文。同時,主機 B 的 ARP 表記錄主機 A 的映射關係,即主機 A 的 IP 地址和 MAC 地址的對應關係。

ARP 響應

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

ARP 表

  1. 主機 A 收到 ARP 響應報文後,添加主機 B 的映射關係,同時用主機 B 的 MAC 地址做爲目的地址封裝成幀,併發送給主機 B 。

ARP 獲取 MAC 地址

如果每發送一個 IP 報文就要進行一次 ARP 請求,來確定 MAC 地址,那將會造成不必要的網絡流量,通常的做法是用 ARP 表記錄 IP 地址和 MAC 地址的映射關係。主機發送報文時,首先會查看它的 ARP 表,目的是爲了確定是否是已知的設備 MAC 地址。如果有,就直接使用;如果沒有,就發起 ARP 請求獲取。不過,緩存是有一定期限的。ARP 表項在老化時間aging time )內是有效的,如果老化時間內未被使用,表項就會被刪除。

ARP 緩存

ARP 表項分爲動態 ARP 表項靜態 ARP 表項

ARP 表項類型

代理 ARP

ARP 廣播報文會被路由器隔離,沒有默認網關、網段不同的主機相互通信時,連接這兩個網絡的路由器可以響應這個 ARP 請求,這個過程叫做代理 ARP( Proxy ARP )。

代理 ARP

主機 A 與另一個網段的主機 B 通信,主機 A 直接發送 ARP 請求,解析主機 B 的 MAC 地址。運行了代理 ARP 的路由器收到 ARP 請求後,代替主機 A 在 20.0.0.0 網段發出 ARP 請求,解析主機 B 的地址。

代理 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 的映射表項。

代理 ARP 響應

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

代理 ARP 功能屏蔽了分離的網絡,主機不用修改 IP 地址和子網掩碼就可以和現有的網絡互通。讓用戶使用起來,跟在同一個網絡上一樣。代理 ARP 使用在主機沒有默認網絡,或沒有任何路由的網絡上,通常是那些不支持設定子網掩碼的老設備。但代理 ARP 會轉發 ARP 廣播報文,造成網絡效率低,不適合用於大規模網絡。

代理 ARP

RARP

RARP 是將 ARP 反過來,從設備 MAC 地址獲取 IP 地址的一種協議。通常是打印機等小型嵌入式設備接入網絡時會用得到。

RARP

RARP 原理

使用 RARP 需要搭建一臺 RARP 服務器,在服務器上註冊設備的 MAC 地址及 IP 地址。

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

RARP 請求

  1. RARP 服務器收到 IP 地址請求後,給設備分配一個 IP 地址,並通過響應報文發送給設備。設備收到響應報文後,把 RARP 服務器分配的 IP 地址設置成自己的 IP 地址。

RARP 響應

免費 ARP

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

免費 ARP

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

廣播免費 ARP

免費 ARP 的作用:

ARP 報文

ARP 報文分爲 ARP 請求報文ARP 應答報文,它們的報文格式相同,但是各個字段的取值不同。

ARP 報文格式

ARP 報文中各個字段的含義如下。

ARP 報文字段含義

網絡實戰

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

代理 ARP

網絡拓撲

網絡拓撲

實驗要求
操作步驟
  1. PC1 、PC2 分別配置 IP 地址。

PC 配置

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

RT 配置

功能驗證

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

ping 測試驗證

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

抓包

飲水思源:

圖解 TCP/IP - 竹下隆史

網絡基礎 - 田果

路由交換技術 - 杭州華三通信技術有限公司

HCNA 網絡技術學習指南 - 華爲技術有限公司

TCP/IP 詳解 卷 1:協議 - Kevin R.Fall

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/yh912ZVbnR_jmmPKL4hrxA