[轉]詳解網絡傳輸中的三張表,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發送的數據。

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

看完上面的文章是不是感覺原來數據在網絡中傳輸是這麼的複雜啊!呵呵...其實這些過程都是計算機自己完成的,我們需要做的很少。

可能寫的不是很全面,請大家多多諒解!希望對大家有幫助。


轉載自 51CTO
詳解網絡傳輸中的三張表,MAC地址表、ARP緩存表以及路由表

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章