網絡中的三張表 - ARP 表、MAC 表、路由表

1、ARP 表

提起 ARP 表必然先想起 ARP(address resolution protocol)協議,地址解析協議。

在實際應用中,我們經常遇到這樣的問題:已知一個機器的 IP 地址,但在實際網絡的鏈路上傳送數據幀時,最終還是必須使用該網絡的硬件地址,需要知道其 MAC 地址。如果兩個都需要去記憶或輸入,大大增加了其繁瑣程度。地址解析協議 ARP 就是用來解決這樣的問題的。

由於 IP 協議使用了 ARP 協議,因此通常把 ARP 協議劃歸到網絡層。但 ARP 協議的用途是爲了從網絡層使用 IP 地址,解析出在鏈路層使用的硬件地址。

每一臺主機都設有一個 ARP 高速緩存,裏面有本局域網上的各種主機和路由器的 IP 地址到硬件地址的映射表,表裏面的內容由 ARP 協議進行動態更新。表內的數據會老化,達到老化時間會自動刪除,在此通信時,由 ARP 協議重新添加。

通信過程

有 PC0,PC1 兩臺主機

使用思科的仿真模擬器能直觀的看出通信過程

PC0 向 PC1 發送一個 ping 報文,向 PC0 輸入 1.1.1.3 然後開始發送,PC0 先查詢本地 APR 表查詢 1.1.1.3 對應 MAC 地址,但並沒查到,這種情況 PC0 在本局域網上廣播發送一個 ARP 請求分組。ARP 請求分組的主要內容是:

我的 IP 地址是 1.1.1.2,硬件地址是 xx-xx-xx-xx-xx-xx。我想知道 IP 地址爲 1.1.1.3 的主機的硬件地址。

在本局域網上的所有主機上運行的 ARP 進程都會收到此 ARP 請求分組。PC1 的 IP 地址與 ARP 請求分組中要查詢的 IP 地址一致,就收下 ARP 請求分組,並向 PC0 發送 ARP 響應分組,同時在這個 ARP 響應分組中寫入自己的硬件地址。其餘主機 ip 地址都與 ARP 請求要查詢的 ip 地址不一致,不做任何迴應。響應內容爲:

我的 ip 地址是 1.1.1.3,我的硬件地址是 xx-xx-xx-xx-xx-xx

雖然 ARP 請求分組是廣播發送的,但 ARP 響應分組是普通的單播,即從一個原地址發送到一個目的地址。

接下來 PC0 就可以使用剛獲取的 PC1MAC 地址,進行 icmp 數據發送。

2、MAC 表

說到 MAC 表,就不得不說一下交換機的工作原理,因爲交換機是根據 MAC 地址轉發數據幀的。

當 PC0 發送 ARP 數據包,交換機會把數據包發往 PC0 之外的所有主機,並在相應包中記錄下相應 Mac 地址與接口數據。

當 PC0 向 PC1 發送一幀數據,從 1 口進到交換機。交換機收到幀後,根據幀中的目的 MAC 先查本地 MAC 表,沒有查到應從哪個接口轉發這個幀。

接着,交換機把這個幀的源 MAC 和接口 1 寫入交換表中,並向除 1 以外的所有接口廣播這個幀,PC2 將此廣播幀丟棄,因爲目的地址不對。PC1 收下這個目的地址是自己 MAC 的數據,並回應數據包,此時交換機會把 PC1 的 MAC 和對應接口 2 寫入表中。然後當 PC0 與 PC1 再次發送數據交換機可以根據目的 MAC 查表找出對應的接口,將數據包直接送達對應的主機。

考慮到有可能在交換機的接口更換主機,或者主機要跟換主機更換網卡,這時交換機中 MAC 表也是動態的、有自己的老化時間,會自動刪除相關數據。

當交換機中一臺主機突然從 2 口切換到 3 口,交換機收到的此主機的數據仍然會發送到原端口 2 口就會出現超時情況,直到 Mac 中數據更新,或者手動把交換機斷電重啓重更新 Mac 表數據。

3、路由表

說起路由表,就不得不提起路由器。(此處的路由器與家用路由器略有不同,家用路由器集成了路由器和交換機的功能爲了更方便用戶使用)路由器是一種具有多個輸入端口和多個輸出端口的專用設備也可稱爲計算機。其任務是轉發分組。路由器結構由兩部分組成:路由選擇部分和分組轉發部分。

路由器工作在網絡層,主要功能就是實現跨網段傳輸數據。

如上圖:一網段的主機要與其他網段的主機通信,則數據會先發送給指定的網關,也就是路由器,由路由器選擇網段繼續通信,所以發送的數據包起始中網絡層的 ip 地址不變,源 ip 地址就是當前主機的 ip 地址,目的 ip 地址就是不同網段的主機的 ip 地址,但是鏈路層由於數據要先發給路由器,那麼目的 mac 就是路由器的 mac 地址,然後路由器選擇其他網段,則源 mac 變成路由器另一個網口的 mac 地址,目的 mac 就是目標主機的 mac 地址,所以整個過程網絡層的一直不變,但是鏈路層一直再變

如上圖:由於現在是兩臺路由器和兩個網段的主機,所以需要構成三個局域網,當源主機跨網段與目標主機通信時,由於網段不同,數據會先發送給路由器,然後路由器再選擇對應的目的網段,但是此時路由器另一端所在的網段與之目標主機的網段不同,所以無法繼續向下發送,此時需要設置下一跳,下一跳的目的就是指定當前自己網段的主機要訪問其他網段的主機時從這個路由器應該跳到哪個路由器,只要設置了,就可以直接發送數據到指定的路由器,整個過程就完成

1、 當網絡中有多個路由器是,兩個主機需要通信路由器需要記錄下一跳信息,下一跳的目的就是指定當前自己網段的主機要訪問其他網段的主機時從這個路由器應該跳到哪個路由器

2、 路由表記錄着下一跳。

路由表中記錄着不同網段的信息。路由表中記錄的信息有的需要手動添加(稱爲靜態路由表),通過路由協議自動獲取的(稱爲動態路由表),我們的主機直接連到路由器上(中間無三層網絡設備)這種情況是直連路由,屬於靜態路由。

路由選擇處理機的任務是根據所選定的路由選擇協議(路由協議後續在做總結)構造出路由表,同時經常或定期和相鄰路由器交換路由信息而不斷地跟新和維護路由表。

作者:晨曦艾米
原文:blog.csdn.net/ZBraveHeart/article/details/123505347

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