肝了,整理了8張圖詳解ARP原理,連我媽都能看懂了!
1、各司其職
我們都知道,計算機網路世界裡是分層次的,每個層次各司其職,這跟我們現實生活裡方方面面很像,比如 人體器官形成的系統,每個器官也是各司其職,做好自己本分的工作。
二層網路
,是以
MAC地址
進行傳輸的,交換機基於源MAC地址學習,目的MAC地址轉發。
例如,上圖,(雙方都知道對方的MAC地址後)PC1要給PC2發訊息“你好,妹紙”,發出去的時候,交換機會帶上二層幀頭,到了交換機就會查詢一下PC2的MAC地址怎麼走?然後正確轉發給PC2,到了PC2會把這個二層幀頭拆掉,看到裡面的訊息。
這個過程,就好比我們寄快遞一樣,我們要寄的物品(報文)放進紙盒裡,紙盒會密封,貼上快遞標籤(幀頭),送到站點。前面我們說過了,各司其職,那麼到站點只會看快遞標籤,不會看紙盒裡的東西(不會看幀頭後面的報文內容)。然後站點根據自己的標籤庫(MAC表),就可以正確轉發快件了。
如果需要跨網路通訊(
三層網路
),計算機網路世界裡則是使用
IP地址
進行傳輸。
如上圖,PC1發出報文,離開PC1時,會被打上IP報文頭,然後再打上幀頭標籤,龍哥這裡所說的“打上”,就說計算機網路術語常說的“封裝”。到了二層只會檢視二層幀頭,發現二層幀頭裡的目的mac地址是本裝置自己的,於是就拆開二層幀頭,讀取IP報頭,根據目的IP地址查詢路由,進行IP轉發,找到正確出介面後,從上圖可以發現,又進行封裝二層幀頭了(紅色),源MAC地址為出介面的mac地址,目的mac地址為PC2的。
既然網路層是透過IP地址來轉發資料包的,那我們要上網,豈不是都得透過IP地址來訪問,那我們的大腦估計是第一個跳出來反對的,記不住呀! 讓我記住女朋友的生日我都經常忘了,更何況記住IP地址呢? 哈哈,人類果然是很優秀,創造了DNS協議,讓我們輕輕鬆鬆記住十幾個網站都沒問題。
例如上圖,當我們在PC1上瀏覽器輸入百度網址時,PC1就會根據輸入這個域名,像DNS伺服器(提前設定好的)詢問,讓DNS伺服器告訴PC1,這個
http://www。
baidu。com
的IP地址是多少?然後DNS伺服器收到這個查詢報文,就會進行查詢,然後響應。PC1收到這個響應報文後,知道具體IP地址後,就會使用這個ip地址與百度伺服器進行通訊了。
現在,我們就明白了,域名透過DNS協議獲取到真實的IP地址。那麼,IP地址透過ARP協議可以獲取到相應的MAC地址。
2、ARP為何物?
ARP定義
地址解析協議ARP(Address Resolution Protocol)是用來將IP地址解析為MAC地址的協議。
看過龍哥文章,都知道,龍哥喜歡問:為什麼會有它? 肯定不會平白無故的產生?就像這世界上沒有無緣無故的愛,也沒有無緣無故的恨?那我們就瞭解一下為啥會產生ARP?
即作用:
在區域網中,當主機或其它三層網路裝置有資料要傳送給另一臺主機或三層網路裝置時,它需要知道對方的網路層地址(即IP地址)。但是僅有IP地址是不夠的,因為IP報文必須封裝成幀才能透過物理網路傳送,因此傳送方還需要知道接收方的物理地址(即MAC地址),這就需要一個從IP地址到MAC地址的對映。ARP即可以實現將IP地址解析為MAC地址。
這裡提到對映,對映簡單理解就是一一對應,主機或網路裝置維護這個一一對應的關係會建立一個表,這個表記錄著IP地址和MAC地址的對應關係。
其實關於ARP協議,我們也可以從生活中找類比,比如 某天,我要去華為總部J區-培訓中心(類似IP地址)參加HCIE實驗考試,但是我又不是在華為上班的,怎麼知道具體地址呢?(類似MAC地址)
梳理一下:
要去哪?:
我們只知道要去的名稱,華為總部J區-培訓中心=IP地址。
位置是? :
具體位置不知道? 想要知道具體位置=MAC地址。
透過什麼獲取具體位置?:
我們可以透過導航軟體,如百度地圖。=ARP協議。
3、ARP原理
看到這來,相信很多小白已經迫不及待想知道:ARP到底是怎麼知道MAC地址的呢?言簡意賅,就是透過
兩種報文
來確定MAC地址的,
ARP請求報文
和
ARP響應報文
。
例如這個場景,某公司新來了一個漂亮的妹子,叫小紅。小明看上人家了,想發情書給人家。具體IP資訊如下:
明的 IP 地址為192。168。1。1 ,
小李的 IP 地址為192。168。1。2 ,
小紅 的 IP 地址為
192。168。1。3
。
它們都不知道對方的 MAC 地址。ARP 地址解析過程如下:
1、查ARP表
小明的電腦,會將
電子情書
封裝好,加上IP報頭(如源IP地址、目IP地址),封裝完後,就到了封裝二層幀頭了,封裝二層幀頭最關鍵的資訊就是對方的MAC地址。 為了獲取對方MAC地址,首先,小明這臺電腦會先去查詢一下ARP表,看看有沒有?有的話,就直接使用表項裡的MAC地址進行封裝,然後傳送出去。
2、發ARP請求
由於小明電腦上 的 ARP 表上沒找到對應的表項,於是就會發送一個廣播幀,這個廣播幀的報文,也是ARP請求報文,二層幀頭主要資訊如下:
源 IP :192。168。1。1 源 MAC 地址:mac1
目的 IP 地址:192。168。1。3 目的 MAC 地址是廣播 MAC 地址,即FFFF-FFFF-FFFF。
3、ARP響應報文
小明的電腦,發了ARP廣播報文後,只要在同一個網段內的所有主機就都能收到。小紅的電腦收到這個ARP廣播報文後,發現目的IP地址就是我自己,即有人找我,於是就傳送ARP響應報文給小明電腦 ,
源 IP :192。168。1。3 源 MAC 地址:mac3
目的 IP 地址:192。168。1。1目的 MAC 地址是:mac1 。
這個報文就叫
ARP 響應報文
。此時,小紅電腦上的 ARP 表記錄小明IP和mac地址的對映關係。
4、丟棄ARP請求報文
小李的電腦收到這個ARP報文後,發現目的ip地址不是我自己,即不是找我,於是丟棄,不做響應,同時,也會更新一下ARP表,將小明的IP和MAC地址對映關係記錄起來。
5、開始正常通訊
小明電腦收到 小紅的ARP 響應報文後,新增小紅IP和MAC的對映關係,同時用小紅的MAC地址做為目的MAC地址,將情書封裝成幀,單播發送給小紅。
以上,就是ARP原理,相信看完應該有所收穫了吧!
4、關於ARP表項
假如沒有ARP表項,那如果每傳送一次IP資料報文,就得 進行一次ARP 請求,來確定 MAC 地址,這樣勢必造成不必要的流量及時延。
所以,就需要一個ARP表項,說白了,就是一個數據庫,這個資料庫記錄 IP 地址和 MAC 地址的對映關係。
這樣主機在傳送報文時,會先查詢一下它的
ARP 表
,看看是否有相應的 MAC 地址。如果有,就直接使用;如果沒有,就發起 ARP 請求獲取。
但是這個ARP表項裡的條目,也不一定是一直存在著,比如透過動態學習的,有期限的,即老化時間(aging time),在這個時間內,這個條目是有效的。超過老化時間,表項就會被刪除,這樣也可以釋放點快取空間。
此外,ARP表項可分為:動態ARP表項和靜態ARP表項。
動態ARP表項
由ARP協議透過ARP報文自動生成和維護,可以被老化,可以被新的ARP報文更新,可以被靜態ARP表項覆蓋。動態ARP適用於拓撲結構複雜、通訊實時性要求高的網路。
靜態ARP表項
是由網路管理員手工建立的IP地址和MAC地址之間固定的對映關係。靜態ARP表項不會被老化,靜態ARP表項的優先順序高於動態ARP表項,所以不會被動態ARP表項覆蓋。