網絡協議 4 - 交換機與 VLAN:辦公室太複雜,我要回學校

    上一次,咱們經過宿舍聯網打魔獸的需求,認識瞭如何經過物理層和鏈路層組建一個宿舍局域網。今天,讓咱們切換到稍微複雜點的場景,辦公室。程序員

    在這個場景裏,就不像在宿舍那樣,搞幾根網線,拉一拉,扯一扯就能夠了。一個辦公室少到數十人,大至上百人,每一個人都有一個網口,若是再算上整個樓層樓層、甚至整棟樓,這個網口就更多了。算法

    相似辦公室這樣,這些複雜場景的網絡佈線就牽扯出一個專業名詞-拓撲結構安全

什麼是拓撲結構?

    在解釋拓撲結構前,咱們要先明白什麼是拓撲。拓撲是 Topology 的音譯,直譯是地誌學,最先指研究地形、地貌相相似的有關學科。如今是研究幾何圖形或空間在連續改變形狀後還能保持不變的一些性質的一個學科。網絡

    計算機網絡的拓撲結構是引用拓撲學中研究與大小、形狀無關的點、線關係的方法,把網絡中的計算機和通訊設備抽象爲一個點,把傳輸介質抽象爲一條線,由點和線組成的幾何圖形就是計算機網絡的拓撲結構數據結構

辦公室拓撲結構的造成

    上面說過,每一個辦公室會有幾十個甚至上百個網口。這個時候,一個交換機確定不夠用,須要多臺交換機鏈接,而多臺交換機鏈接就造成了一個稍微複雜的拓撲結構。性能

    咱們先來看兩臺交換機的情形。兩臺交換機鏈接着三個局域網,每一個局域網上都有多臺機器。若是機器 1 只知道機器 4 的 IP 地址,當它想要訪問機器 4 時,把包發出去的時候,它必須知道機器 4 的 MAC 地址。咱們來看看這個過程:學習

  • 機器 1 發起廣播,機器 2 和交換機 A 都收到廣播。機器 2 收到廣播後,知道不是找它的,因此沒它什麼事。
  • 交換機 A 一開始是不知道任何拓撲信息的,在它收到這個廣播後,採起的策略是,除了廣播包來的方向外,它還要轉發給其餘全部的網口。
  • 機器 3 和交換機 B 收到了廣播信息了,一樣的,機器 3 也知道和它沒什麼關係。
  • 交換機 B 收到廣播信息後,這時候它也不知道任何拓撲信息,因此也進行廣播,將包轉發到局域網三,也就是機器 4 和機器 5。
  • 機器 4 收到廣播是,它發現是找它的,就主動響應說,這是找個人,個人 MAC 地址是 XXX。

    在機器 1 收到機器 4 的 MAC 地址後,一個 ARP 請求就成功完成了。加密

    在上面過程當中,交換機 A 和交換機 B 都是可以學習到這樣的信息:計算機網絡

  • 機器 1 是在左邊這個網口。

    當了解這樣的信息後,若是機器 2 訪問 機器 1,機器 2 發起一個 ARP 請求獲取機器 1 的 MAC 地址,這個廣播消息會發給機器 1 和交換機 A。這個時候交換機 A 已經知道機器 1 是在左邊的網卡,因此它就不會將請求廣播到局域網二和局域網三。設計

    就這樣,當交換機學習完全部的拓撲信息後,兩臺交換機工做得會愈來愈好。

    可是隨着辦公室愈來愈大,交換機數量確定會愈來愈多,當整個拓撲結構複雜,這麼多網線繞來繞去,不可避免的就會出現一些意料以外的狀況,其中最多見的問題就是環路問題

環路與廣播風暴

    以下圖。當兩個交換機環路鏈接兩個局域網時,你知道會出現什麼結果嗎?

    咱們來想象下機器 1 訪問機器 2 的過程。

  • 機器 1 發起 ARP 廣播
  • 機器 2 收到廣播,把 MAC 地址返回。

    咦,整個過程很順利,沒什麼問題。

    可是咱們忽略了,兩個交換機也是能收到廣播包的。咱們來看看兩個交換機的廣播過程:

  1. 交換機 A 開始不知道拓撲信息,因而將廣播信息放到局域網二
  2. 消息在局域網二廣播,交換機 B 右網卡收到廣播消息,因而將信息放到局域網一
  3. 消息在局域網一廣播,交換機 A 左網口收到消息,又將廣播信息放到局域網二
  4. ......

    看出來了嗎?這樣一直廣播,就會造成一個環路,最終成爲廣播風暴,直到網絡癱瘓。

上面過程,可能會有人說,兩臺交換機逐漸學習到拓撲結構後 ,是否是就能夠了?那就讓咱們來看下它們的學習過程:

  1. 在局域網一,交換機 A、B 收到機器 1 的廣播包後,知道機器 1 都是在左網口
  2. 當廣播放到局域網二後,交換機 B 右網口又收到了來自機器 1 的廣播包,因而就誤會機器 1 換位置了,就記住了機器 1 是在右網口,把以前學習到的信息清理掉
  3. 同理,交換機 A 右網口收到了機器 1 的廣播包,一樣誤會了,因而也學會了,機器 1 在右網口,不是在左網口

    就這樣,兩個交換機會不斷刷新「三觀」,機器 1 是在左網口,過一會,發現不對,機器 1 是在右網口,過了一會,又發現不對,是在左網口。因而,又造成了一個「廣播風暴」。

    那麼,有什麼方法能夠解決環路問題呢?這就到了 STP 協議出場的時候了。

STP 協議中那些難以理解的概念

    在數據結構中,有一個方法叫做最小生成樹。有環的咱們常稱爲。將圖中的環破了,就生成了。而在計算機網絡中,生成樹的算法叫做 STP(Spanning Tree Protocol)

    STP 協議比較複雜,一開始很難看懂,讓咱們來經過華山論劍,決出五嶽盟主的方式看看生成樹的過程。

    在 STP 協議裏面有不少概念,譯名就很是拗口,讓咱們以門派中的職位來幫助你們理解。

  • Root Bridge,也就是根交換機。能夠比喻爲「掌門」交換機,是某棵樹的老大。
  • Designated Bridge,也就是指定交換機。這個比較難理解,能夠想象成一個「小弟」,對於樹來講,就是一棵樹的樹枝。所謂「指定」的意思是,我拜誰作大哥,其餘交換機經過這個交換機到達根交換機,也就至關於拜他作了大哥。這裏注意是樹枝,不是葉子,由於葉子每每是主機。
  • Bridge Protocol Data Units(BPDU),網橋協議數據單元。能夠比喻爲「相互比較實力「的協議。行走江湖,比的就是武功,拼的就是實力。當兩個交換機遇見的時候,也就是相連的時候,就須要互相比比內力。BPDU 只有掌門能發,隸屬於某個掌門的交換機只能傳達掌門的指示。
  • Priority Vector,優先級向量。能夠比喻爲實力(值越小越牛)。實力是啥?就是一組 ID,[Root Bridge ID, Root Path Cost, Bridge ID, and Port ID]。爲何這樣設計呢?這是由於要看怎麼來比實力。先看 Root Bridge ID,也就是老大的 ID,發現掌門同樣,那就是師兄弟;再比 Root Path Cost,也就是我距離我老大的距離,也就是拿和掌門的關係比,看同一個門派內誰和老大關係鐵;最後比 Bridge ID,比我本身的 ID,拿本身的本事比。

    概念都準備好了,下面咱們看看 STP 是怎麼工做的。

STP 的工做過程

    一開始,江湖紛爭,異常混亂。你們都以爲本身是掌門,誰也不服誰。因而,全部的交換機都認爲本身是掌門,每一個網橋都分配了一個 ID。這個 ID 裏有管理員分配的優先級,固然管理員指定哪些交換機性能好,就給它們分配高的優先級。這種交換機生下來武功就很高,起步就是喬峯。

    既然都是掌門,互相都連長網線,那就互相發送 BPDU 來比功夫唄。這一比就發現,有人是嶽不羣,有人是封不平。贏的人接着作掌門,輸的就只好作小弟了。當掌門的還會繼續發 BPDU,而輸的人就沒有機會了,它們就只有在收到掌門發的 BPDU 的時候,轉發一下,表示服從命令。

    數字表示優先級。就像上面的圖,5 和 6 遇見了,6 的優先級低(數字越小,優先級越高),因此乖乖作小弟。因而,一個小門派造成,5 是掌門,6 是小弟。其餘諸如 1-七、2-八、3-4 這樣的小門派也誕生了。接着,這些小的門派就好相互合併。

    合併的過程會出現如下四種情形。

情形一:掌門碰見掌門

    當 5 碰到了 1,掌門遇見掌門,1 以爲本身是掌門,5 也剛剛跟別人 PK 完,成爲掌門。這倆掌門比功夫,最終 1 勝出,因而 5 就率領全部的小弟歸順。結果就是 1 成功大掌門。

情形二:同門相遇

    同門相遇能夠是掌門與本身的小弟相遇,這說明存在「環」了。這個小弟已經經過其餘門路拜在你門下,結果你還不認識,還 PK 了一把。結果掌門發現這個小弟功夫不錯,不該該級別這麼低,就把它招到門下親自帶,那這個小弟就至關於升職了。

    咱們再來看,假如 1 和 6 相遇。6 原來就拜在 1 的門下,只不過 6 的上司是 5,5 的上司是 1。1 發現,6 距離我只有 2,比從 5 這裏過來的 5(=4+1)近多了,那 6 就直接向我彙報吧。因而,5 和 6 分別彙報給 1。

    同門相遇還能夠是小弟相遇。這個時候就要比較誰和掌門的關係近。近的當大哥。剛纔 5 和 6 同時向 1 彙報,後來 5 和 6 相遇比功夫的時候發現,5 你直接彙報給 1 距離是 4,若是 5 彙報給 6 再彙報給 1 ,距離只有 2+1=3,因此 5 乾脆拜 6 爲上司。

情形三:掌門與其餘幫派小弟相遇

    小弟拿本幫掌門和這個掌門比,贏了,這個掌門就拜入門下,輸了,就拜入新掌門,而且會主鍵拉攏和本身鏈接的兄弟,一塊兒「棄暗投明」。

    例如,2 和 7 相遇,雖然 7 是小弟,2 是掌門,就我的武功而言,2 比 7 強,可是 7 的掌門是 1,比 2 牛,因此沒辦法,2 要拜入 7 的門派,而且連同本身的小弟都一塊兒拜入。

情形四:不一樣小弟相遇

    各自拿掌門比較,輸了的拜入贏的門派,而且逐漸將與本身鏈接的兄弟拉入新門派。

    例如,5 和 4 相遇。雖然 4 的武功好於 5,可是 5 的掌門是 1,比 4 牛,因而 4 拜入 5 的門派。後來當 3 和 4 相遇的時候,3 發現 4 已經「叛變」了,4 說我如今老大是 1,比你牛,要不你也來吧,因而 3 也拜入 1。

    最紅,生成一棵樹,武林一統,天下太平。可是天下統一久了,也會有相應問題。常見的有廣播和安全問題

廣播和安全問題

    機器多了,交換機也多了,就算交換機比 Hub 智能一些,可是仍是不免有廣播的問題。一大堆機器,相關的部門、不相關的部門,廣播一大堆,性能就下來了。

    就像一家公司,創業的時候,十來我的,坐在一個會議室,有事情你們討論下,很是方便。當時若是變成了 50 個,全在一個會議室吵吵,就會亂的不得了。

    另外一方面,一個公司裏,有的部門須要保密,好比人事部門,確定要討論升職加薪的事情。可是若是在一個廣播域裏,碰到一個會抓包的程序員,就能看的沒有加密的敏感信息。

    那咋辦?能咋辦,分部門,分會議室唄,讓咱們來看看怎麼分。

    有兩種分的方法。一個是物理隔離。每一個部門設一個單獨的會議室,對應到網絡方面,就是每一個部門有單獨的交換機,配置單獨的子網。這樣部門之間的溝通就須要路由器了。

    這樣的問題在於,有的部門人多,有的部門人少,並且部門的人數也會頻繁發生變化,若是每一個部門有單獨的交換機,網口多了浪費,少了又不夠用。

    這時候,虛擬隔離就出來了。虛擬隔離,就是咱們常說的 VLAN,或者叫作虛擬局域網

    使用 VLAN,一個交換機上會連屬於多個局域網的機器,那交換機是怎麼區分哪一個機器屬於哪一個局域網呢?

    咱們只須要在原來的二層頭上加一個 TAG,裏面有個 VLAN ID,共 12 位,能夠劃分 4096 個 VLAN。對於普通辦公室,這個數量應該是夠用的。

    若是咱們買的交換機支持 VLAN,當這個交換機把二層的頭取下來的時候,就可以識別這個 VLAN ID。這樣只有相同的 VLAN 的包,纔會互相轉發,不一樣 VLAN 的包,是看不到的。

    這樣,廣播和安全問題就可以解決了。

這樣,複雜的辦公室網絡佈線就被咱們用交換機與 VALN 搞定了。

參考:

  1. 百度百科-拓撲結構
  2. 劉超-趣談網絡協議系列課
相關文章
相關標籤/搜索