一:MAC地址表詳解緩存
說到MAC地址表,就不得不說一下交換機的工做原理了,由於交換機是根據MAC地址錶轉發數據幀的。在交換機中有一張記錄着局域網主機MAC地址與交換機接口的對應關係的表,交換機就是根據這張表負責將數據幀傳輸到指定的主機上的。網絡
交換機的工做原理學習
交換機在接收到數據幀之後,首先、會記錄數據幀中的源MAC地址和對應的接口到MAC表中,接着、會檢查本身的MAC表中是否有數據幀中目標MAC地址的信息,若是有則會根據MAC表中記錄的對應接口將數據幀發送出去(也就是單播),若是沒有,則會將該數據幀從非接受接口發送出去(也就是廣播)。測試
以下圖:詳細講解交換機傳輸數據幀的過程spa
1)主機A會將一個源MAC地址爲本身,目標MAC地址爲主機B的數據幀發送給交換機。3d
2)交換機收到此數據幀後,首先將數據幀中的源MAC地址和對應的接口(接口爲f 0/1) 記錄到MAC地址表中。blog
3)而後交換機會檢查本身的MAC地址表中是否有數據幀中的目標MAC地址的信息,若是有,則從MAC地址表中記錄的接口發送出去,若是沒有,則會將此數據幀從非接收接口的全部接口發送出去(也就是除了f 0/1接口)。接口
4)這時,局域網的全部主機都會收到此數據幀,可是隻有主機B收到此數據幀時會響應這個廣播,並回應一個數據幀,此數據幀中包括主機B的MAC地址。路由
5)當交換機收到主機B迴應的數據幀後,也會記錄數據幀中的源MAC地址(也就是主機B的MAC地址),這時,再當主機A和主機B通訊時,交換機根據MAC地址表中的記錄,實現單播了。get
以下圖:當局域網存在多個交換機互聯的時候,交換機的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地址沒有通訊,則會刪除此記錄。
2、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發送的數據。
總結:路由表負責記錄一個網絡到另外一個網絡的路徑,所以路由器是根據路由表工做的。
reference
[1] http://dengqi.blog.51cto.com/5685776/1223132