本篇文章中,會從局域網及其組件開始,着重介紹 TCP/IP 中數據鏈路層,以及數據的傳輸介質,最后介紹交換機的發展過程及原理。
在閱讀后應該了解如下的內容:
- 什么是局域網及其組件
- Hub 和交換機的區別
- 交換機的轉發規則
- Switching 機制
- 現代常用網絡結構模型
- 數據幀的格式
- Ethernet2 和 IEEE 制訂的標准的區別以及發展史
LAN
在一定的限制區域內,將多個終端設備連接到一起的形成的網絡叫局域網。常見就是通過交換機連接起來的多台終端。
局域網中常用以下的組件構成:
終端設備:PC,IP 電話,打印機,移動電話,服務器
連接設備:網卡(NIC),網絡介質(網線,無線電波)
網絡設備:以太網交換機,路由器,AP(擴散無線信號,通過 WCL 集中控制)
協議:Ethernet,IP,ARP,DHCP
上圖作為常見局域網的架構圖,可見,交換機對其來說是最重要的部分。
集線器 (Hub)
交換機產生的背景:
對於 2 台 PC 來說,可以將其直接連接起來,實現兩台 PC 之間的通信。但對於 3 台甚至更多的設備,僅僅連線就不行了。在這時,先是出現一個叫 HUB 的設備,用於解決連接多台終端的問題。由於 HUB 本身內部的設計(一根總線,總線分出多根線連接其他設備),就決定了有如下的特性:
-
工作在物理層,對收到的信號進行放大,以擴大網絡的傳輸距離。
-
集線器發送數據沒有針對性,而是采用廣播的形式發送,也就是說當它要向某個節點發送數據時,不是直接把數據發送到目的端口,而是把數據包發送到會集線器相連的所有節點
-
當以 HUB 為中心設備時,網絡中某條線路發生了故障並不影響其他的端口工作
但 HUB 有個非常嚴重的問題,由於本身的設計,導致在同一時間只能有一根線傳遞數據(半雙工工作模式)。
如果 HUB 連接的設備同時發送數據,就會產生沖突。,CSMA/CD,載波監聽多路檢測技術的出現解決了該問題。
對應實現思路就是:
-
先聽后發
-
邊聽邊發
-
沖突停發
-
隨機分配
交換機
什么是交換機?
由於 HUB 在連接多台終端時存在的諸多問題,交換機進一步被發明出來。
和 HUB 不同,交換機在設計初,用交換矩陣代替了總線的架構。
和 HUB 相比,存在着諸多的優點:
-
基於硬件轉發,轉發的速度是線性(忽略交換機本身處理數據的時間),有選擇的轉發數據幀
-
默認全雙工
-
高速,並具有大量的幀緩存(超過交換機的帶寬時,可緩存到本地)
-
提供更多的連接端口
-
可拓展,可分為核心交換機和邊緣交換機,連接起來的多台交換機同屬於同一局域網
交換機的作用
交換機收到數據時,檢查數據包中目的 MAC 地址,然后將其從目的端口轉發。
轉發過程一般分為三種:
- 直通式轉發:轉發時僅檢查前 12 字節(源,目的 MAC 地址),避免不了轉發無效殘幀(小於 64 字節)
- 存儲式轉發,檢查數據包的所有字節,可靠性高,但有效率的損失
- 無碎片式轉發,檢查前 64 字節,在可靠性和效率間取舍。
交換機的原理
交換機內部存在一張 MAC 地址表,其中記錄了 設備 MAC,端口號,老化時間,VLAN 號
信息。
在不提及 VLAN 的情況下,收到數據時會遵循如下的處理流程:
-
首先查詢 MAC 表,是否存在端口號和源 MAC 地址信息。
-
如果存在,不做處理
-
不存在,則將源 MAC 和入口端口記錄。
-
-
再次查詢 MAC 表,看表中是否存在目的 MAC 地址。
-
如果存在,則單播轉發。
-
不存在,進行泛洪操作(廣播)。終端收到后,檢查二層包頭,如果目的 MAC 是自己的話,進行回包,否則丟棄。
-
規范:
- 交換機只記錄源 MAC 地址(轉發過程通過有來回,雙方 MAC 都可以記住)
- 廣播幀和組播幀向所有的端口進行轉發
- 泛洪:收到未知單播幀(MAC 地址未知)或者廣播幀
- 轉發:收到已知的單播幀
- 丟棄:FCS 損壞,或者目的 MAC 不是自己
MAC 地址表的老化時間
MAC 地址表項的老化時間為 300 秒。從地址加入后開始計時,如果在老化時間內各端口未收到源地址為該 MAC 地址的幀,那么該地址將從動態轉發地址表(由源 MAC 地址、目的 MAC 地址和它們相對應的交換機的端口號)中被刪除。靜態 MAC 地址表不受地址老化時間影響。
交換機在真正轉發時,實際涉及兩張表 CAM 和 TCAM 表。
CAM 表(實際上是 MAC 表)用於精確匹配,對應轉發結果只有兩種情況。如拿 48bit MAC 地址來說,只會出現 48 位完全匹配和不匹配的情況。
而 TCAM (三態內容尋址)表中用於模糊匹配,如 ACL 抓取,匹配 QoS 策略等。
對應匹配結果有三種情況:
- 精確匹配
- 不匹配
- 忽略
思科 Switching 機制
對於交換機和路由器這類轉發設備,在轉發數據的過程中,控制平面和數據平面是經常被提到的一個概念。
- 控制平面:比如通過路由協議,學習或者配置后生成的路由表,就屬於控制平面。
- 數據平面(轉發平面):為了更快轉發數據,通過控制平面生成一張轉發平面的數據表,當有數據需要轉發時,直接通過數據平面進行轉發,不在查詢控制層面。
通常來說,控制平面的轉發都需要 CPU 進行計算。而數據平面的轉發,是直接的硬件轉發,性能更高。
在思科設備中可通過 show ip cef
來查看數據層面的轉發表。
對於思科的交換機來說,一般存在三種轉發機制:
- 進程轉發
- 快速轉發
- 思科專有轉發
進程轉發
可以將進程轉發理解成每個數據包都需要經過 CPU 的處理,才能轉發。性能較差。
快速轉發
對於快速轉發來說,第一個數據包會交由 CPU 處理,然后會將其緩存起來,后續去往相同地址數據包都會直接走緩存(硬件轉發),不再交由 CPU 處理。簡單來說,就是一次路由,多次轉發。
路由指的是控制層面,轉發指的是數據層面。
思科專有轉發(CEF)
Cisco Express Forwarding (CEF) 是 Cisco 專有的轉發機制,在思科設備上默認開啟。為了實現更快速度的線性轉發(硬件),設計了如下的數據結構:
-
Forwarding Information Base (FIB): FIB 就是通過路由表(需要 CPU 計算),而再次生成的一個數據結構。當網絡中的路由表發生變化時,FIB 同樣也會發生變化。在轉發數據時,根據 FIB 直接轉發,而不需要看路由表,從而提高效率。
-
Adjacency Table:鄰接表,就是在二層鏈路層維護的一張表,其實就是 ARP 表。用於記錄在鏈路層中,僅需一跳就可以達到的設備。CEF 使用它作為 2 層地址解析,維護了整個 2 層的下一跳地址。
數據鏈路層的傳輸媒介
由於Ethernet 的實際轉發速度取決於實際的傳輸介質,一般為:
- 雙絞線
- 光纖
- 同軸電纜(早期,淘汰)
雙絞線(應用較多)
雙絞的目的,為了屏蔽內部的電磁干擾。一般來說,雙絞線的速度可以從 10 Mbps 到 40 Gbps.,傳輸的最大距離是 100 m.
雙絞線的線序:
T568B 線序為: 橙白,橙,綠白,藍,藍白,綠,粽白,粽
T568A 線序:綠白,綠,橙白,藍,藍白,橙,棕白、棕
其實 1,2 發生數據,3,6 接受數據
不同線序的目的:
同種設備連接需要用交叉線(568a,568b),不同種設備需要用直通線(568b)。原因在於同種設備使用直通線會沖突,因為 1,2 都是發送,3,6是接受。
交叉線:交換機和交換機,路由器和路由器,路由器和PC,PC 和 PC
直通線:交換機和路由器,交換機和 PC,交換機和服務器。
光纖
多模光纖(ST),波長 850nm,1310nm,光由二級發光產生,傳輸距離短,造價低。
單模光纖(SC,LC,FC),波長 1310nm,1550 nm,由激光產生,距離長,造價高。
數據鏈路層-數據幀的結構
數據鏈路層的主要職責是負責傳輸數據,其中常用的協議有:
- 局域網中的 Ethernet 2 協議
- 廣域網中的 PPP,HDLC 協議
這里着重介紹下 Ethernet 2 協議,PPP 和 HDLC 請參看這篇:
Ethernet 2
1980 年,由 Digital, Intel, Xerox 主導並用其公司首字符聯合開發了 DIX 1.0 標准,該標准也稱為 Ethernet I.
1982 年,Ethernet I 被 DIX2.0 取代,該標准沿用至今,就是為人熟知的 Ethernet II 標准。
但由於這兩個版本的 Ethernet 協議為私有協議,1983 年由 IEEE 主導,為了將網絡設備之間的協議標准化,而不依賴於具體廠商,將其拆分為 MAC 子層和 LLC 子層,其中 MAC 子層,用於處理物理層的訪問。LLC 子層,用於上層協議的復用。推出了 802.3 Ethernet 標准。
其中 LLC 層標准為 - 802.2,MAC 子層根據具體的傳輸介質而不同:
數據鏈路層 LLC 子層 - 與網絡層打交道 | 802.2 | 802.2 | 802.2 | 802.2 |
---|---|---|---|---|
數據鏈路層 MAC 子層 - 與物理層打交道 | 802.3 | 802.1 | 802.5 | FDDI |
物理層 | 雙絞線 | 無線 | 令牌 | 光纖 |
Ethernet II 的數據幀格式:
Preamble:
- 8 字節,用於告知 NIC 網卡有數據傳來。
MAC 地址字段:
-
大小為 6 字節,48 bits. 前 24 位由 OUI 組成,后 24 位由 vendor 定義組成.
-
其中第 8 位為 1 時,表示組播,為 0 時表示單播
-
目的地址為
ffff.ffff.ffff
全 F,表示為廣播地址 -
目的地址唯一時,為單播地址。
Ether Type:
- 2 字節,表明該以太網幀中封裝了那種網絡層的協議。
- '0080' - IPV4
- '0806' - ARP
data Unit:
- 數據最小至最大范圍為:46 ~ 1500 字節,如果上層協議長度小於 46 字節,必須補位到 46 字節。
FCS:
- 4 字節,用於差錯校驗。
IEEE 802.3 Ethernet
前 8 字節和 Ethernet II 類似,1 位前導符加上 7 位幀分隔符。
源 MAC 和目的 MAC 也和之前一樣,每個 6 字節。
接着 5 字節表示 LLC Header:
Length: 兩字節,表示該幀的長度。理論上是 0 - 65534 字節,但由於 Ethernet 幀限制,MTU 最大為 1500 字節。
d:1 字節,表示 DSAP。
s:1 字節,表示 SSAP。
c: 2 字節,表示控制字段
通過 DSAP 和 SSAP 標識內嵌了哪種網絡協議,常見值為:
- hex '04' - IBM SNA
- hex '06' - IP 協議
剩下的位置為數據單元和 4 字節的校驗和。
但由於 SAP 的設計方式和一些協議並不兼容,SNAP 又被設計出來,用於改善該問題,使其不兼容的協議可以用 802.3 標准通信。
在使用 SNAP 時,同時將 DSAP 和 SSAP 設置為 AA
,Control 設置為 03
.
之后的 5 字節作為 SNAP 的頭部:
O:3 字節,表示 Organization Unique Identifier
T:2 字節,表示用到的私有協議。
剩下的同為數據單元和校驗和。
雖然說 802.2 + 802.3 整合可以起到 Ethernet 2 的作用,當由於前者的位數更長,所以支持 Ethernet 2 慢慢成為主流。
但有一個問題就出現了,就是如何區分 Ethernet2 和 802.3 協議呢?
在目的 MAC 之后,Ethernet2 用 2 字節表示所用的協議,802.3 用兩字節表示幀的長度。
由於在以太網中 MTU 最大值為 1500 字節 - hex '05DC',所以如果作為長度時(802.3),該值一定會小於 1500 字節。
進而在大於 1500 字節時,表示的是 Ethernet2 協議,否則為 IEEE 802.3 協議。
具體在傳輸時,通過所在 字段,length 和 ethertype 字段,如果大於 1500 表示 Ethernet 2 否則為 IEEE 802.3.
至於在以太網中,為什么 MTU 的最大值設置成 1500 Byte 字節,可以閱讀阿里這篇文章.
概括來說,MTU=1500 是在考慮傳輸效率和常見帶寬的一個折中方案。
一般來說,協議的傳輸用 802.3,用戶流量用的是 Ethernet2.
企業網絡架構
從扁平網絡到分層網絡:
在最初的設計時,整體采用扁平式的網絡結構,所有的終端設備直接連接交換機,交換機直接連到路由器,從而接入互聯網。很明顯,這樣設計的網絡沒有冗余,存在單點故障的問題,當交換機或者路由器掛掉時,整個網絡都無法正常通信。
隨着網絡規模的增大以及扁平式網絡無法很好的提供服務,逐漸演化成分層式架構,對應也是軟件層面上的解耦,各司其職。
分層式架構常分為三層:
- 接入層 :一般使用二層交換機,工作在數據鏈路層。
- 分布層 :一般使用三層交換機,工作在網絡層。
- 核心層:一般使用三層交換機,工作在網絡層。
接入層:負責設備接入,並且常用來檢查設備是否合規。
分布層( 匯聚層 ):部署策略,提供冗余,容易排錯。
核心層:負責高速轉發數據.
下面兩幅圖是在是否添加了核心層的對比:
沒有核心層:
添加核心層:
可以發現,如果沒有核心層存在的話,核心設備直接相互連接,在拓展性,易用性上,維護成本都存在着極大的挑戰。
常見企業架構模型
發展到現在,下圖中是較為常見的企業架構模型:
- 企業園區:企業的核心網絡
- 企業邊緣:
- Internet 端,用於在連接互聯網時,進行一些安全產品的防護
- WAN 端,企業分支如何連接僅企業的核心網絡,同樣需要一些安全產品的防護
- 運營商:這里提供互聯網訪問,和企業內網(WAN,VPN)用於遠程站點的訪問。
- 遠程站點:公司的分支機構,通過如 VPN 等,連接到企業核心網絡。