37 張圖詳解 MAC 地址、以太網、二層轉發、VLAN

目錄

01

MAC 地址

每個網卡或三層網口都有一個 MAC 地址, MAC 地址是燒錄到硬件上,因此也稱爲硬件地址。MAC 地址作爲數據鏈路設備的地址標識符,需要保證網絡中的每個 MAC 地址都是唯一的,才能正確識別到數據鏈路上的設備。

MAC 地址由 6 個字節組成。前 3 個字節表示廠商識別碼,每個網卡廠商都有特定唯一的識別數字。後 3 個字節由廠商給每個網卡進行分配。廠商可以保證生產出來的網卡不會有相同 MAC 地址的網卡。

MAC 地址

現在可以通過軟件修改 MAC 地址,虛擬機使用物理機網卡的 MAC 地址,並不能保證 MAC 地址是唯一的。但是隻要 MAC 地址相同的設備不在同一個數據鏈路上就沒問題。

爲了查看方便, 6 個字節的 MAC 地址使用十六進制來表示。每個字節的 8 位二進制數分別用 2 個十六進制數來表示,例如我的網卡 MAC 地址是 E0-06-E6-39-86-31

什麼是字節?什麼是比特?

比特,英文名 bit ,也叫_位_。二進制中最小單位,一個比特的值要麼是 0 要麼是 1 。

字節,英文名 Byte 。一個字節由八個比特構成。

MAC 地址怎麼使用?

最常用的以太網和無線局域網,都是使用 MAC 地址作爲地址標識符進行通信的。

02

以太網

有線局域網中普遍使用以太網,以太網標準簡單,傳輸速率高。常見的網絡拓撲結構如下圖。

以太網

什麼是網絡拓撲?

網絡的連接和構成的形態稱爲網絡拓撲。它不僅可以直觀的看到網絡物理連接方式,還可以表示網絡的邏輯結構。

以太網數據格式

當今最常用的以太網協議標準是 ETHERNET II 標準。ETHERNET II 標準定義的數據幀格式如下圖。

以太網幀格式

前導碼由 7 個字節組成,每個字節固定爲 10101010 。之後的 1 個字節稱爲幀起始定界符,這個字節固定爲 10101011 。這 8 個字節表示以太網幀的開始,也是對端網卡能夠確保與其同步的標誌。幀起始定界符的最後兩位比特被定義爲 11 ,之後就是以太網數據幀的本體。

前導碼

最小的數據幀是多少字節?

數據幀的各字段加起來一共是 64 字節,其中數據是 46 字節。再加上前導碼就是 72 字節。因此最小的數據幀是 72 字節。在傳輸過程中,每個數據幀還有 12 字節的數據幀間隙,所以最小的可傳輸數據幀長度是 84 字節,即 672 比特。

03

交換機二層轉發原理

交換機有多個網絡端口,它通過識別數據幀的目標 MAC 地址,根據 MAC 地址表決定從哪個端口發送數據。MAC 地址表不需要在交換機上手工設置,而是可以自動生成的。

交換機二層轉發

交換機是如何添加、更新、刪除 MAC 地址表條目的?

在初始狀態下,交換機的 MAC 地址表是空的,不包含任何條目。當交換機的某個端口接收到一個數據幀時,它就會將這個數據幀的源 MAC 地址、接收數據幀的端口號作爲一個條目保存在自己的 MAC 地址表中,同時在接收到這個數據幀時重置這個條目的老化計時器時間。這就是交換機自動添加 MAC 地址表條目的方式。

自動添加 MAC 地址表條目

在新增這一條 MAC 地址條目後,如果交換機再次從同一個端口收到相同 MAC 地址爲源 MAC 地址的數據幀時,交換機就會更新這個條目的老化計時器,確保活躍的的條目不會老化。但是如果在老化時間內都沒收到匹配這個條目的數據幀,交換機就會將這個老化的條目從自己的 MAC 地址表中刪除

老化條目被刪除

還可以手動在交換機的 MAC 地址表中添加靜態條目。靜態添加的 MAC 地址條目優先動態學習的條目進行轉發,而且靜態條目沒有老化時間,會一直保存在交換機的 MAC 地址表中。

如何使用 MAC 地址表條目進行轉發?

當交換機的某個端口收到一個單播數據幀時,它會查看這個數據幀的二層頭部信息,並進行兩個操作。一個操作是根據源 MAC 地址和端口信息添加或更新 MAC 地址表。另一個操作是查看數據幀的目的 MAC 地址,並根據數據幀的目的 MAC 地址查找自己的 MAC 地址表。在查找 MAC 地址表後,交換機會根據查找結果對數據幀進行處理,這裏有 3 中情況:

  1. 交換機沒有在 MAC 地址表中找到這個數據幀的目的 MAC 地址,因此交換機不知道自己的端口是否有連接這個 MAC 地址的設備。於是,交換機將這個數據幀從除了接收端口之外的所有端口泛洪出去。

泛洪

  1. 交換機的 MAC 地址表中有這個數據幀的目的 MAC 地址,且對應端口不是接收到這個數據幀的端口,交換機知道目的設備連接在哪個端口上,因此交換機會根據 MAC 地址表中的條目將數據幀從對應端口單播轉發出去,而其它與交換機相連的設備則不會收到這個數據幀。

轉發

  1. 交換機的 MAC 地址表中有這個數據幀的目的 MAC 地址,且對應端口就是接收到這個數據幀的端口。這種情況下,交換機會認爲數據幀的目的地址就在這個端口所連接的範圍內,因此目的設備應該已經收到數據幀。這個數據幀與其它端口的設備無關,不會將數據幀從其它端口轉發出去。於是,交換機會丟棄數據幀。

丟棄

單播:主機一對一的發送數據。單播地址是主機的 MAC 地址。
廣播:向局域網內所有設備發送數據。只有全 1 的 MAC 地址爲廣播 MAC 地址,即 FF-FF-FF-FF-FF-FF 。
泛洪:將某個端口收到的數據從除該端口之外的所有端口發送出去。泛洪操作廣播的是普通數據幀而不是廣播幀。

單播

廣播

04

VLAN

廣播域是廣播幀可以到達的區域。換句話說,由多個交換機和主機組成的網絡就是一個廣播域。

網絡規模越大,廣播域就越大,泛洪流量也越來越大,降低通信效率。在一個廣播域內的任意兩臺主機之間可以任意通信,通信數據有被竊取的風險。

泛洪攻擊

爲了解決廣播域擴大帶來的性能問題和安全性降低問題, VLAN 技術應運而生。VLAN 技術能夠在邏輯上把一個物理局域網分隔爲多個廣播域,每個廣播域稱爲一個虛擬局域網(即 VLAN )。每臺主機只能屬於一個 VLAN ,同屬一個 VLAN 的主機通過二層直接通信,屬於不同 VLAN 的主機只能通過 IP 路由功能才能實現通信。通過劃分多個 VLAN ,從而減小廣播域傳播的範圍,過濾多餘的包,提高網絡的傳輸效率,同時提高了網絡的安全性。

VLAN

VLAN 原理

VLAN 技術通過給數據幀插入 VLAN 標籤(又叫 VLAN TAG)的方式,讓交換機能夠分辨出各個數據幀所屬的 VLAN 。

VLAN 標籤是用來區分數據幀所屬 VLAN 的,是 4 個字節長度的字段,插入到以太網幀頭部上。VLAN 標籤會插入到源 MAC 地址後面, IEEE 802.1Q 標準有這個格式定義和字段構成說明。

VLAN TAG

劃分 VLAN 後,交換機如何處理廣播報文?

交換機上劃分了多個 VLAN 時,在交換機接收到廣播數據幀時,只會將這個數據幀在相同 VLAN 的端口進行廣播

廣播幀在相同 VLAN 內廣播

劃分 VLAN 後,交換機如何處理目的 MAC 地址不在 MAC 地址表中的單播數據幀?

交換機上劃分了多個 VLAN 時,當交換機接收到一個目的 MAC 地址不存在於自己 MAC 地址表中的單播數據幀時,只會將這個數據幀在相同 VLAN 的端口進行泛洪

單播幀在相同 VLAN 內泛洪

劃分 VLAN 後,不同 VLAN 的主機能否通信?

劃分多 VLAN 的環境中,即使交換機 MAC 地址表裏保存了某個數據幀的目的 MAC 地址條目,若這個目的 MAC 地址所對應的端口與數據幀的入端口在不同的 VLAN 中,交換機也不會通過 MAC 地址表中的端口發送數據幀。

不同 VLAN 的主機不能通信

小結:在不使用路由轉發的前提下,交換機不會從一個 VLAN 的端口中接收到的數據幀,轉發給其它 VLAN 的端口。

怎麼區分不同的 VLAN ?

通過 VLAN ID 進行區分,例如 VLAN 10 和 VLAN 20 就是不同的 VLAN 。

VLAN 技術有哪些好處?

劃分 VLAN

我們可以使用不同的方法,把交換機上的每個端口劃分到某個 VLAN 中,以此在邏輯上分隔廣播域。

交換機通常會使用基於端口劃分 VLAN 的方法。在交換機上手動配置,綁定交換機端口和 VLAN ID 的關係。

優點:配置簡單。想要把某個端口劃分到某個 VLAN 中,只需要把端口的 PVID (端口 VLAN ID )配置到相應的 VLAN ID 即可。

缺點:當終端設備移動位置是,可能需要爲終端設備連接的新端口重新劃分 VLAN 。

除了這種方法外,還可以使用基於 MAC 地址劃分 VLAN 、基於 IP 地址劃分 VLAN 、基於協議劃分 VLAN 、基於策略劃分 VLAN 等方法來劃分 VLAN。

PVID :接口默認 VLAN ID ,是交換機端口配置的參數,默認值是 1 。

跨交換機 VLAN 原理

終端設備不會生成帶 VLAN 標籤的數據幀,它們發出的數據幀叫做無標記幀( Untagged )。它們連接的交換機會給無標記幀打上 VLAN 標籤。交換機通過每個端口的 PVID ,判斷從這個接口收到的無標記幀屬於哪個 VLAN ,並在轉發時,插入相應的 VLAN 標籤,從而將無標記幀變爲標記幀( Tagged )。

當兩臺交換機通過端口連接時,收到的數據幀是標記幀還是無標記幀?交換機端口會如何處理呢?

跨交換機的 VLAN

交換機根據連接的設備類型,判斷各個接口收到的數據幀是否打標,來配置交換機接口的類型。

跨交換機發送數據

跨交換機 VLAN 實例

主機 A 以主機 F 的 MAC 地址作爲目的 MAC 地址封裝了一個數據幀,從網卡發送出去。

交換機 A 在 Access 接口收到數據幀。查詢 MAC 地址表,發現數據幀的目的地址是與交換機 B 相連的 Trunk 接口。於是交換機給數據幀打上 Access 接口的 PVID 配置,即給數據幀打上 VLAN 10 的標籤,並從 Trunk 接口轉發給交換機 B 。

交換機 B 在 trunk 接口收到數據幀。查看 MAC 地址表,發現是 VLAN 10 的數據幀,目的地址設備是連接在 VLAN 10 的一個 Access 接口上。於是去掉數據幀的 VLAN 標籤,並從這個 Access 接口轉發給主機 F 。

模擬實驗

Access 接口和 Trunk 接口的配置

實驗拓撲圖

Access 接口和 Trunk 接口配置的拓撲圖

實驗要求

實驗步驟

  1. SW 1 上的配置如下:

SW1 配置

  1. 檢查 SW 1 的接口配置,使用命令 display vlan 查看接口 VLAN 情況。

檢查 VLAN 配置

Hybrid 接口的配置

三種接口類型特點:

實驗拓撲圖

Hybrid 接口配置的拓撲圖

實驗要求

實驗步驟

  1. SW 1 的 E0/0/2 接口,只允許通過 VLAN 2 , PC 1 又需要訪問 VLAN 10 ,但是無法識別 VLAN 標籤信息,因此配置 Hybrid 的 PVID 爲 VLAN 2 ,同時放通 VLAN 2 和 VLAN 10 。E0/0/3 接口配置同理。E0/0/1 接口需要放通 VLAN 2 、 VLAN 3 和 VLAN 10 的流量,對端交換機又需要識別 VLAN 標籤,因此以帶 VLAN 標籤的形式放通 VLAN 2 、 VLAN 3 和 VLAN 10 的流量。SW 1 上的配置如下:

SW1 配置

  1. SW 2 的 E0/0/1 接口配置和 SW 1 的 E0/0/1 接口同理。SW 2 的 E0/0/10 接口,只允許通過 VLAN 10 , Server 1 又需要放通 VLAN 2 和 VLAN 3 的流量,因此配置 Hybrid 的 PVID 爲 VLAN 10 ,同時放通 VLAN 2 、 VLAN 3 和 VLAN 10 。SW2 上的配置如下:

SW2 配置

  1. 檢查 VLAN 10 信息,分別在 SW 1 和 SW 2 上使用命令 display vlan 10 查看配置是否正確。

查看 SW1 的 VLAN 10 信息

查看 SW2 的 VLAN 10 信息

05

結尾

Access 接口接收數據幀處理過程

Access 接口接收數據幀流程圖

Access 接口發送數據幀處理過程

Access 接口發送數據幀流程圖

Trunk 接口接收數據幀處理過程

Trunk 接口接收數據幀流程圖

Trunk 接口發送數據幀處理過程

Trunk 接口發送數據幀流程圖

參考資料:

圖解 TCP/IP - 竹下隆史

網絡基礎 - 田果

路由與交換技術 - 劉丹寧

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/mKQndZNt5nVMNO4jazg-lg