一:MAC地址表詳解
說到MAC地址表,就不得不說一下交換機的工作原理了,因為交換機是根據(jù)MAC地址表轉(zhuǎn)發(fā)數(shù)據(jù)幀的。在交換機中有一張記錄著局域網(wǎng)主機MAC地址與交換機接口的對應關(guān)系的表,交換機就是根據(jù)這張表負責將數(shù)據(jù)幀傳輸?shù)街付ǖ闹鳈C上的。
交換機的工作原理
交換機在接收到數(shù)據(jù)幀以后,首先、會記錄數(shù)據(jù)幀中的源MAC地址和對應的接口到MAC表中,接著、會檢查自己的MAC表中是否有數(shù)據(jù)幀中目標MAC地址的信息,如果有則會根據(jù)MAC表中記錄的對應接口將數(shù)據(jù)幀發(fā)送出去(也就是單播),如果沒有,則會將該數(shù)據(jù)幀從非接受接口發(fā)送出去(也就是廣播)。
如下圖:詳細講解交換機傳輸數(shù)據(jù)幀的過程

主機A會將一個源MAC地址為自己,目標MAC地址為主機B的數(shù)據(jù)幀發(fā)送給交換機。
交換機收到此數(shù)據(jù)幀后,首先將數(shù)據(jù)幀中的源MAC地址和對應的接口(接口為f?0/1)?記錄到MAC地址表中。
然后交換機會檢查自己的MAC地址表中是否有數(shù)據(jù)幀中的目標MAC地址的信息,如果有,則從MAC地址表中記錄的接口發(fā)送出去,如果沒有,則會將此數(shù)據(jù)幀從非接收接口的所有接口發(fā)送出去(也就是除了f?0/1接口)。
這時,局域網(wǎng)的所有主機都會收到此數(shù)據(jù)幀,但是只有主機B收到此數(shù)據(jù)幀時會響應這個廣播,并回應一個數(shù)據(jù)幀,此數(shù)據(jù)幀中包括主機B的MAC地址。
當交換機收到主機B回應的數(shù)據(jù)幀后,也會記錄數(shù)據(jù)幀中的源MAC地址(也就是主機B的MAC地址),這時,再當主機A和主機B通信時,交換機根據(jù)MAC地址表中的記錄,實現(xiàn)單播了。
如下圖:當局域網(wǎng)存在多個交換機互聯(lián)的時候,交換機的MAC地址表是怎么記錄的呢?

主機A將一個源MAC地址為自己,目標MAC地址主機C的數(shù)據(jù)幀發(fā)送給交換機
交換機1收到此數(shù)據(jù)幀后,會學習源MAC地址,并檢查MAC地址表,發(fā)現(xiàn)沒有目標MAC地址的記錄,則會將數(shù)據(jù)幀廣播出去,主機B和交換機2都會收到此數(shù)據(jù)幀。
交換機2收到此數(shù)據(jù)幀后也會將數(shù)據(jù)幀中的源MAC地址和對應的接口記錄到MAC地址表中,并檢查自己的MAC地址表,發(fā)現(xiàn)沒有目標MAC地址的記錄,則會廣播此數(shù)據(jù)幀。
主機C收到數(shù)據(jù)幀后,會響應這個數(shù)據(jù)幀,并回復一個源MAC地址為自己的數(shù)據(jù)幀,這時交換機1和交換機1都會將主機C的MAC地址記錄到自己的MAC地址表中,并且以單播的形式將此數(shù)據(jù)幀發(fā)送給主機A。
這時,主機A和主機C通信就是一單播的形式傳輸數(shù)據(jù)幀了,主機B和主機C通信如上述過程一樣,因此交換機2的MAC地址表中記錄著主機A和主機B的MAC地址都對應接口f?0/1。
總結(jié):從上面的兩幅圖可以看出,交換機具有動態(tài)學習源MAC地址的功能,并且交換機的一個接口可以對應多個MAC地址,但是一個MAC地址只能對應一個接口。
注意:交換機動態(tài)學習的MAC地址默認只有300S的有效期,如果300S內(nèi)記錄的MAC地址沒有通信,則會刪除此記錄。
二、ARP緩存表詳解
上面我們講解了交換機的工作原理,知道交換機是通過MAC地址通信的,但是我們是如何獲得目標主機的MAC地址呢?這時我們就需要使用ARP協(xié)議了,在每臺主機中都有一張ARP表,它記錄著主機的IP地址和MAC地址的對應關(guān)系。
ARP協(xié)議:ARP協(xié)議是工作在網(wǎng)絡(luò)層的協(xié)議,它負責將IP地址解析為MAC地址。
如下圖:詳細講解ARP的工作原理。

如果主機A想發(fā)送數(shù)據(jù)給主機B,主機A首先會檢查自己的ARP緩存表,查看是否有主機B的IP地址和MAC地址的對應關(guān)系,如果有,則會將主機B的MAC地址作為源MAC地址封裝到數(shù)據(jù)幀中。如果沒有,主機A則會發(fā)送一個ARP請求信息,請求的目標IP地址是主機B的IP地址,目標MAC地址是MAC地址的廣播幀(即FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是主機A的IP地址和MAC地址。
當交換機接受到此數(shù)據(jù)幀之后,發(fā)現(xiàn)此數(shù)據(jù)幀是廣播幀,因此,會將此數(shù)據(jù)幀從非接收的所有接口發(fā)送出去。
當主機B接受到此數(shù)據(jù)幀后,會校對IP地址是否是自己的,并將主機A的IP地址和MAC地址的對應關(guān)系記錄到自己的ARP緩存表中,同時會發(fā)送一個ARP應答,其中包括自己的MAC地址。
主機A在收到這個回應的數(shù)據(jù)幀之后,在自己的ARP緩存表中記錄主機B的IP地址和MAC地址的對應關(guān)系。而此時交換機已經(jīng)學習到了主機A和主機B的MAC地址了。
三、路由表詳解
路由器負責不同網(wǎng)絡(luò)之間的通信,它是當今網(wǎng)絡(luò)中的重要設(shè)備,可以說沒有路由器就沒有當今的互聯(lián)網(wǎng)。在路由器中也有一張表,這張表叫路由表,記錄著到不同網(wǎng)段的信息。路由表中的信息分為直連路由和非直連路由。
直連路由:
是直接連接在路由器接口的網(wǎng)段,由路由器自動生成。非直連路由:
就是不是直接連接在路由器接口上的網(wǎng)段,此記錄需要手動添加或者是使用動態(tài)路由。
路由表中記錄的條目有的需要手動添加(稱為靜態(tài)路由),有的測試動態(tài)獲取的(稱為動態(tài)路由)。直連路由屬于靜態(tài)路由。
路由器是工作在網(wǎng)絡(luò)層的,在網(wǎng)絡(luò)層可以識別邏輯地址。當路由器的某個接口收到一個包時,路由器會讀取包中相應的目標的邏輯地址的網(wǎng)絡(luò)部分,然后在路由表中進行查找。如果在路由表中找到目標地址的路由條目,則把包轉(zhuǎn)發(fā)到路由器的相應接口,如果在路由表中沒有找到目標地址的路由條目,那么,如果路由配置默認路由,就科舉默認路由的配置轉(zhuǎn)發(fā)到路由器的相應接口;如果沒有配置默認路由,則將該包丟棄,并返回不可到達的信息。這就是數(shù)據(jù)路由的過程。
如下圖:詳細介紹路由器的工作原理

HostA在網(wǎng)絡(luò)層將來自上層的報文封裝成IP數(shù)據(jù)包,其中源IP地址為自己,目標IP地址是HostB,HostA會用本機配置的24位子網(wǎng)掩碼與目標地址進行“與”運算,得出目標地址與本機不是同一網(wǎng)段,因此發(fā)送HostB的數(shù)據(jù)包需要經(jīng)過網(wǎng)關(guān)路由A的轉(zhuǎn)發(fā)。
HostA通過ARP請求獲取網(wǎng)關(guān)路由A的E0口的MAC地址,并在鏈路層將路由器E0接口的MAC地址封裝成目標MAC地址,源MAC地址是自己。
路由器A從E0可接收到數(shù)據(jù)幀,把數(shù)據(jù)鏈路層的封裝去掉,并檢查路由表中是否有目標IP地址網(wǎng)段(即192.168.2.2的網(wǎng)段)相匹配的的項,根據(jù)路由表中記錄到192.168.2.0網(wǎng)段的數(shù)據(jù)請發(fā)送給下一跳地址10.1.1.2,因此數(shù)據(jù)在路由器A的E1口重新封裝,此時,源MAC地址是路由器A的E1接口的MAC地址,封裝的目標MAC地址則是路由器2的E1接口的MAC地址。
路由B從E1口接收到數(shù)據(jù)幀,同樣會把數(shù)據(jù)鏈路層的封裝去掉,對目標IP地址進行檢測,并與路由表進行匹配,此時發(fā)現(xiàn)目標地址的網(wǎng)段正好是自己E0口的直連網(wǎng)段,路由器B通過ARP廣播,獲知HostB的MAC地址,此時數(shù)據(jù)包在路由器B的E0接口再次封裝,源MAC地址是路由器B的E0接口的MAC地址,目標MAC地址是HostB的MAC地址。封裝完成后直接從路由器的E0接口發(fā)送給HostB。
此時HostB才會收到來自HostA發(fā)送的數(shù)據(jù)。
- 總結(jié):路由表負責記錄一個網(wǎng)絡(luò)到另一個網(wǎng)絡(luò)的路徑,因此路由器是根據(jù)路由表工作的。
看完上面的文章是不是感覺原來數(shù)據(jù)在網(wǎng)絡(luò)中傳輸是這么的復雜?。『呛?..其實這些過程都是計算機自己完成的,我們需要做的很少。
可能寫的不是很全面,請大家多多諒解!希望對大家有幫助。
轉(zhuǎn)載自 51CTO
詳解網(wǎng)絡(luò)傳輸中的三張表,MAC地址表、ARP緩存表以及路由表