03.《交換的底層邏輯:從基礎到應用》

交換基礎

文章目錄

  • 交換基礎
    • MAC 地址:設備的 “全球唯一身份證”
      • MAC 地址的基本屬性
      • MAC 地址的三類類型(按通信范圍劃分)
    • 以太幀
      • 以太幀的兩個標準格式
        • 1. Ethernet_II 格式(常用)
        • 2. IEEE 802.3 格式(少用)
      • 以太幀的長度要求
      • 數據幀的分類
    • 交換機的核心工作機制
      • 交換機的三個核心動作
      • MAC 地址表的生成與使用
        • 學習源 MAC 地址(建表)
        • 查詢 MAC 地址表(查表)
        • 維護 MAC 地址表(老化)
      • 實驗:通過 PC 間 ping 測試理解交換機轉發
        • 實驗環境
        • 實驗流程
        • 操作步驟
          • 配置 PC1 的 IP 地址(以ENSP模擬器 PC 為例)
          • PC1 ping PC2(觸發數據幀傳輸)
          • 查看交換機的 MAC 地址表
          • (可選)手動修改 MAC 地址表老化時間
    • 總結

在局域網中,交換機是連接終端設備(如電腦、打印機)的核心設備,它能高效轉發數據,讓不同設備之間實現通信。要理解交換機的工作原理,首先需要掌握兩個關鍵概念: MAC 地址(設備的 “身份證”)和 以太幀(數據的 “包裝盒”),再結合交換機的轉發邏輯,就能清晰理解局域網內數據的傳遞過程。

MAC 地址:設備的 “全球唯一身份證”

MAC 地址又稱 “物理地址” 或 “硬件地址”,是網卡出廠時固化的唯一標識 —— 就像每個人的身份證號,全球不會有兩塊網卡的 MAC 地址完全相同。

MAC 地址的基本屬性

  1. 格式與長度
    • 長度:48 比特(bit),換算為 6 字節(Byte),用 16 進制表示(0-9、A-F)。
    • 書寫格式:通常用 “-” 或 “:” 分隔,比如54-89-98-A0-56-5654:89:98:A0:56:56
  2. 地址結構
    • 前 24 比特(前 3 字節):OUI(廠商識別碼),由國際組織分配給網卡廠商,比如54-89-98代表某一廠商。
    • 后 24 比特(后 3 字節):設備識別碼,由廠商自行分配給每一塊網卡,確保同廠商內不重復。

MAC 地址的三類類型(按通信范圍劃分)

MAC 地址分為單播、組播、廣播三類,對應不同的 “通信場景”,核心區別在第 8 個比特(從左數第 2 個字符的第 1 位)。

類型核心特征通信場景(通俗理解)舉例
單播 MAC 地址第 8 比特為 0(比如地址第 2 個字符是 0、2、4 等偶數,或 A、C、E 等)一對一通信(“點對點聊天”),比如 PC1 給 PC2 發文件00-1E-10-DD-DD-02(第 2 個字符是 0,第 8 比特為 0)
組播 MAC 地址第 8 比特為 1(比如地址第 2 個字符是 1、3、5 等奇數,或 B、D、F 等)一對多通信(“拉群聊”),比如給局域網內所有視頻設備發直播流01-80-C2-00-00-01(第 2 個字符是 1,第 8 比特為 1)
廣播 MAC 地址所有 48 比特全為 1,固定格式為FF-FF-FF-FF-FF-FF一對所有通信(“在大廳喊口號”),比如 PC1 查詢局域網內的打印機FF-FF-FF-FF-FF-FF(所有字符都是 F,對應比特全為 1)

參考華為文檔圖例:

image-20250828203714735

以太幀

在數據鏈路層,數據不是 “裸奔” 傳輸的,而是會被包裝成 “以太幀”(簡稱 “數據幀”)—— 就像寄快遞時要把物品裝進帶地址的盒子,以太幀也包含 “收件地址”“寄件地址” 和 “包裹內容”。

以太幀的兩個標準格式

目前主流的以太幀格式有兩種:Ethernet_II(常用,比如我們日常上網、傳文件用的就是這種)和 IEEE 802.3(多用于工業控制等特殊場景),兩者的區別主要在 “中間字段”。參考華為文檔圖例:

image-20250828203813133

1. Ethernet_II 格式(常用)
字段長度作用(通俗理解)
D.MAC(目的 MAC 地址)6 字節收件地址:數據要發給哪個設備的網卡
S.MAC(源 MAC 地址)6 字節寄件地址:數據來自哪個設備的網卡
Type(類型字段)2 字節說明 “盒子里裝的是什么類型的數據”,比如0800代表 IP 數據(日常上網數據)
用戶數據46-1500 字節真正要傳遞的內容(比如微信消息、文件數據),最少 46 字節(不夠會補零),最多 1500 字節
FCS(幀校驗序列)4 字節校驗數據是否損壞:接收方會計算校驗值,若與 FCS 不一致,說明數據傳丟了,會丟棄該幀
2. IEEE 802.3 格式(少用)

比 Ethernet_II 多了 “LLC” 和 “SNAP” 字段,用于兼容早期設備,核心字段作用類似:

字段長度作用
D.MAC6 字節目的 MAC 地址
S.MAC6 字節源 MAC 地址
Length(長度字段)2 字節說明 “用戶數據的長度”(區別于 Ethernet_II 的 Type 字段)
LLC(邏輯鏈路控制)3 字節兼容早期局域網協議
SNAP(子網訪問協議)5 字節包含 Org Code(3 字節,廠商碼)和 Type(2 字節,數據類型),相當于把 Ethernet_II 的 Type 字段拆到這里
用戶數據38-1492 字節核心數據(因多了 LLC 和 SNAP,比 Ethernet_II 少 8 字節)
FCS4 字節幀校驗

以太幀的長度要求

無論哪種格式,整個以太幀的總長度必須在 64-1518 字節之間

  • 小于 64 字節:“短幀”,可能是干擾或錯誤數據,交換機會直接丟棄。
  • 大于 1518 字節:“長幀”,可能是異常數據包,交換機會同樣丟棄。

數據幀的分類

和 MAC 地址對應,數據幀也分為三類,直接決定交換機的轉發方式:

  1. 單播數據幀:目的 MAC 是單播地址(比如 PC1→PC2 的幀)。
  2. 組播數據幀:目的 MAC 是組播地址(比如給多臺設備發直播的幀)。
  3. 廣播數據幀:目的 MAC 是FF-FF-FF-FF-FF-FF(比如查詢局域網設備的幀)。

交換機的核心工作機制

交換機的核心功能是 “高效轉發數據幀”,它靠一張 “MAC 地址表” 實現 —— 這張表記錄了 “MAC 地址→交換機接口→VLAN” 的對應關系,就像 “小區快遞柜對照表”(哪個快遞對應哪個柜子)。

交換機的三個核心動作

交換機收到數據幀后,會根據幀的類型和 MAC 地址表,執行三種動作之一:

動作適用場景通俗理解
單播轉發已知單播數據幀(MAC 地址表中有目的 MAC 的對應接口)“精準投遞”:根據地址表,把幀從對應接口發給目標設備,不打擾其他設備
泛洪1. 未知單播數據幀(地址表中沒有目的 MAC) 2. 組播數據幀 3. 廣播數據幀“群發找人”:除了接收幀的接口,把幀從所有其他接口發出去,直到目標設備響應
丟棄1. 幀長度小于 64 字節或大于 1518 字節 2. FCS 校驗失敗(數據損壞)“拒收垃圾”:直接扔掉無效或錯誤的幀,避免占用網絡資源

MAC 地址表的生成與使用

默認情況下,交換機的 MAC 地址表是空的,它會通過 “學習→查表→轉發→老化” 四個步驟,動態維護地址表并實現轉發:

學習源 MAC 地址(建表)

當交換機收到一個數據幀時,首先會 “記住” 幀的源 MAC 地址和 “接收該幀的接口”,并把這對關系寫入 MAC 地址表。

  • 例:PC1(MAC:54-89-98-A0-56-56)通過交換機的 GE0/0/1 接口發幀,交換機就會在地址表中添加一條記錄:5489-98a0-5656 → GE0/0/1
查詢 MAC 地址表(查表)

接著,交換機會查看幀的目的 MAC 地址,并在地址表中查找是否有對應的接口記錄:

  • 若有記錄(已知單播幀):執行 “單播轉發”,從對應接口發出去。
  • 若沒有記錄(未知單播幀):執行 “泛洪”,從所有其他接口發出去。
維護 MAC 地址表(老化)

為了避免地址表過大(浪費設備資源),交換機對動態學習的 MAC 地址表項設置了 “老化時間”—— 默認 300 秒(5 分鐘)。

  • 如果 5 分鐘內,某條表項對應的設備沒有再發數據,交換機會自動刪除這條記錄。
  • 若設備繼續發數據,老化時間會 “重置”(重新從 5 分鐘開始倒計時)。

實驗:通過 PC 間 ping 測試理解交換機轉發

通過實際操作,我們可以觀察交換機如何學習 MAC 地址、生成地址表,以及如何轉發數據幀。

實驗環境

實驗拓撲

image-20250828203937396

設備接口IP 地址MAC 地址
PC1Ethernet 0/0/110.1.1.1/2454-89-98-A0-56-56
PC2Ethernet 0/0/110.1.1.2/2454-89-98-C9-64-22
交換機(SW1)GE0/0/1(連 PC1)、GE0/0/2(連 PC2)無(二層交換機無需配置 IP)
實驗流程
  1. 配置 PC1 和 PC2 的 IP 地址(靜態配置,確保同網段)。
  2. 用 PC1 ping PC2,觸發數據幀傳輸,讓交換機學習 MAC 地址。
  3. 查看交換機的 MAC 地址表,驗證表項是否生成。
  4. (可選)等待 5 分鐘后,再次查看地址表,驗證老化功能。
操作步驟
配置 PC1 的 IP 地址(以ENSP模擬器 PC 為例)
  1. 打開 PC1 的 “基礎配置” 界面,選擇 “IPv4 配置” 為 “靜態”。
  2. 填寫參數:
    • IP 地址:10.1.1.1
    • 子網掩碼:255.255.255.0
    • 網關:0.0.0.0(同網段通信無需網關)
  3. 點擊 “應用”,完成 PC1 配置。
  4. 重復上述步驟,配置 PC2 的 IP 為 10.1.1.2,子網掩碼 255.255.255.0。如圖:

PC1 ping PC2(觸發數據幀傳輸)

在 PC1 的 “命令行” 界面輸入 ping 命令,測試連通性:

PC1>ping 10.1.1.2  # 向PC2發送ping請求(ICMP協議數據包)
Ping 10.1.1.2: 32 data bytes, Press Ctrl_C to stop
Reply from 10.1.1.2: bytes=32 seq=1 ttl=128 time=1ms  # 收到PC2的回復,連通成功
Reply from 10.1.1.2: bytes=32 seq=2 ttl=128 time=1ms
  • 此時,PC1 和 PC2 之間會互發數據幀,交換機會自動學習兩者的 MAC 地址。
查看交換機的 MAC 地址表

登錄交換機(通過 Console 或遠程登錄),輸入命令查看 MAC 地址表:

# 1. 進入交換機的用戶視圖(默認登錄后就是用戶視圖)
<SW1># 2. 查看MAC地址表(命令:display mac-address,簡寫dis mac-address)
<SW1>display mac-address
MAC address table of slot 0:  # 插槽0的MAC地址表
-------------------------------------------------------------------------------
MAC Address       VLAN/VSI/SI   PEVLAN CEVLAN Port          Type      LSP/LSR-ID
-------------------------------------------------------------------------------
5489-98a0-5656    1             -      -      GE0/0/1       dynamic   -  # PC1的MAC,對應接口GE0/0/1,動態學習
5489-98c9-6422    1             -      -      GE0/0/2       dynamic   -  # PC2的MAC,對應接口GE0/0/2,動態學習
-------------------------------------------------------------------------------
Total matching items on slot 0 displayed = 2  # 共2條表項
  • 結果說明:交換機已通過 ping 測試,學習到 PC1 和 PC2 的 MAC 地址,并記錄了對應的接口(GE0/0/1 和 GE0/0/2),類型為 “dynamic”(動態學習)。
(可選)手動修改 MAC 地址表老化時間

默認老化時間是 300 秒,若需修改(不推薦,除非特殊需求),可在交換機的系統視圖中執行命令:

# 1. 進入系統視圖
<SW1>system-view
[SW1]# 2. 修改老化時間(單位:秒,范圍10-1000000,0表示不老化)
[SW1]mac-address aging-time 600  # 將老化時間改為600秒(10分鐘)
[SW1]quit  # 退出系統視圖# 3. 驗證修改結果(查看系統配置)
<SW1>display current-configuration | include aging-time  # 查看老化時間配置
mac-address aging-time 600  # 確認已修改為600秒

總結

  1. MAC 地址:48 比特全球唯一,分單播(第 8 比特 0)、組播(第 8 比特 1)、廣播(全 1)三類。

  2. 以太幀:數據鏈路層的傳輸單元,總長度 64-1518 字節,有 Ethernet_II 和 IEEE 802.3 兩種格式。

  3. 交換機轉發:靠 MAC 地址表工作,核心動作是 “單播轉發(已知單播)、泛洪(未知單播 / 組播 / 廣播)、丟棄(無效幀)”。
    總結

  4. MAC 地址:48 比特全球唯一,分單播(第 8 比特 0)、組播(第 8 比特 1)、廣播(全 1)三類。

  5. 以太幀:數據鏈路層的傳輸單元,總長度 64-1518 字節,有 Ethernet_II 和 IEEE 802.3 兩種格式。

  6. 交換機轉發:靠 MAC 地址表工作,核心動作是 “單播轉發(已知單播)、泛洪(未知單播 / 組播 / 廣播)、丟棄(無效幀)”。

  7. MAC 地址表:動態學習源 MAC 生成,默認老化時間 300 秒,確保地址表精簡高效。

如涉及版權問題,請聯系作者處理!!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/920991.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/920991.shtml
英文地址,請注明出處:http://en.pswp.cn/news/920991.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

火語言 RPA 界面應用生成:輕量化開發核心優勢

火語言 RPA 界面應用生成功能&#xff0c;主打 “低門檻、快落地”&#xff0c;無需復雜開發環境與專業技術&#xff0c;就能快速實現需求驗證與工具搭建&#xff0c;尤其適配中小團隊與個人&#xff0c;核心優勢如下&#xff1a;?一、1 小時搞定需求驗證&#xff1a;3 步落地…

第三方軟件測試機構【多語言開發(PHP/Java/Python)WEB 應用的安全專業測試流程】

PHP應用測試安全 文件包含漏洞&#xff1a;檢測include/require函數參數未過濾場景&#xff08;如?page../../../etc/passwd&#xff09; 命令注入&#xff1a;檢查system()/exec()函數輸入驗證&#xff08;如| cat /etc/passwd&#xff09; 會話安全&#xff1a;驗證session …

C++條件變量學習

1、概述你知道條件變量"虛假喚醒"問題么&#xff0c;下面代碼有問題么void CFileTaskThread::Run() {while (!m_bStop){CFileItemRequest* pFileItem;{std::unique_lock<std::mutex> guard(m_mtItems);if (m_Filelist.empty()){if (m_bStop)return;// 等待條件…

React Native系統組件(一)

1&#xff0c;View&#xff0c;UI的構建基石 四個方向&#xff0c;水平&#xff0c;水平倒序&#xff0c;垂直&#xff0c;垂直倒序 flexGrow與flex的區別&#xff0c;flexgrow是分父布局剩余的空間&#xff0c;flex是分父布局全部的空間上面的是flexgrow 123 下面的是flex 123…

Git 代碼提交管理指南

目錄 1. 初始設置&#xff08;首次使用 Git 時&#xff09; 2. 日常提交工作流程 場景一&#xff1a;已有本地項目&#xff0c;首次連接到遠程倉庫 場景二&#xff1a;已有遠程倉庫&#xff0c;克隆到本地 3. 更精細的文件管理 4. 提交信息規范 5. 分支管理策略 6. 高級…

go-mapus最簡單的離線瓦片地圖協作

基于leaflet.jsleaflet-geoman.jsgolangbeegogormsqlitewebsocket等實現一個最簡單的地圖協作。繪制圖元&#xff0c;其他用戶瀏覽器上實施顯示繪制和修改結果&#xff0c;大家可同步進行繪制和修改。設置線型和顏色&#xff0c;粗細和透明度。保存到sqlite數據庫。動畫演示地圖…

調式記錄之八位機軟件串口

現在在上班&#xff0c;做的項目幾乎都是關于八位機的&#xff0c;八位機有個挺CD的點硬件資源少&#xff0c;打印之類的需要軟件串口&#xff0c;有時候調的剛到很玄學&#xff0c;也有可能是我知識沒有學得恨透。首先我得需要發送這句話并在代碼里面設置我的延時時間&#xf…

嵌入式學習day40-硬件(1)

嵌入式&#xff1a;以應用為中心&#xff1a;消費電子(手機、藍牙耳機、智能音響&#xff09;、醫療電子(心率脈搏、呼吸機&#xff09;、無人機&#xff08;大疆DJ&#xff09;、機器人&#xff08;人形四足機器人)計算機技術&#xff1a;計算機五大組成&#xff1a;運算器(數…

管理中心理學問:面試中教你識別他人需求動機

“我工作是為了錢&#xff0c;為了吃,住&#xff0c;和用錢買東西。”“我工作是為了地位和認可。”“我工作是為了有所歸屬&#xff0c;為了成為一個團體的成員。”“我工作是想高升。”“我工作是因為人應該工作&#xff0c;這是唯一的權利。”“我工作為了獲取知識和認識世界…

【JavaScript】讀取商品頁面中的結構化數據(JSON-LD),在不改動服務端情況下,實現一對一跳轉

前端實踐&#xff1a;從商品頁面讀取 mpn 并實現一對一跳轉 在實際開發中&#xff0c;我們經常會遇到這樣一種需求&#xff1a; 用戶瀏覽 A 網站的商品頁面后&#xff0c;點擊按鈕能夠直接跳轉到 B 網站的對應商品。 表面看似只是一個按鈕跳轉&#xff0c;但如果不同商品需要精…

HTML5實現好看的邀請函網頁源碼

HTML5實現好看的邀請函網頁源碼 前言一、設計來源1.1 邀請函主頁1.2 邀請函活動信息1.3 邀請函內容1.4 邀請函活動地址1.5 邀請函活動流程1.6 邀請函活動獎勵1.7 邀請函聯系我們 二、效果和源碼2.1 動態效果2.2 源代碼 結束語 HTML5實現好看的邀請函網頁源碼&#xff0c;酷炫的…

傳輸層TCP 與 安全層SSL/TLS

本章節主要探討三個問題&#xff1a;1. SSL/TSL 的區別和聯系是什么&#xff1f;2. 我們常說的 “三次握手” 發生在哪個階段&#xff0c;SSL/TSL層有參與嗎?3. HTTPS混合加密發生在哪個層?一、SSL 和 TLS 聯系繼承關系&#xff1a;TLS 直接基于 SSL 3.0 設計&#xff0c;可以…

【數學建模學習筆記】時間序列分析:ARIMA

零基礎看懂 ARIMA 模型&#xff1a;從原理到實戰如果你完全沒接觸過 “時間序列預測”&#xff0c;也不懂復雜公式&#xff0c;這篇會用 “說人話” 的方式幫你搞懂 ARIMA 模型&#xff0c;以及文中代碼到底在做什么。一、先搞懂&#xff1a;ARIMA 是用來干嘛的&#xff1f;簡單…

【macOS】垃圾箱中文件無法清理的“含特殊字符文件名”的方法

【macOS】垃圾箱中文件無法清理的“含特殊字符文件名”的方法文件名包含特殊字符&#xff08;如空格、中文符號等&#xff09;導致終端無法正確識別文件路徑。 可以嘗試以下解決方法&#xff1a;使用文件路徑自動補全輸入 rm &#xff08;注意 rm 后有空格&#xff09;&#xf…

???????Blender 重拓撲修改器實戰指南:從基礎操作到細節優化?

在 Blender 建模中&#xff0c;重拓撲是解決 “高模難編輯、低模細節差” 的關鍵。傳統手動重拓撲效率低&#xff0c;重拓撲修改器能自動生成規整拓撲&#xff0c;保留模型外形&#xff0c;適合游戲資產、動畫角色等場景。 一、核心作用與適用場景? 重拓撲修改器并非 “一鍵完…

C/C++哆啦A夢

寫在前面 用代碼繪制童年記憶中的那個藍胖子——哆啦A夢&#xff0c;是我對經典角色的一次深情致敬。這段程序不僅是一幅靜態圖像的生成&#xff0c;更是一次對童年幻想世界的數字重建。通過精確的幾何控制與色彩搭配&#xff0c;我將那個圓潤可愛、溫暖可靠的機器人重新帶回眼…

CSS入門指南:30字掌握核心技巧

1. CSS初體驗 1.1. CSS定義 層疊樣式表 (Cascading Style Sheets&#xff0c;縮寫為 CSS&#xff09; 用來描述 HTML 文檔的呈現&#xff08;美化內容&#xff09; 1.2. CSS引入方式 內部樣式表&#xff1a;學習使用 CSS 代碼寫在head里面的 style標簽 里面 外部樣式表&…

從實操到原理:一文搞懂 Docker、Tomcat 與 k8s 的關系(附踩坑指南 + 段子解疑)

目錄 一、先分清&#xff1a;Docker、Tomcat、k8s 到底是 “干啥的”&#xff1f; 二、它們的 “合作關系”&#xff1a;從 Java 項目到集群部署的全流程 三、實際應用場景&#xff1a;什么時候該用誰&#xff1f; 1. 單獨使用場景 2. 組合使用場景&#xff08;最常見&…

測試覆蓋率不夠高?這些技巧讓你的FastAPI測試無懈可擊!

url: /posts/0577d0e24f48b3153b510e74d3d1a822/ title: 測試覆蓋率不夠高?這些技巧讓你的FastAPI測試無懈可擊! date: 2025-09-02T01:49:10+08:00 lastmod: 2025-09-02T01:49:10+08:00 author: cmdragon summary: FastAPI通過TestClient工具支持單元測試,模擬HTTP請求直接…

Qwen3-Reranker-0.6B 模型結構

模型加載 import torch from modelscope import AutoModel, AutoTokenizer, AutoModelForCausalLMtokenizer AutoTokenizer.from_pretrained("Qwen/Qwen3-Reranker-0.6B", padding_sideleft) model AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-Reranke…