標籤:路由器 交換器 產品 網路 技術
一.交換器概述:
交換器是一種工作在二層的裝置,但是隨著技術的不斷進步,現在已經出現了諸如三層交換器,多層交換器產品。在本篇中討論的是二層交換器的一些特性。
二.交換器的功能:
1. 地址學習
有些地方也叫做基於源MAC地址學習,這個功能主要就是學習和儲存MAC地址。
2. 幀的轉寄/過濾
資料幀的轉寄主要是交換器能夠根據MAC地址表來轉寄資料,過濾則是對一些受限制的資料進行阻止或丟棄。
3. 環路避免
由於交換器的某些特性會帶來一些問題,比如形成環路,因此為了保證網路上資料的正確傳輸以及網路的穩定要採取一些措施來避免這些問題,主要是通過STP來實現,稍後會講到。
三.交換器的工作過程:
交換器在啟動並執行時候要維護幾張表,比如CAM表,vlan.data表。CAM表用來儲存學到的MAC地址;VLAN.DATA檔案用來儲存VLAN相關的資訊。
1.在交換器初始加電的時候它的MAC地址表是空的,當其他與其相連的裝置(PC,交換器,路由器等)向它發送一個資訊的時候,交換器就會根據資料的源MAC和目標MAC對資料進行處理,因為發的是第一個包,所以這時候交換器會把源MAC地址和資料從本交換器進來的連接埠號碼做關聯,然後加上VLAN號儲存起來形成一個CAM表條目。因為交換器的MAC地址表現在是空的,所以它不知道資料的目的地在那裡,這時候交換器會發送ARP請求把資料從除了資料進來的連接埠之外的所有連接埠廣播,這個過程稱為泛洪,當目標主機收到資料之後會返回一個回應包,告訴交換器自己的MAC地址,這時候交換器又會根據目標主機返回的包把目標主機的MAC地址和進來的連接埠關聯起來加上VLAN號形成一個新的CAM表條目。這個過程就是地址學習。我們通過下面的圖來詳細瞭解一下。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/37/95/wKiom1OtM3vAVy7DAACmjqN4wns099.jpg" style="float:none;" title="switch.jpg" alt="wKiom1OtM3vAVy7DAACmjqN4wns099.jpg" />
現在PC1和PC2要進行通訊(比如一個PING包),PC1會發出一個資料包格式大致如下:
源MAC |
目標MAC |
源IP |
目標IP |
1111 |
2222 |
192.168.1.1 |
192.168.1.2 |
當資料從PC1出來到了SW1之後,交換器就會查看目標MAC,如果源MAC:1111不在CAM表中,這時候交換器會做一條記錄,他會把源MAC和連接埠對應關係加上VLAN號儲存到CAM表中,如:
MAC地址 |
連接埠號碼 |
Vlan號 |
1111.1111.1111 |
F0/1 |
1 |
然後他會看目標MAC,因為此時交換器也沒不知道2222怎麼走,所以它會向除了從F0/1資料進來的連接埠之外的F0/2,F0/3轉寄ARP請求,大致就是詢問192.168.1.2的MAC地址是多少。發送之後PC2,PC3都會受到資料包,PC3把包拆開發現不是自己的IP地址,就會把資料丟棄,而PC2收到資料之後發現目標IP是自己,這時候PC2就回傳送一個回應。告訴交換器“我是192.168.1.2我的MAC地址是2222。交換器收到回應又會在CAM表中添加一條對應關係。
MAC地址 |
連接埠號碼 |
Vlan |
2222.2222.2222 |
F0/2 |
1 |
這個過程之後SW1已經學習到倆個MAC地址了,如果PC1或者PC2要和PC3通訊的時候會重複上述步驟,SW1就能學到PC3的MAC地址。
但是有一點要注意,就是如果PC1和PC2的位置改變,F0/1聯結PC2,F0/2聯結PC1,這個時候經過一次資料通訊和地址學習的過程之後,連接埠F0/1對應的MAC地址就會變成2222.2222.2222。F0/2對應的MAC地址就會變成1111.1111.1111。這是因為交換器總是以最後學到的MAC地址為準的。
2.當交換器學習到直連的本網段內所有的MAC地址之後,如果再有資料包過來,交換器就會根據CAM表裡面的對應條目對資料進行處理,還是上面那個圖。PC1要和PC2通訊,當資料包進過SW1的時候交換器首先看源和目標MAC地址,然後查看CAM表,因為CAM表裡面已經有對應關係PC2的MAC地址2222對應連接埠F0/2所以直接把資料從F0/2發出去而不用再發到PC3。這就是交換器的資料轉寄,如果發送方和接收方不在同一網段,或者在不同VLAN,或者在交換器上作了二層ACL,則資料將被過濾掉。
交換器的轉寄有三種方式:
直接轉寄
儲存轉寄
片段轉寄
其中直接轉寄不對資料進行校正,直接把資料從相應連接埠發送出去。這樣容易造成很多無用的資料幀片段(殘幀,壞幀,錯誤幀等)。
儲存轉寄則是先儲存整個資料幀,然後對其進行校正,校正無誤後再轉寄出去。雖然這樣做減少了錯誤幀的問題,但是對每個幀進行整體儲存校正這樣會佔用很多系統資源。
片段轉寄則綜合了直接轉寄和儲存轉寄的優點,它只檢查資料幀的前64個位元組,校正通過則進行轉寄,這樣即保證了資料的正確性又能使資料得到比較快速的轉寄。
當然對於應用環境的不同,上述三種轉寄方式各有其特點。
3.由於交換器的地址學習和轉寄功能,會帶來一些潛在的問題,如所示,PC1要和PC2通訊,我們來分析一下資料的流向:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/37/95/wKiom1OtM37RSSU-AACi_scyDFM820.jpg" title="STP.jpg" style="float:none;" alt="wKiom1OtM37RSSU-AACi_scyDFM820.jpg" />
這裡會出現倆種情況:
一.當SW1的F0/2收到資料的時候,首先添加一條MAC地址對應關係,地址1111.1111.1111從F0/2學到,然後查看CAM表發現MAC地址2222.2222.2222不在他的CAM表裡,這時他會向除了F0/2之外的所有連接埠轉寄,於是資料從F0/1轉寄出去,這裡有會有兩種情況:
a.PC2正確收到資料,返回一個資料包。
b.SW2收到資料,首先添加一條MAC地址對應關係,地址1111.1111.1111從F1/1學到。然後查看CAM表,發現沒有對應的MAC地址則會從除F1/1之外的所有連接埠即F1/2轉寄出去,又回到SW1然後就這樣一直在SW1和SW2之間傳遞。形成廣播風暴。
二.當SW2的F1/2收到資料的時候,第一步添加一條MAC地址條目,1111.1111.1111從F1/2學到,這時候由於上面一種情況1111.1111.1111是由F1/1學到,這時候會把CAM表裡面的對應關係改掉,然後發現MAC地址2222.2222.2222不在他的CAM表裡,SW2同樣會從F1/1將資料轉寄出去,這時候也有兩種情況:
a.PC2收到資料包,這時候由於之前已經收到一個資料包,此時再受到一個包,這樣就出現了重複幀的問題。
b.SW1收到資料包,他會發現MAC地址1111.1111.1111是由F0/1學到的,同樣改寫自己的CAM表,這樣反反覆複,CAM表會一直不停的改,造成MAC地址不穩定。
由上可知當存在多鏈路或者多裝置在交換器之間形成環的時候會帶來三個問題,即廣播風暴、重複幀、MAC地址不穩定。這三個問題的出現是很危險的,因此我們要想辦法避免它,通過STP(產生樹協議)交換器就可以避免環路。
他的工作過程如:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/37/95/wKiom1OtM33Ta8KKAACk88YJf_k629.jpg" title="stp2.jpg" style="float:none;" alt="wKiom1OtM33Ta8KKAACk88YJf_k629.jpg" />
之所以會出現那三種情況是由於在交換器之間形成了一個邏輯的環,如果能打破這個環那麼上述三種情況就不會出現了。STP就是基於這個思想在邏輯上把某個連接埠阻塞掉,如把SW2的F1/1連接埠阻塞掉,這樣在SW2上F1/2過來的資料就不會從F1/1轉寄出去,想從F1/1進來的資料也會被擋在外面進不來。這裡介紹的是多鏈路的情況,如果是多裝置的情況也是通過邏輯上阻塞掉某個連接埠來實現的,使得整個拓撲看上去像棵樹一樣,樹是沒有環路的。
這裡給大家簡單介紹了一些基於MAC地址的二層交換器的工作過程和原理,希望大家看了之後對二層交換器的工作機制有所瞭解,希望這篇文章能給大家有所收穫。
本文出自 “LBD” 部落格,請務必保留此出處http://bdliu.blog.51cto.com/2014078/1431695