1. 程式人生 > >網路傳輸中的三張表,MAC地址表、ARP快取表以及路由表

網路傳輸中的三張表,MAC地址表、ARP快取表以及路由表

一:MAC地址表詳解

  說到MAC地址表,就不得不說一下交換機的工作原理了,因為交換機是根據MAC地址錶轉發資料幀的。在交換機中有一張記錄著區域網主機MAC地址與交換機介面的對應關係的表,交換機就是根據這張表負責將資料幀傳輸到指定的主機上的。

  交換機的工作原理

  交換機在接收到資料幀以後,首先、會記錄資料幀中的源MAC地址和對應的介面到MAC表中,接著、會檢查自己的MAC表中是否有資料幀中目標MAC地址的資訊,如果有則會根據MAC表中記錄的對應介面將資料幀傳送出去(也就是單播),如果沒有,則會將該資料幀從非接受介面傳送出去(也就是廣播)。

  如下圖:詳細講解交換機傳輸資料幀的過程

  

  1)主機A會將一個源MAC地址為自己,目標MAC地址為主機B的資料幀傳送給交換機。

  2)交換機收到此資料幀後,首先將資料幀中的源MAC地址和對應的介面(介面為f 0/1) 記錄到MAC地址表中。

  3)然後交換機會檢查自己的MAC地址表中是否有資料幀中的目標MAC地址的資訊,如果有,則從MAC地址表中記錄的介面傳送出去,如果沒有,則會將此資料幀從非接收介面的所有介面傳送出去(也就是除了f 0/1介面)。

  4)這時,區域網的所有主機都會收到此資料幀,但是隻有主機B收到此資料幀時會響應這個廣播,並回應一個數據幀,此資料幀中包括主機B的MAC地址。

  5)當交換機收到主機B迴應的資料幀後,也會記錄資料幀中的源MAC地址(也就是主機B的MAC地址),這時,再當主機A和主機B通訊時,交換機根據MAC地址表中的記錄,實現單播了。

  如下圖:當區域網存在多個交換機互聯的時候,交換機的MAC地址表是怎麼記錄的呢?

  

  1)主機A將一個源MAC地址為自己,目標MAC地址主機C的資料幀傳送給交換機

  2)交換機1收到此資料幀後,會學習源MAC地址,並檢查MAC地址表,發現沒有目標MAC地址的記錄,則會將資料幀廣播出去,主機B和交換機2都會收到此資料幀。

  3)交換機2收到此資料幀後也會將資料幀中的源MAC地址和對應的介面記錄到MAC地址表中,並檢查自己的MAC地址表,發現沒有目標MAC地址的記錄,則會廣播此資料幀。

  4)主機C收到資料幀後,會響應這個資料幀,並回復一個源MAC地址為自己的資料幀,這時交換機1和交換機1都會將主機C的MAC地址記錄到自己的MAC地址表中,並且以單播的形式將此資料幀傳送給主機A。

  5)這時,主機A和主機C通訊就是一單播的形式傳輸資料幀了,主機B和主機C通訊如上述過程一樣,因此交換機2的MAC地址表中記錄著主機A和主機B的MAC地址都對應介面f 0/1。

  總結:從上面的兩幅圖可以看出,交換機具有動態學習源MAC地址的功能,並且交換機的一個介面可以對應多個MAC地址,但是一個MAC地址只能對應一個介面。

  注意:交換機動態學習的MAC地址預設只有300S的有效期,如果300S內記錄的MAC地址沒有通訊,則會刪除此記錄。


  二、ARP快取表詳解

  上面我們講解了交換機的工作原理,知道交換機是通過MAC地址通訊的,但是我們是如何獲得目標主機的MAC地址呢?這時我們就需要使用ARP協議了,在每臺主機中都有一張ARP表,它記錄著主機的IP地址和MAC地址的對應關係。

  ARP協議:ARP協議是工作在網路層的協議,它負責將IP地址解析為MAC地址。

  如下圖:詳細講解ARP的工作原理。

  

  1)如果主機A想傳送資料給主機B,主機A首先會檢查自己的ARP快取表,檢視是否有主機B的IP地址和MAC地址的對應關係,如果有,則會將主機B的MAC地址作為源MAC地址封裝到資料幀中。如果沒有,主機A則會發送一個ARP請求資訊,請求的目標IP地址是主機B的IP地址,目標MAC地址是MAC地址的廣播幀(即FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是主機A的IP地址和MAC地址。

  2)當交換機接受到此資料幀之後,發現此資料幀是廣播幀,因此,會將此資料幀從非接收的所有介面傳送出去。

  3)當主機B接受到此資料幀後,會校對IP地址是否是自己的,並將主機A的IP地址和MAC地址的對應關係記錄到自己的ARP快取表中,同時會發送一個ARP應答,其中包括自己的MAC地址。

  4)主機A在收到這個迴應的資料幀之後,在自己的ARP快取表中記錄主機B的IP地址和MAC地址的對應關係。而此時交換機已經學習到了主機A和主機B的MAC地址了。


  路由表詳解

  路由器負責不同網路之間的通訊,它是當今網路中的重要裝置,可以說沒有路由器就沒有當今的網際網路。在路由器中也有一張表,這張表叫路由表,記錄著到不同網段的資訊。路由表中的資訊分為直連路由和非直連路由。

  直連路由:是直接連線在路由器介面的網段,由路由器自動生成。

  非直連路由:就是不是直接連線在路由器介面上的網段,此記錄需要手動新增或者是使用動態路由。

  路由表中記錄的條目有的需要手動新增(稱為靜態路由),有的測試動態獲取的(稱為動態路由)。直連路由屬於靜態路由。

  路由器是工作在網路層的,在網路層可以識別邏輯地址。當路由器的某個介面收到一個包時,路由器會讀取包中相應的目標的邏輯地址的網路部分,然後在路由表中進行查詢。如果在路由表中找到目標地址的路由條目,則把包轉發到路由器的相應介面,如果在路由表中沒有找到目標地址的路由條目,那麼,如果路由配置預設路由,就科舉預設路由的配置轉發到路由器的相應介面;如果沒有配置預設路由,則將該包丟棄,並返回不可到達的資訊。這就是資料路由的過程。

  如下圖:詳細介紹路由器的工作原理

  

  1)HostA在網路層將來自上層的報文封裝成IP資料包,其中源IP地址為自己,目標IP地址是HostB,HostA會用本機配置的24位子網掩碼與目標地址進行“與”運算,得出目標地址與本機不是同一網段,因此傳送HostB的資料包需要經過閘道器路由A的轉發。

  2)HostA通過ARP請求獲取閘道器路由A的E0口的MAC地址,並在鏈路層將路由器E0介面的MAC地址封裝成目標MAC地址,源MAC地址是自己。

  3)路由器A從E0可接收到資料幀,把資料鏈路層的封裝去掉,並檢查路由表中是否有目標IP地址網段(即192.168.2.2的網段)相匹配的的項,根據路由表中記錄到192.168.2.0網段的資料請傳送給下一跳地址10.1.1.2,因此資料在路由器A的E1口重新封裝,此時,源MAC地址是路由器A的E1介面的MAC地址,封裝的目標MAC地址則是路由器2的E1介面的MAC地址。

  4)路由B從E1口接收到資料幀,同樣會把資料鏈路層的封裝去掉,對目標IP地址進行檢測,並與路由表進行匹配,此時發現目標地址的網段正好是自己E0口的直連網段,路由器B通過ARP廣播,獲知HostB的MAC地址,此時資料包在路由器B的E0介面再次封裝,源MAC地址是路由器B的E0介面的MAC地址,目標MAC地址是HostB的MAC地址。封裝完成後直接從路由器的E0介面傳送給HostB。

  5)此時HostB才會收到來自HostA傳送的資料。

  總結:路由表負責記錄一個網路到另一個網路的路徑,因此路由器是根據路由表工作的。