網絡協議(二)鏈路層和網絡層

4、從物理層到 MAC層

第一層(物理層)

網線,有兩個頭。一頭插在一臺電腦的網卡上,另外一頭插在另外一臺電腦的網卡上。普通的網線這樣是通不了的,因此水晶頭要作交叉線,用的就是所謂的1-三、2-6 交叉接法。水晶頭的第 一、2 和第 三、6 腳,它們分別起着收、發信號的做用。將一端的 1 號和 3 號線、2 號和 6 號線互換一下位置,就可以在物理層實現一端發送的信號,另外一端能收到。nginx

固然電腦連電腦,除了網線要交叉,還須要配置這兩臺電腦的 IP 地址、子網掩碼和默認網關。這三個概念上一節詳細描述過了。要想兩臺電腦可以通訊,這三項必須配置成爲一個網絡,能夠一個是 192.168.0.1/24,另外一個是 192.168.0.2/24,不然是不通的。算法

兩臺電腦之間的網絡包,包含 MAC 層嗎?固然包含,要完整。IP層要封裝了 MAC 層才能將包放入物理層。到此爲止,兩臺電腦已經構成了一個最小的局域網,也即LAN。緩存

怎麼把三臺電腦連在一塊兒呢?Hub,也就是集線器。這種設備有多個口,能夠將宿舍裏的多臺電腦鏈接起來。可是,和交換機不一樣,集線器沒有大腦,它徹底在物理層工做。它會將本身收到的每個字節,都複製到其餘端口上去。這是第一層物理層聯通的方案。安全

第二層(數據鏈路層)

Hub 採起的是廣播的模式,若是每一臺電腦發出的包,宿舍的每一個電腦都能收到,那就麻煩了。這就須要解決幾個問題:網絡

  1. 這個包是發給誰的?誰應該接收?
  2. 你們都在發,會不會產生混亂?有沒有誰先發、誰後發的規則?
  3. 若是發送的時候出現了錯誤,怎麼辦?

這幾個問題,都是第二層,數據鏈路層,也即 MAC 層要解決的問題。MAC的全稱是Medium Access Control,即媒體訪問控制。其實就是控制在往媒體上發數據的時候,誰先發、誰後發的問題。防止發生混亂。這解決的是第二個問題。這個問題中的規則,學名叫多路訪問。 有不少算法能夠解決這個問題。好比接下來這三種方式:數據結構

  1. 分多個車道。每一個車一個車道,你走你的,我走個人。這在計算機網絡裏叫做信道劃分
  2. 今天單號出行,明天雙號出行,輪着來。這在計算機網絡裏叫做輪流協議
  3. 無論三七二十一,有事兒先出門,發現特堵,就回去。錯太高峯再出。咱們叫做隨機接入協議。著名的以太網,用的就是這個方式。

接下來要解決第一個問題:發給誰,誰接收?這裏用到一個物理地址,叫做鏈路層地址。可是由於第二層主要解決媒體接入控制的問題,因此它常被稱爲MAC 地址。解決第一個問題就牽扯到第二層的網絡包格式。對於以太網,第二層的最開始,就是目標的MAC 地址和源的 MAC 地址。
image.png
接下來是類型,大部分的類型是 IP 數據包,而後 IP 裏面包含 TCP、UDP,以及 HTTP等,這都是裏層封裝的事情。有了這個目標 MAC 地址,數據包在鏈路上廣播,MAC 的網卡才能發現,這個包是給它的。MAC 的網卡把包收進來,而後打開 IP 包,發現 IP 地址也是本身的,再打開 TCP包,發現端口是本身,也就是 80,而 nginx 就是監聽 80。學習

對於以太網,第二層的最後面是CRC,也就是循環冗餘檢測。經過 XOR 異或的算法,來計算整個包是否在發送的過程當中出現了錯誤,主要解決第三個問題。spa

這裏還有一個沒有解決的問題,當源機器知道目標機器的時候,能夠將目標地址放入包裏面,若是不知道呢?一個廣播的網絡裏面接入了 N 臺機器,我怎麼知道每一個 MAC 地址是誰呢?這就是ARP 協議,也就是已知 IP 地址,求 MAC 地址的協議。
image.png
在一個局域網裏面,當知道了 IP 地址,不知道 MAC 怎麼辦呢?靠「吼」。
image.png
image.png
爲了不每次都用 ARP 請求,機器本地也會進行 ARP 緩存。固然機器會不斷地上線下線,IP 也可能會變,因此 ARP 的 MAC 地址緩存過一段時間就會過時。計算機網絡

局域網

上面這種組網的方法,對一個宿舍來講沒有問題,可是一旦機器數目增多,問題就出現了。由於Hub 是廣播的,無論某個接口是否須要,全部的 Bit 都會被髮送出去,而後讓主機來判斷是否是須要。這時這就須要一個能把MAC 頭拿下來,檢查一下目標 MAC 地址,而後根據策略轉發的設備,咱們稱爲交換機,這個設備顯然是個二層設備。翻譯

一臺 MAC1 電腦將一個包發送給另外一臺 MAC2 電腦,當這個包到達交換機的時候,一開始交換機也不知道 MAC2 的電腦在哪一個口,因此沒辦法,它只能將包轉發給除了來的那個口以外的其餘全部的口。這個時候,交換機會記住,MAC1 是來自一個明確的口。之後有包的目的地址是 MAC1 的,直接發送到這個口就能夠了。交換機上的學習的結果,咱們稱爲轉發表,是有一個過時時間的。

5、交換機與 VLAN

拓撲結構是怎麼造成的?

多臺交換機之間鏈接起來,就造成一個稍微複雜的拓撲結構
一個交換機表明着一個局域網,交換機互聯就是局域網互聯。

如何解決常見的環路問題?

image.png
一開始,機器 1 並不知道機器 2 的 MAC 地址,因此它須要發起一個 ARP 的廣播。廣播到達機器 2,機器 2 會把 MAC 地址返回來,可是問題來了,這兩個交換機仍是都可以收到廣播包的。交換機 A 一開始是不知道機器 2在哪一個局域網的,因此它會把廣播消息放到局域網二,在局域網二廣播的時候,交換機 B右邊這個網口也是可以收到廣播消息的。交換機 B 會將這個廣播息信息發送到局域網一。局域網一的這個廣播消息,又會到達交換機 A 左邊的這個接口。交換機 A 這個時候仍是不知道機器 2 在哪一個局域網,因而將廣播包又轉發到局域網二。這樣也會破環交換機學習的轉發表。

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

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

  1. Root Bridge,也就是根交換機。這個比較容易理解,能夠比喻爲「掌門」交換機,是某棵樹的老大,是掌門,最大的大哥。
  2. Designated Bridges,有的翻譯爲指定交換機。這個比較難理解,能夠想像成一個「小弟」,對於樹來講,就是一棵樹的樹枝。所謂「指定」的意思是,我拜誰作大哥,其餘交換機經過這個交換機到達根交換機,也就至關於拜他作了大哥。這裏注意是樹枝,不是葉子,由於葉子每每是主機。
  3. Bridge Protocol Data Units (BPDU) ,網橋協議數據單元。能夠比喻爲「相互比較實力」的協議。行走江湖,比的就是武功,拼的就是實力。當兩個交換機遇見的時候,也就是相連的時候,就須要互相比一比內力了。BPDU 只有掌門能發,已經隸屬於某個掌門的交換機只能傳達掌門的指示。
  4. 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的工做過程是怎樣的?

一開始,全部的交換機都認爲本身是掌門,每一個網橋都被分配了一個 ID。這個 ID 裏有管理員分配的優先級,固然網絡管理員知道哪些交換機貴,哪些交換機好,就會給它們分配高的優先級。
既然都是掌門,互相都連着網線,就互相發送 BPDU 來比功夫唄。贏的接着當掌門,輸的就只好作小弟了。當掌門的還會繼續發BPDU,而輸的人就沒有機會了。它們只有在收到掌門發的 BPDU 的時候,轉發一下,表示服從命令。

  1. 掌門遇到掌門
    輸掉的掌門會率領全部的小弟歸順。贏得成爲大掌門。
  2. 同門相遇
    同門相遇能夠是掌門與本身的小弟相遇,這說明存在「環」了。
    同門相遇還能夠是小弟相遇。這個時候就要比較誰和掌門的關係近,固然近的當大哥。
  3. 掌門與其餘幫派小弟相遇
    小弟拿本幫掌門和這個掌門比較,贏了,這個掌門拜入門來。輸了,會拜入新掌門,而且逐漸拉攏和本身鏈接的兄弟,一塊兒棄暗投明。
  4. 不一樣門小弟相遇

如何解決廣播問題和安全問題?

有兩種分的方法,一個是物理隔離。就是每一個部門有單獨的交換機,配置單獨的子網,這樣不一樣子網之間的溝通就須要路由器了。
另一種方式是虛擬隔離,就是用咱們常說的VLAN,或者叫虛擬局域網。使用 VLAN,一個交換機上會連屬於多個局域網的機器。
image.png
只須要在原來的二層的頭上加一個 TAG,裏面有一個 VLAN ID,一共 12 位。爲何是 12 位呢?由於 12 位能夠劃分 4096 個 VLAN。
若是咱們買的交換機是支持 VLAN 的,當這個交換機把二層的頭取下來的時候,就可以識別這個 VLAN ID。這樣只有相同 VLAN 的包,纔會互相轉發,不一樣 VLAN 的包,是看不到的。這樣廣播問題和安全問題就都可以解決了。
對於支持 VLAN 的交換機,有一種口叫做Trunk 口。它能夠轉發屬於任何 VLAN 的口。交換機之間能夠經過這種口相互鏈接。

相關文章
相關標籤/搜索