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
標準定義的數據幀格式如下圖。
以太網幀格式
- 前導碼( Preamble )
前導碼由 7 個字節組成,每個字節固定爲 10101010
。之後的 1 個字節稱爲幀起始定界符,這個字節固定爲 10101011
。這 8 個字節表示以太網幀的開始,也是對端網卡能夠確保與其同步的標誌。幀起始定界符的最後兩位比特被定義爲 11 ,之後就是以太網數據幀的本體。
前導碼
-
目的地址( Destination Address )
目的地址由 6 個字節組成,用來標識數據幀的目的設備,類似於快遞的收件人地址。
-
源地址( Source Address )
源地址由 6 個字節組成,用來標識數據幀的始發設備,類似於快遞的發件人地址。
-
類型( Type )
類型字段由 2 個字節組成。類型字段是表明上一層(即網絡層)的協議類型,可以讓接收方使用相同的協議進行數據幀的解封裝。
-
數據( Data )
幀頭後就是數據。一個數據幀所能容納的最大數據範圍是 46 ~ 1500 個字節。如果數據部分不足 46 個字節,則填充這個數據幀,讓它的長度可以滿足最小長度的要求。
-
FCS( Frame Check Sequence )
FCS 由 4 個字節組成,位於數據幀的尾部,用來檢查幀是否有所損壞。通過檢查 FCS 字段的值將受到噪聲干擾的錯誤幀丟棄。
最小的數據幀是多少字節?
數據幀的各字段加起來一共是 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 中情況:
- 交換機沒有在 MAC 地址表中找到這個數據幀的目的 MAC 地址,因此交換機不知道自己的端口是否有連接這個 MAC 地址的設備。於是,交換機將這個數據幀從除了接收端口之外的所有端口泛洪出去。
泛洪
- 交換機的 MAC 地址表中有這個數據幀的目的 MAC 地址,且對應端口不是接收到這個數據幀的端口,交換機知道目的設備連接在哪個端口上,因此交換機會根據 MAC 地址表中的條目將數據幀從對應端口單播轉發出去,而其它與交換機相連的設備則不會收到這個數據幀。
轉發
- 交換機的 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
-
TPID (標籤協議標識符):
長度 2 個字節,值爲0x8100
,用來表示這個數據幀攜帶了 802.1Q 標籤。不支持 802.1Q 標準的設備收到這類數據幀,會把它丟棄。 -
TCI (標籤控制信息):
長度 2 個字節,又分爲三個子字段,用來表示數據幀的控制信息: -
優先級( Priority ):長度爲 3 比特,取值範圍
0 ~ 7
,用來表示數據幀的優先級。取值越大,優先級越高。當交換機發送擁塞是,優先轉發優先級高的數據幀。 -
CFI (規範格式指示器):長度爲 1 比特,取值非 0 即 1 。
-
VLAN ID ( VLAN 標識符):長度爲 12 比特,用來表示 VLAN 標籤的數值。取值範圍是
1 ~ 4094
。
劃分 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 爲數據幀打上 VLAN 標籤;同時接口發送數據幀時,也不攜帶 VLAN 標籤。應該把這類接口配置爲 Access (接入)接口, Access 接口連接的鏈路稱爲 Access 鏈路。
-
如果交換機接口收到多個 VLAN 的流量,也就是收到了標記幀;同時爲了讓對端設備能夠區分不同 VLAN 的流量,通過接口發出的流量會打上 VLAN 標籤。應該把這類接口配置爲 Trunk (幹道)接口,相應的鏈路稱爲 Trunk 鏈路。
跨交換機發送數據
跨交換機 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 接口配置的拓撲圖
實驗要求
-
將 SW 1 (即交換機 1)和 SW 2 (即交換機 2)相連的接口配置爲 Trunk 接口,允許傳輸 VLAN 5 的數據;
-
將 PC (即主機) 與 SW 相連接口配置爲 Access 接口,接口的 PVID 配置爲 VLAN 5 。
實驗步驟
- SW 1 上的配置如下:
SW1 配置
- 檢查 SW 1 的接口配置,使用命令 display vlan 查看接口 VLAN 情況。
檢查 VLAN 配置
Hybrid 接口的配置
三種接口類型特點:
-
Access 接口:這種接口只能屬於一個 VLAN,只能接收和發送一個 VLAN 的數據。通常用於連接終端設備,比如主機或服務器等。
-
Trunk 接口:這種接口能夠接收和發送多個 VLAN 的數據,通常用於連接交換機。
-
Hybrid 接口:這種接口能夠接收和發送多個 VLAN 的數據,可用於交換機的鏈路,也可用於終端設備。與 Trunk 接口的區別是,發送數據時 Trunk 接口只會摘掉 PVID 標籤,而 Hybrid 接口能夠不攜帶 VLAN 標籤發送多個 VLAN 數據。
實驗拓撲圖
Hybrid 接口配置的拓撲圖
實驗要求
-
新建 3 個 VLAN ,PC 1 屬於 VLAN 2 ,PC 2 屬於 VLAN 3 ,Server 1 (即服務器 1)屬於 VLAN 10 ;
-
通過 Hybrid 接口實現 VLAN 2 和 VLAN 3 不能互通,但 VLAN 2 和 VLAN 3 都能與 VLAN 10 進行通信。
實驗步驟
- 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 配置
- 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 配置
- 檢查 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