一、交換機(jī)的工作原理
前面我們講了以太網(wǎng)的傳輸設(shè)備,在其中也提到了集線器、網(wǎng)橋、交換機(jī)等設(shè)備。但隨著技術(shù)的發(fā)展集線器和網(wǎng)橋已經(jīng)被交換機(jī)取代?,F(xiàn)在局域網(wǎng)中最常用的傳輸設(shè)備為交換機(jī)。所以我們這里將會深入的介紹一下交換機(jī)的工作原理。
交換機(jī)的工作原理:
1. 交換機(jī)根據(jù)收到數(shù)據(jù)幀中的源MAC地址建立該地址同交換機(jī)端口的映射,并將其寫入MAC地址表中。
2.交換機(jī)將數(shù)據(jù)幀中的目的MAC地址同已建立的MAC地址表進(jìn)行比較,以決定由哪個端口進(jìn)行轉(zhuǎn)發(fā)。
3.如數(shù)據(jù)幀中的目的MAC地址不在MAC地址表中,則向所有端口轉(zhuǎn)發(fā)。這一過程稱為泛洪(flood)。
4.廣播幀向所有的端口轉(zhuǎn)發(fā),組播幀向所屬的組播端口轉(zhuǎn)發(fā)。
在交換機(jī)的工作原理中很關(guān)鍵的一個參數(shù)是MAC地址,交換機(jī)基于MAC地址來工作。下面我們詳細(xì)學(xué)習(xí)一下MAC地址。
一個制造商在生產(chǎn)制造網(wǎng)卡之前,必須先向 IEEE 注冊,以獲取到一個長度為 24bit 的廠商代碼,也稱為 OUI(Organizationally-Unique Identifier)。制造商在生產(chǎn)制造網(wǎng)卡的過程中,會往每一塊網(wǎng)卡的 ROM 中燒入一個 48bit 的 BIA(Burned-In Address,固化地址)地址,BIA 地址的前 3 個字節(jié)就是該制造商的 OUI,后 3 個字節(jié)由該制造商自己確定,但不同的網(wǎng)卡,其 BIA 地址的后 3 個字節(jié)不相同。燒入進(jìn)網(wǎng)卡的 BIA 地址是不能被更改的,只能被讀取出來使用。如下圖所示地址的格式。
注意,BIA 地址只是 MAC 地址的一種,更準(zhǔn)確的說,BIA 地址是一種單播 MAC 地址。MAC 地址共分為 3 種,分別為單播 MAC 地址、組播 MAC 地址、廣播 MAC 地址。這 3 種 MAC 地址的定義分別如下:
1)單播 MAC 地址是指第一個字節(jié)的最低位是 0 的 MAC 地址。
2)組播 MAC 地址是指第一個字節(jié)的最低位是 1 的 MAC 地址。
3)廣播 MAC 地址是指每個比特都是 1 的 MAC 地址。廣播 MAC 地址是組播 MAC 地址的一個特例。
一個單播 MAC 地址(例如 BIA 地址)標(biāo)識了一塊特定的網(wǎng)卡;一個組播 MAC 地址標(biāo)識的是一組網(wǎng)卡;廣播 MAC 地址是組播 MAC 地址的一個特例,它標(biāo)識了所有的網(wǎng)卡。從上圖我們可以發(fā)現(xiàn),并非一個 MAC 地址的前 3 個字節(jié)都是 OUI,只有單播 MAC 地址的前 3 個字節(jié)才是 OUI,而組播或廣播 MAC 地址的前 3 個字節(jié)一定不是 OUI。特別需要說明的是,OUI 的第一個字節(jié)的最低位一定是 0。
接下來我們看一下這幾類MAC 地址的事例
有了上面MAC地址的知識后,接下來我們就可以深入地研究交換機(jī)的具體的工作原理:
如圖所示,3臺計算機(jī)終端設(shè)備(也可以是PLC或其他帶以太網(wǎng)接口的終端設(shè)備)分別接到了交換機(jī)的G0/0/1、G0/0/2和G0/0/3端口上
各終端設(shè)備的IP地址和MAC地址如圖所示。交換機(jī)上電后處于初始的狀態(tài),交換機(jī)的MAC地址為空。
當(dāng)主機(jī)A需要發(fā)起ICMP Ping request到主機(jī)C時,主機(jī)A通過命令行的命令知道需要通信的目的主機(jī)的IP地址(這里的目的地址就是10.1.1.3/24),但主機(jī)A卻不知道主機(jī)C的MAC地址。所以此時主機(jī)A先暫不發(fā)送ICMP 的Ping request,而是發(fā)送一個ARP的廣播報文幀,以此來用來獲得主機(jī)C的MAC地址。ARP廣播報文的目的MAC地址為FF-FF-FF-FF-FF-FF的廣播類型地址,而這個ARP廣播報文幀中的源MAC地址為主機(jī)A自身的MAC地址00-01-02-03-04-BB的單播地址,ARP廣播報文幀的數(shù)據(jù)部分封裝的是ARP協(xié)議。這樣的報文幀從主機(jī)A發(fā)出到達(dá)交換機(jī)后,交換機(jī)按照其工作原理把收到的此幀的源MAC地址00-01-02-03-04-AA和對應(yīng)端口G0/0/1對應(yīng)成一條表項(xiàng)記錄到交換的MAC地址表中。
交換機(jī)把主機(jī)A的MAC地址與端口綁定后,交換機(jī)需要把此ARP的廣播數(shù)據(jù)幀轉(zhuǎn)發(fā)出去。在這里我們需要補(bǔ)充一個知識點(diǎn)是交換機(jī)的轉(zhuǎn)發(fā)行為:交換機(jī)把接收到的數(shù)據(jù)幀可能有如下的3種處理方式。
1、向所有其他所有端口(除入端口外的端口)進(jìn)行轉(zhuǎn)發(fā);
2、向指定的端口轉(zhuǎn)發(fā);
3、丟棄數(shù)據(jù)幀。
若交換機(jī)收到的數(shù)據(jù)幀的目的MAC地址為廣播地址即FF-FF-FF-FF
-FF-FF或交換機(jī)收到的單播地址在MAC地址表中不存在,交換機(jī)都會按第一種方式發(fā)送。若收到的數(shù)據(jù)幀的MAC地址為單播MAC地址且此地址可以在交換的MAC地址表中查到則交換機(jī)會按照第二種單播轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)。若交換機(jī)接收到的數(shù)據(jù)幀經(jīng)CRC校驗(yàn)后發(fā)現(xiàn)有錯,則交換機(jī)就會按照第三種方式處理,直接丟棄此數(shù)據(jù)幀。
有了上面的知識,我們接著看ARP廣播的數(shù)據(jù)幀到了交換機(jī),且交換經(jīng)過CRC校驗(yàn)后發(fā)現(xiàn)沒有出錯,交換機(jī)也把此幀的源MAC地址與端口綁定,接著交換機(jī)查看到目的MAC地址為FF-FF-FF-FF-FF-FF的廣播地址,交換機(jī)就把此幀轉(zhuǎn)發(fā)按照廣播的轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā),即除了如端口外的其他端口都進(jìn)行轉(zhuǎn)發(fā)出去。此ARP廣播幀會發(fā)送到主機(jī)B和主機(jī)C上。
主機(jī)B接收到此數(shù)據(jù)幀后,把數(shù)據(jù)幀解封裝后發(fā)現(xiàn)ARP協(xié)議部分請求的不是自己IP地址對應(yīng)MAC地址,就把數(shù)據(jù)幀丟棄,不做進(jìn)一步的處理。而主機(jī)C發(fā)現(xiàn)是請求的是自己IP地址對應(yīng)的MAC地址,主機(jī)C就需要進(jìn)一步處理,于是主機(jī)C就回應(yīng)主機(jī)A的ARP請求。主機(jī)C回應(yīng)主機(jī)C的ARP請求是用主機(jī)A的MAC地址作為目的MAC地址,主機(jī)C自己的MAC地址為源地址進(jìn)行主機(jī)幀的封裝。當(dāng)此ARP的響應(yīng)的數(shù)據(jù)幀被從主機(jī)C發(fā)出到達(dá)交換機(jī)后,交換又把此ARP響應(yīng)幀的源MAC地址即00-01-02-03-04-CC與交換的端口G0/0/3進(jìn)行綁定并記錄到交換機(jī)中,此時交換機(jī)中有了兩條表項(xiàng)。
交換機(jī)學(xué)習(xí)完源MAC地址后還需要把此ARP響應(yīng)的數(shù)據(jù)幀轉(zhuǎn)發(fā)出去,交換機(jī)查看此幀的目的MAC地址與交換機(jī)地址表的表項(xiàng)1中的MAC地址一致,交換機(jī)就把ARP的響應(yīng)的數(shù)據(jù)幀從端口G0/0/1轉(zhuǎn)發(fā)出去。自此基本上就把交換機(jī)的整個工作原理講解完了,即包括交換機(jī)的地址學(xué)習(xí),又包括交換的轉(zhuǎn)發(fā)方式。當(dāng)然交換機(jī)學(xué)習(xí)到MAC地址表項(xiàng)不會永久存在交換機(jī)。每次新學(xué)習(xí)到MAC地址后交換機(jī)就把此表項(xiàng)的老化時間修改為最大(一般情況下是30S),定時器就從最大值重新倒計時。若超30S內(nèi)沒有新的源MAC是00-01-02-03-04-AA數(shù)據(jù)幀從端口G0、0/1進(jìn)入。定時器的計數(shù)倒計為0,后此表項(xiàng)就被從交換機(jī)中刪除。
二、交換機(jī)的三個主要功能
以太網(wǎng)交換機(jī)了解每一端口相連設(shè)備的MAC地址,并將地址同相應(yīng)的端口映射起來存放在交換機(jī)緩存中的MAC地址表中。
轉(zhuǎn)發(fā)/過濾:當(dāng)一個數(shù)據(jù)幀的目的地址在MAC地址表中有映射時,它被轉(zhuǎn)發(fā)到連接目的節(jié)點(diǎn)的端口而不是所有端口(如該數(shù)據(jù)幀為廣播/組播幀則轉(zhuǎn)發(fā)至所有端口)。消除回路:當(dāng)交換機(jī)包括一個冗余回路時,以太網(wǎng)交換機(jī)通過生成樹協(xié)議避免回路的產(chǎn)生,同時允許存在后備路徑。
三、交換機(jī)的工作特性
1.交換機(jī)的每一個端口所連接的網(wǎng)段都是一個獨(dú)立的沖突域。
2.交換機(jī)所連接的設(shè)備仍然在同一個廣播域內(nèi),也就是說,交換機(jī)不隔絕廣播(惟一的例外是在配有VLAN的環(huán)境中)。
3.交換機(jī)依據(jù)幀頭的信息進(jìn)行轉(zhuǎn)發(fā),因此說交換機(jī)是工作在數(shù)據(jù)鏈路層的網(wǎng)絡(luò)設(shè)備(此處所述交換機(jī)僅指傳統(tǒng)的二層交換設(shè)備)。
四、交換機(jī)的分類
依照交換機(jī)處理幀時不同的操作模式,主要可分為兩類:
存儲轉(zhuǎn)發(fā):交換機(jī)在轉(zhuǎn)發(fā)之前必須接收整個幀,并進(jìn)行錯誤校檢,如無錯誤再將這一幀發(fā)往目的地址。幀通過交換機(jī)的轉(zhuǎn)發(fā)時延隨幀長度的不同而變化。
直通式:交換機(jī)只要檢查到幀頭中所包含的目的地址就立即轉(zhuǎn)發(fā)該幀,而無需等待幀全部的被接收,也不進(jìn)行錯誤校驗(yàn)。由于以太網(wǎng)幀頭的長度總是固定的,因此幀通過交換機(jī)的轉(zhuǎn)發(fā)時延也保持不變。