二層轉發原理

1 二層轉發基礎

這裡的二層指的是計算機網絡七層模型中的二層,從第一層到第7層分別是物理層、數據鏈路層、網絡層、運輸層、會話層、表示層和應用層。還有一種說法是4層(或者是5層)網絡模型,分別是數據鏈路層、網絡層、運輸層和應用層,如果按照5層的說法還要加上物理層。這裡的二層指的是數據鏈路層。

二層轉發原理

1.1 以太網基礎

以太網衝突檢測

CSMA/CD:載波偵聽與衝突檢測,主機在發送數據包時,先檢測線路是否被其他主機佔用,確保發送數據包時線路是空閒的;發現衝突就停止發送,延遲一個隨機時間之後再繼續發送。

MAC地址

MAC地址也就是物理地址,大小為48位,6個字節,前24位是廠商代碼,後24位為序號,比如H3C廠商代碼為00-0f-e2。

  • 單播地址:第一個字節最低位為0,如 00-0f-e2-00-00-06
  • 多播地址:第一個字節最低位為1,如 01-0f-e2-00-00-06
  • 廣播地址:48位全為1,如ff-ff-ff-ff-ff-ff

以太幀格式

二層轉發原理

前兩個字段分別是目的地址和源地址字段。第3個字段是2字節的類型字段,用來標識上一層是什麼協議(0x800:IP協議,0x0806:ARP協議等)。第4個字段是數據字段,長度在46-1500字節之間。最後一個字段是CRC檢驗字段,存放4字節的幀檢測序列FCS。校驗範圍是目的地址、源地址、類型、數據字段。

MAC幀長度最小為64字節,數據字段最小為46字節,如果不夠,則自動加0填充。

MAC幀格式中,其首部並沒有幀長度字段,那麼MAC層怎麼知道接收到的以太網幀中取出多少字節數據交付上一層協議呢?我們知道,以太網幀使用的曼切斯特編碼,這種編碼的一個重要特點就是:在曼切斯特編碼的每一個碼元(不管碼元是1還是0)的正中間有一次電壓轉換(從高到低或從低到高)。當發送方把一個以太網幀發送完畢後,就不再發送其他碼元了,一次,發送髮網絡適配器接口上電壓也就不再變化,這樣接收方就很容易找到以太網的結束位置。

802.3幀格式

二層轉發原理

以太幀和802.3幀如何區別

802.3定義的有效長度值與以太網的有效類型無一相同,這樣就可以區分了。

MAC最小長度為什麼是64字節

以太網採用CSMA/DA衝突檢測算法,一個主機發送一個數據包後最多經過一個徵用時間就會知道該數據包是否收到了碰撞,以太網以51.2us作為徵用時間,對於10M以太網,在徵用時間時間內可以發送512 bit數據,也就是64字節。這64字節出去以太幀首部以及檢驗和字段的長度共16字節,也就剩下46字節,也就是以太幀數據域的最小長度了。

衝突域和廣播域

  • 衝突網絡(衝突域):連接在同一個到導線上的所有工作站點集合,一個節點發出的報文其餘節點都能收到,從而產生衝突。
  • 廣播網絡(廣播域):限制以太網廣播報文的範圍,一個站點發送一個廣播報文其餘站點都可以收到。

一般來說,廣播網絡定義了第三層網絡,如IP子網等,VLAN簡單來說就是一個廣播域。

HUB設備

HUB設備也就是咱們常說的集線器,HUB對所有連接的LAN製作信號的中繼,也就是當信號衰減時,再重新修正信號重新發送。連接在集線器上的所有設備構成了一個衝突域和廣播域,這樣在主機數目比較多時就會產生衝突氾濫和廣播嚴重問題。

二層轉發原理

2 二層轉發原理

二層轉發流程

  1. 提取數據報的源MAC地址,查詢MAC轉發表(也就是L2FDB),如果找到就直接發送到對應端口。
  2. 對於表中不包含的地址,通過廣播發送,也就是發送到所有端口。
  3. 使用地址自動學習(根據源MAC地址學習)和老化機制(定時機制)來維護MAC轉發表的信息,二層轉發一般不會更改數據包內容。
二層轉發原理

引入VLAN

雖然交換機解決了衝突域的問題,但是還是存在廣播域問題,這裡就應用到了VLAN,也就是在二層交換機上引入VLAN機制。

二層轉發原理

VLAN機制可以使處在相同VLAN下的主機任意通信(二層交換),不同VLAN主機通信完全隔離,如需通信需通過三層交換,阻斷廣播包,減小廣播域,提供了網絡安全性。VLAN簡單來說就是一個廣播域,可以跨越多個物理設備構成一個VLAN,這樣網絡構建和維護更加方便。

VLAN的劃分方法可以根據交換機端口來劃分,根據MAC地址來劃分,根據網絡層(IP地址、IP子網)來劃分,根據IP組播劃分等。

VLAN協議格式

二層轉發原理

  • TPID:協議標誌,通常是0x8100
  • Priority:優先級
  • CFI:規範指示為,總設為0
  • VLAN ID:VLAN號

VLAN端口

VLAN基於端口劃分可以分為種類端口類型:access、trunk、hybird。

  • Access類型的端口只能屬於1個VLAN,一般用於連接計算機的端口
  • Trunk類型的端口可以允許多個VLAN通過,可以接收和發送多個VLAN的報文,一般用於交換機之間連接的端口
  • Hybrid類型的端口可以允許多個VLAN通過,可以接收和發送多個VLAN的報文,可以用於交換機之間連接,也可以用於連接用戶的計算機

Hybrid端口和Trunk端口在接收數據時,處理方法是一樣的,唯一不同之處在於發送數據時:Hybrid端口可以允許多個VLAN的報文發送時不打標籤,而Trunk端口只允許缺省VLAN的報文發送時不打標籤。

VLAN下交換機接口出入數據處理過程

1)Acess端口收報文:收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有則直接丟棄(缺省)

2)Acess端口發報文:將報文的VLAN信息剝離,直接發送出去

3)trunk端口收報文:收到一個報文,判斷是否有VLAN信息:如果沒有則打上端口的PVID,並進行交換轉發,如果有判斷該trunk端口是否允許該VLAN的數據進入:如果可以則轉發,否則丟棄

4)trunk端口發報文:比較端口的PVID和將要發送報文的VLAN信息,如果兩者相等則剝離VLAN信息,再發送,如果不相等則直接發送

5)hybrid端口收報文:收到一個報文,判斷是否有VLAN信息,如果沒有則打上端口的PVID,並進行交換轉發,如果有則判斷該hybrid端口是否允許該VLAN的數據進入;如果可以則轉發,否則丟棄(此時端口上的untag配置是不用考慮的,untag配置只對發送報文時起作用)

6)hybrid端口發報文:1.判斷該VLAN在本端口的屬性(disp interface 即可看到該端口對哪些VLAN是untag, 哪些VLAN是tag);2.如果是untag則剝離VLAN信息,再發送,如果是tag則直接發送

3 VLAN下的二層轉發流程

支持VLAN的交換機,MAC地址學習方式分為2中:獨立式(IVL)和共享式(SVL),對應的L2FDB表項內容有VLAN ID、MAC地址和所在端口。

  • 根據目的地址查MAC轉發表(L2FDB)處理轉發
  • -獨立式:根據VLAN ID查找轉發表,找出相同VLAN ID的轉發表項範圍,在這些表項中找出MAC地址相匹配的出端口。
  • -共享式:根據目的地址查轉發表,找到對應的出接口,判斷出接口的VLAN ID和報文中的VLAN ID是否一致,若匹配則通過該端口轉發報文,否則丟棄。
  • 對於轉發表中不包含的地址,通過廣播方式轉發
  • -獨立式:查找不到目的MAC,則在該VLAN下的所有端口進行廣播
  • -分享式:查找不到目的MAC,然後判斷報文中的VLAN ID和端口的VLAN ID是否匹配,若匹配則在該VLAN中廣播,否則丟棄。
  • MAC轉發表的源地址學習
  • -獨立式:以源MAC地址和VLAN創建表項,故存在MAC地址相同,VLAN ID不同的表項。
  • -共享式:以源MAC地址創建表項,若MAC轉發表中存在MAC地址相同的表項,則覆蓋原有表項。


分享到:


相關文章: