【轉】交換機開發(一)—— 交換機的工作原理

小宇飛刀發表於2018-10-07

一、交換機的工作原理

     當交換機收到資料時,它會檢查它的目的MAC地址,然後把資料從目的主機所在的介面轉發出去。交換機之所以能實現這一功能,是因為交換機內部有一個MAC地址表,MAC地址表記錄了網路中所有MAC地址與該交換機各埠的對應資訊。某一資料幀需要轉發時,交換機根據該資料幀的目的MAC地址來查詢MAC地址表,從而得到該地址對應的埠,即知道具有該MAC地址的裝置是連線在交換機的哪個埠上,然後交換機把資料幀從該埠轉發出去。

1.交換機根據收到資料幀中的源MAC地址建立該地址同交換機埠的對映,並將其寫入MAC地址表中。
2.交換機將資料幀中的目的MAC地址同已建立的MAC地址表進行比較,以決定由哪個埠進行轉發。
3.如資料幀中的目的MAC地址不在MAC地址表中,則向所有埠轉發。這一過程稱為泛洪(flood)。
4.廣播幀和組播幀向所有的埠轉發。

例:某網路如圖1所示。

                                                                         圖1 交換機地址表

表1埠/MAC地址對映表

                MAC地址                   

           埠              

00-10-B5-4B-30-85

E0/1

00-10-B5-4B-30-90

E0/2

00-10-B5-4B-30-65

E0/24

假設主機pc1向主機pc7傳送一個資料幀,該資料幀被送到交換機後,交換機首先查MAC地址表,發現主機pc7連線在E0/24介面上,就將資料幀從E0/24介面轉發出去。

 

二、MAC地址表的構建過程

       為快速轉發報文,乙太網交換機需要建立和維護MAC地址表。交換機採用源MAC地址學習的方法建立MAC地址表。

(1)交換機初始狀態

交換機的初始狀態MAC地址表為空,如圖2所示。

                                                  圖2 交換機地址表初始狀態

 

(2)地址表源MAC地址學習

     當計算機PC1要傳送資料幀給計算機PC6時,因此時地址表是空的,交換機將向除PC1連線埠E0/1以外的其他所有埠轉發資料幀。在轉發之前,首先檢查該資料幀的源MAC地址(00-10-B5-4B-30-85),並在交換機的MAC地址表中新增一條記錄(00-10-B5-4B-30-85,E0/1)使之和埠E0/1相對應。

(3)計算機PC6接收資料幀

    計算機PC6收到傳送的資料幀後,用該資料幀的目的MAC地址和本機的MAC地址比較,發現PC1找的正是它,則接收該資料幀,其他計算機丟棄資料幀。

    計算機PC6回覆PC1時,交換機直接從埠E0/1轉發,並學習到(00-10-B5-4B-30-65)為PC6連線的埠,將其新增到地址表中,如圖3所示。

                                                           圖3 地址表源MAC地址學習

 

       交換機的其他埠利用源MAC地址學習的方法在MAC地址表中不斷新增新的MAC地址與埠號的對應資訊。直到MAC地址表新增完整為止。

      為了保證MAC地址表中的資訊能夠實時地反映網路情況,每個學習到的記錄都有一個老化時間,如果在老化時間內收到地址資訊則重新整理記錄。對沒有收到相應的地址資訊的則刪除該記錄。例如,計算機PC6停止了和交換機通訊,達到老化時間後,交換機會將其對應的記錄從MAC地址表中刪除。

      也可以手工新增交換機的MAC地址表的靜態記錄,手工配置的靜態記錄沒有老化時間的限制。由於MAC地址表中對於同一個MAC地址只能有一條記錄,所以如果手工配置了MAC地址和埠號對應關係後,交換機就不再動態學習這臺計算機的MAC地址了。

 

 

三、交換機的三個主要功能 

a -- 學習

      乙太網交換機瞭解每一埠相連裝置的MAC地址,並將地址同相應的埠對映起來存放在交換機快取中的MAC地址表中.

b -- 轉發/過濾

  當一個資料幀的目的地址在MAC地址表中有對映時,它被轉發到連線目的節點的埠而不是所有埠(如該資料幀為廣播/組播幀則轉發至所有埠)

c -- 消除迴路

      當交換機包括一個冗餘迴路時,乙太網交換機通過生成樹協議避免迴路的產生,同時允許存在後備路徑。

 

四、交換機的工作特性 

1.交換機的每一個埠所連線的網段都是一個獨立的衝突域。 

2.交換機所連線的裝置仍然在同一個廣播域內,也就是說,交換機不隔絕廣播(惟一的例外是在配有VLAN的環境中)。 

3.交換機依據幀頭的資訊進行轉發,因此說交換機是工作在資料鏈路層的網路裝置(此處所述交換機僅指傳統的二層交換裝置)。

 

五、交換機的分類 

   依照交換機處理幀時不同的操作模式,主要可分為兩類: 

a -- 儲存轉發

       交換機在轉發之前必須接收整個幀,並進行錯誤校檢,如無錯誤再將這一幀發往目的地址。幀通過交換機的轉發時延隨幀長度的不同而變化。 

b -- 直通式

      交換機只要檢查到幀頭中所包含的目的地址就立即轉發該幀,而無需等待幀全部的被接收,也不進行錯誤校驗。由於乙太網幀頭的長度總是固定的,因此幀通過交換機的轉發時延也保持不變。

 

六、二、三、四層交換機對比

多種理解的說法:

1.

二層交換(也稱為橋接)是基於硬體的橋接。基於每個末端站點的唯一MAC地址轉發資料包。二層交換的高效能可以產生增加各子網主機數量的網路設計。其仍然有橋接所具有的特性和限制。

三層交換是基於硬體的路由選擇。路由器和第三層交換機對資料包交換操作的主要區別在於物理上的實施。 

四層交換的簡單定義是:不僅基於MAC(第二層橋接)或源/目的地IP地址(第三層路由選擇),同時也基於TCP/UDP應用埠來做出轉發決定的能力。其使網路在決定路由時能夠區分應用。能夠基於具體應用對資料流進行優先順序劃分。它為基於策略的服務質量技術提供了更加細化的解決方案。提供了一種可以區分應用型別的方法。

 

2.

二層交換機 基於MAC地址
三層交換機 具有VLAN功能 有交換和路由///基於IP,就是網路
四層交換機 基於埠,就是應用

 

3.

二層交換技術從網橋發展到VLAN(虛擬區域網),在區域網建設和改造中得到了廣泛的應用。第二層交換技術是工作在OSI七層網路模型中的第二層,即資料鏈路層。它按照所接收到資料包的目的MAC地址來進行轉發,對於網路層或者高層協議來說是透明的。它不處理網路層的IP地址,不處理高層協議的諸如TCP、UDP的埠地址,它只需要資料包的實體地址即MAC地址,資料交換是靠硬體來實現的,其速度相當快,這是二層交換的一個顯著的優點。但是,它不能處理不同IP子網之間的資料交換。傳統的路由器可以處理大量的跨越IP子網的資料包,但是它的轉發效率比二層低,因此要想利用二層轉發效率高這一優點,又要處理三層IP資料包,三層交換技術就誕生了。

三層交換技術的工作原理

第三層交換工作在OSI七層網路模型中的第三層即網路層,是利用第三層協議中的IP包的包頭資訊來對後續資料業務流進行標記,具有同一標記的業務流的後續報文被交換到第二層資料鏈路層,從而打通源IP地址和目的IP地址之間的一條通路。這條通路經過第二層鏈路層。有了這條通路,三層交換機就沒有必要每次將接收到的資料包進行拆包來判斷路由,而是直接將資料包進行轉發,將資料流進行交換

 

下面看一下詳細分析:

1、二層交換技術

      二層交換技術是發展比較成熟,二層交換機屬資料鏈路層裝置,可以識別資料包中的MAC地址資訊,根據MAC地址進行轉發,並將這些MAC地址與對應的埠記錄在自己內部的一個地址表中。

  具體的工作流程如下:

(1) 當交換機從某個埠收到一個資料包,它先讀取包頭中的源MAC地址,這樣它就知道源MAC地址的機器是連在哪個埠上的;

(2) 再去讀取包頭中的目的MAC地址,並在地址表中查詢相應的埠;

(3) 如表中有與這目的MAC地址對應的埠,把資料包直接複製到這埠上;

(4) 如表中找不到相應的埠則把資料包廣播到所有埠上,當目的機器對源機器回應時,交換機又可以學習一目的MAC地址與哪個埠對應,在下次傳送資料時就不再需要對所有埠進行廣播了。

        不斷的迴圈這個過程,對於全網的MAC地址資訊都可以學習到,二層交換機就是這樣建立和維護它自己的地址表。

從二層交換機的工作原理可以推知以下三點:

(1) 由於交換機對多數埠的資料進行同時交換,這就要求具有很寬的交換匯流排頻寬,如果二層交換機有N個埠,每個埠的頻寬是M,交換機匯流排頻寬超過N×M,那麼這交換機就可以實現線速交換;

(2) 學習埠連線的機器的MAC地址,寫入地址表,地址表的大小(一般兩種表示方式:一為BEFFER RAM,一為MAC表項數值),地址表大小影響交換機的接入容量;

(3) 還有一個就是二層交換機一般都含有專門用於處理資料包轉發的ASIC(Application specific Integrated Circuit)晶片,因此轉發速度可以做到非常快。由於各個廠家採用ASIC不同,直接影響產品效能。

以上三點也是評判二三層交換機效能優劣的主要技術引數,這一點請大家在考慮裝置選型時注意比較。

 

2、路由技術

       路由器工作在OSI模型的第三層---網路層操作,其工作模式與二層交換相似,但路由器工作在第三層,這個區別決定了路由和交換在傳遞包時使用不同的控制資訊,實現功能的方式就不同。工作原理是在路由器的內部也有一個表,這個表所標示的是如果要去某一個地方,下一步應該向那裡走,如果能從路由表中找到資料包下一步往那裡走,把鏈路層資訊加上轉發出去;如果不能知道下一步走向那裡,則將此包丟棄,然後返回一個資訊交給源地址。

     路由技術實質上來說不過兩種功能:決定最優路由和轉發資料包。路由表中寫入各種資訊,由路由演算法計算出到達目的地址的最佳路徑,然後由相對簡單直接的轉發機制傳送資料包。接受資料的下一臺路由器依照相同的工作方式繼續轉發,依次類推,直到資料包到達目的路由器。

    而路由表的維護,也有兩種不同的方式。一種是路由資訊的更新,將部分或者全部的路由資訊公佈出去,路由器通過互相學習路由資訊,就掌握了全網的拓撲結構,這一類的路由協議稱為距離向量路由協議;另一種是路由器將自己的鏈路狀態資訊進行廣播,通過互相學習掌握全網的路由資訊,進而計算出最佳的轉發路徑,這類路由協議稱為鏈路狀態路由協議。

   由於路由器需要做大量的路徑計算工作,一般處理器的工作能力直接決定其效能的優劣。當然這一判斷還是對中低端路由器而言,因為高階路由器往往採用分散式處理系統體系設計。

 

3、三層交換技術

      近年來的對三層技術的宣傳,耳朵都能起繭子,到處都在喊三層技術,有人說這是個非常新的技術,也有人說,三層交換嘛,不就是路由器和二層交換機的堆疊,也沒有什麼新的玩意,事實果真如此嗎?下面先來通過一個簡單的網路來看看三層交換機的工作過程。

     組網比較簡單

     使用IP的裝置A------------------------三層交換機------------------------使用IP的裝置B

     比如A要給B傳送資料,已知目的IP,那麼A就用子網掩碼取得網路地址,判斷目的IP是否與自己在同一網段。

     如果在同一網段,但不知道轉發資料所需的MAC地址,A就傳送一個ARP請求,B返回其MAC地址,A用此MAC封裝資料包併傳送給交換機,交換機起用二層交換模組,查詢MAC地址表,將資料包轉發到相應的埠。

   如果目的IP地址顯示不是同一網段的,那麼A要實現和B的通訊,在流快取條目中沒有對應MAC地址條目,就將第一個正常資料包傳送向一個預設閘道器,這個預設閘道器一般在作業系統中已經設好,對應第三層路由模組,所以可見對於不是同一子網的資料,最先在MAC表中放的是預設閘道器的MAC地址;然後就由三層模組接收到此資料包,查詢路由表以確定到達B的路由,將構造一個新的幀頭,其中以預設閘道器的MAC地址為源MAC地址,以主機B的MAC地址為目的MAC地址。通過一定的識別觸發機制,確立主機A與B的MAC地址及轉發埠的對應關係,並記錄進流快取條目表,以後的A到B的資料,就直接交由二層交換模組完成。這就通常所說的一次路由多次轉發。

    以上就是三層交換機工作過程的簡單概括,可以看出三層交換的特點:

a -- 由硬體結合實現資料的高速轉發。

b -- 這就不是簡單的二層交換機和路由器的疊加,三層路由模組直接疊加在二層交換的高速背板匯流排上,突破了傳統路由器的介面速率限制,速率可達幾十Gbit/s。算上背板頻寬,這些是三層交換機效能的兩個重要引數。

c -- 簡潔的路由軟體使路由過程簡化。

d -- 大部分的資料轉發,除了必要的路由選擇交由路由軟體處理,都是又二層模組高速轉發,路由軟體大多都是經過處理的高效優化軟體,並不是簡單照搬路由器中的軟體。

 

簡單總結:

     二層交換機用於小型的區域網路。這個就不用多言了,在小型區域網中,廣播包影響不大,二層交換機的快速交換功能、多個接入埠和低謙價格為小型網路使用者提供了很完善的解決方案。

     路由器的優點在於介面型別豐富,支援的三層功能強大,路由能力強大,適合用於大型的網路間的路由,它的優勢在於選擇最佳路由,負荷分擔,鏈路備份及和其他網路進行路由資訊的交換等等路由器所具有功能。

     三層交換機的最重要的功能是加快大型區域網路內部的資料的快速轉發,加入路由功能也是為這個目的服務的。如果把大型網路按照部門,地域等等因素劃分成一個個小區域網,這將導致大量的網際互訪,單純的使用二層交換機不能實現網際互訪;如單純的使用路由器,由於介面數量有限和路由轉發速度慢,將限制網路的速度和網路規模,採用具有路由功能的快速轉發的三層交換機就成為首選。

    一般來說,在內網資料流量大,要求快速轉發響應的網路中,如全部由三層交換機來做這個工作,會造成三層交換機負擔過重,響應速度受影響,將網間的路由交由路由器去完成,充分發揮不同裝置的優點,不失為一種好的組網策略,當然,前提是客戶的腰包很鼓,不然就退而求其次,讓三層交換機也兼為網際互連。

 

4、四層交換機

  第四層交換的一個簡單定義是:它是一種功能,它決定傳輸不僅僅依據MAC地址(第二層網橋)或源/目標IP地址(第三層路由),而且依據TCP/UDP(第四層)應用埠號。第四層交換功能就象是虛IP,指向物理伺服器。它傳輸的業務服從的協議多種多樣,有HTTP、FTP、NFS、Telnet或其他協議。這些業務在物理伺服器基礎上,需要複雜的載量平衡演算法。在IP世界,業務型別由終端TCP或UDP埠地址來決定,在第四層交換中的應用區間則由源端和終端IP地址、TCP和UDP埠共同決定。

  在第四層交換中為每個供搜尋使用的伺服器組設立虛IP地址(VIP),每組伺服器支援某種應用。在域名伺服器(DNS)中儲存的每個應用伺服器地址是VIP,而不是真實的伺服器地址。

  當某使用者申請應用時,一個帶有目標伺服器組的VIP連線請求(例如一個TCP SYN包)發給伺服器交換機。伺服器交換機在組中選取最好的伺服器,將終端地址中的VIP用實際伺服器的IP取代,並將連線請求傳給伺服器。這樣,同一區間所有的包由伺服器交換機進行對映,在使用者和同一伺服器間進行傳輸。

第四層交換的原理 

  OSI模型的第四層是傳輸層。傳輸層負責端對端通訊,即在網路源和目標系統之間協調通訊。在IP協議棧中這是TCP(一種傳輸協議)和UDP(使用者資料包協議)所在的協議層。
  在第四層中,TCP和UDP標題包含埠號(portnumber),它們可以唯一區分每個資料包包含哪些應用協議(例如HTTP、FTP等)。端點系統利用這種資訊來區分包中的資料,尤其是埠號使一個接收端計算機系統能夠確定它所收到的IP包型別,並把它交給合適的高層軟體。埠號和裝置IP地址的組合通常稱作“插口(socket)”。

  1和255之間的埠號被保留,他們稱為“熟知”埠,也就是說,在所有主機TCP/IP協議棧實現中,這些埠號是相同的。除了“熟知”埠外,標準UNIX服務分配在256到1024埠範圍,定製的應用一般在1024以上分配埠號.

   分配埠號的最近清單可以在RFc1700”Assigned Numbers”上找到。TCP/UDP埠號提供的附加資訊可以為網路交換機所利用,這是第4層交換的基礎。 

"熟知"埠號舉例: 

應用協議         埠號 

FTP                         20(資料)
           21(控制)

TELNET                 23
SMTP                     25
HTTP                      80
NNTP                     119
NNMP                    16
                               162(SNMP traps) 

     TCP/UDP埠號提供的附加資訊可以為網路交換機所利用,這是第四層交換的基礎。

  具有第四層功能的交換機能夠起到與伺服器相連線的“虛擬IP”(VIP)前端的作用。

     每臺伺服器和支援單一或通用應用的伺服器組都配置一個VIP地址。這個VIP地址被髮送出去並在域名系統上註冊。

  在發出一個服務請求時,第四層交換機通過判定TCP開始,來識別一次會話的開始。然後它利用複雜的演算法來確定處理這個請求的最佳伺服器。一旦做出這種決定,交換機就將會話與一個具體的IP地址聯絡在一起,並用該伺服器真正的IP地址來代替伺服器上的VIP地址。

  每臺第四層交換機都儲存一個與被選擇的伺服器相配的源IP地址以及源TCP埠相關聯的連線表。然後第四層交換機向這臺伺服器轉發連線請求。所有後續包在客戶機與伺服器之間重新影射和轉發,直到交換機發現會話為止。

  在使用第四層交換的情況下,接入可以與真正的伺服器連線在一起來滿足使用者制定的規則,諸如使每臺伺服器上有相等數量的接入或根據不同伺服器的容量來分配傳輸流。

--------------------- 本文來自 Leo-Lian 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/huan447882949/article/details/79764605?utm_source=copy

相關文章