
簡介這份教學課件聚焦計算機網絡原理中的局域網技術適合計算機相關專業(yè)學生及準備網絡基礎考試的學習者。資源以單份PPT形式整理大小3.44MB內容系統(tǒng)梳理了介質訪問控制MAC子層核心知識包括靜態(tài)與動態(tài)信道分配策略、純ALOHA與時隙ALOHA協(xié)議、1-堅持/非堅持/p-堅持CSMA以及令牌環(huán)、以太網等典型局域網技術并對吞吐量、沖突概率等關鍵概念做了圖示與公式輔助說明。課件結構層次分明從信道分配基礎到具體協(xié)議對比逐步展開便于快速建立局域網技術整體框架。目前已有84人學習可用于課堂講解、考前復習或自學參考尤其適合需要掌握MAC協(xié)議原理與局域網組網基礎的學習者。1. 局域網技術課件拆解先弄懂介質訪問控制再看懂組網局域網這塊內容在《計算機網絡原理》里被不少人當成“背協(xié)議名”的章節(jié)實際上它真正的核心是一套數(shù)學模型——多個站點共享一條廣播信道時誰先發(fā)、誰后退、撞了怎么辦。這份課件把重點壓在介質訪問控制子層MAC從靜態(tài)分配講到 ALOHA 再到 CSMA每個協(xié)議都帶吞吐量公式和適用條件而不是簡單羅列概念。適合正在準備考研、期末考的學生也適合剛接手園區(qū)網維護、想補一補交換與共享介質底層邏輯的工程師。后面我按課件順序把信道分配、ALOHA 的吞吐量邊界、CSMA 的三種堅持策略逐層拆開給出可復現(xiàn)的模擬腳本和參數(shù)經驗你看完可以直接用。2. 信道分配的兩種路線靜態(tài)策略為什么不適合突發(fā)流量2.1 靜態(tài)分配 FDM / TDM適用邊界非常窄課件里把靜態(tài)分配放在最前面方案就兩類頻分多路復用FDM波分復用 WDM 是它在光通信里的變體和時分多路復用TDM。FDM 的原理是把可用頻帶切成若干子頻帶每個用戶獨占一段TDM 則是把時間軸切成固定長度的時隙每個用戶在屬于自己的時隙里發(fā)送數(shù)據(jù)。靜態(tài)分配的優(yōu)點和缺點是同一個來源——資源劃分固定不變。它們適合用戶數(shù)量少、數(shù)目基本固定、每個用戶通信量都偏大的場景。典型例子是電話中繼一條物理鏈路上固定分給若干路電話每一路隨時有話可傳固定分配反而效率高。但換成局域網就暴露出問題了站點數(shù)雖然固定每個站點的發(fā)送需求卻是突發(fā)的絕大部分時間鏈路是空閑的。把頻帶或時隙固定分給每個站點等于大量資源在空轉。我實際做網絡規(guī)劃時基本不會在局域網場景里考慮 FDM/TDM除非是點對點的專線租用。課件把「無法靈活適應站點數(shù)及其通信量的變化」列為靜態(tài)分配的主要缺點這句話是整個第 8 章引出動態(tài)分配的楔子。2.2 動態(tài)分配的兩條路線隨機訪問與控制訪問動態(tài)分配的邏輯很簡單站點有數(shù)據(jù)要發(fā)送時才占用信道本質上屬于異步時分復用。課件把它進一步分成兩類——隨機訪問爭用和控制訪問。隨機訪問的做法是各個站點有數(shù)據(jù)就發(fā)送沖突后再協(xié)調重發(fā)。它的優(yōu)點是實現(xiàn)簡單、延遲短在負載輕的網絡里表現(xiàn)很好——站點少、發(fā)送頻率低沖突概率非常低。缺點是信道利用率上不去負載一重就開始頻繁沖突大量帶寬被浪費在重傳上。控制訪問則反過來分為輪轉和預約兩類。輪轉是每個節(jié)點輪流獲得信道使用權典型實現(xiàn)是令牌環(huán)預約是先聲明自己要發(fā)送獲得使用權之后才真正發(fā)數(shù)據(jù)。這兩種方式不會發(fā)生沖突負載重時信道利用率高但負載輕時反而低——節(jié)點要等令牌輪到自己或者等預約確認這中間白白增加了延遲。我在實際工程里選型時會先看流量特征突發(fā)型流量優(yōu)先考慮隨機訪問持續(xù)型流量或者對實時性要求高的場景必須上控制訪問。工業(yè)現(xiàn)場總線就是個典型例子幾乎所有實時控制網絡都用輪詢或令牌機制沒人敢用純爭用協(xié)議因為沖突導致的延遲抖動在現(xiàn)場是無法接受的。2.3 局域網數(shù)據(jù)鏈路層模型LLC 與 MAC 的分工課件在進入 8.1 節(jié)之前先給了一張局域網數(shù)據(jù)鏈路層模型圖把數(shù)據(jù)鏈路層拆成兩個子層邏輯鏈路控制LLC和介質訪問控制MAC。LLC 向上層提供連接環(huán)境MAC 對下層提供訪問介質的方法。這個分層設計的核心目的是解耦。以太網、令牌環(huán)、無線局域網共享介質的方式完全不同但上層網絡層協(xié)議不需要感知這些差異。LLC 負責把下層差異消化掉MAC 則專注于解決「多個站點怎么訪問共享介質」這一個核心問題。理解這一點你就明白為什么網卡驅動里既有 MAC 地址的封裝又有 LLC 層的邏輯鏈路處理。這層模型其實是整章的主線——后面講的所有協(xié)議都屬于 MAC 子層都是解決「多站點共享信道」這個問題的不同方案。課件把它放在最前面當鋪墊實際上它是理解 ALOHA 和 CSMA 共同背景的框架。3. ALOHA 協(xié)議吞吐量拆解兩次躍遷背后的數(shù)學邏輯3.1 純 ALOHA最早的爭用協(xié)議與易破壞區(qū)ALOHA 的起源課件里有交代20 世紀 70 年代美國夏威夷大學用它把分散在各個島嶼上的遠程終端連接到本部主機。這是無線廣播信道上最早采用爭用協(xié)議的網絡思路也最樸素——每個站點只要有數(shù)據(jù)就發(fā)通過監(jiān)聽信道發(fā)現(xiàn)沖突若沖突則等待一段隨機時間后重發(fā)。純 ALOHA 的吞吐量上限是 0.184這個數(shù)字需要理解它的來歷。課件給出公式 S G·e^(-2G)當 G 0.5 時 S 取最大值 1/(2e) ≈ 0.184。這里 S 表示吞吐量即在幀的發(fā)送時間 T0 內成功發(fā)送的平均幀數(shù)G 表示網絡負載即 T0 內總共發(fā)送的平均幀數(shù)包含成功的幀和因沖突失敗的幀。關鍵就在幀的易破壞區(qū)。一個幀在信道上的脆弱時間窗是 2T0 而不是 T0——因為這個幀開始發(fā)送之前的 T0 時間內如果有其他站點開始發(fā)送兩個幀就會重疊開始發(fā)送之后的 T0 時間內同樣不能有別人發(fā)。所以一個幀成功發(fā)送的概率是 e^(-2G)這就是公式里 2G 的由來。我第一次接觸這個結論時覺得有點反直覺明明一個幀只占 T0 的傳輸時間為什么脆弱窗口要算成兩倍后來想明白了——廣播信道沒有中心調度任何站點都可能在任何時刻發(fā)幀你的幀還沒發(fā)完別人的幀就可能疊上來。這也是為什么課件會在吞吐量曲線圖上標注「不穩(wěn)定區(qū)域」。3.2 時隙 ALOHA把易破壞區(qū)縮短一半時隙 ALOHA 的改進說穿了就一點把信道時間切分為離散的時間片slot每個時間片長度剛好能傳一個幀站點只能在時間片開始的瞬間發(fā)送。代價是需要全局時鐘同步。這個改動直接把易破壞區(qū)從 2T0 壓縮到 T0——因為所有站點都對齊到同一套時間片邊界幀與幀之間要么完整錯開要么在一個時間片內完全沖突不會出現(xiàn)「從半路插入」的情況。公式從 S G·e^(-2G) 變成 S G·e^(-G)當 G 1 時 S 取最大值 1/e ≈ 0.368正好是純 ALOHA 的兩倍。課件里那句「與純 ALOHA 相比信道的利用率提高一倍」指的就是這個 0.368 對 0.184 的關系。這個「時間片對齊」的思路對后續(xù)協(xié)議影響深遠——以太網的沖突檢測、無線網絡里的時隙預約本質都是對發(fā)送時機做某種限制來降低沖突概率。這里有一個值得注意的代價時隙 ALOHA 要求全局時鐘同步這在有中心節(jié)點的蜂窩網絡里容易做到但在完全自組織的臨時網絡中很難實現(xiàn)。同步本身就是成本課件沒有展開講但實際選型時必須考慮。3.3 用 Python 復現(xiàn)吞吐量曲線公式看著簡單不如自己跑一遍。這里給出一個模擬純 ALOHA 和時隙 ALOHA 吞吐量的腳本可以直接復現(xiàn)課件里的曲線import numpy as np def throughput_pure_aloha(G): 純 ALOHA 吞吐量S G * exp(-2G) return G * np.exp(-2 * G) def throughput_slotted_aloha(G): 時隙 ALOHA 吞吐量S G * exp(-G) return G * np.exp(-G) # 負載從 0.01 掃描到 5觀察吞吐量變化趨勢 G_values np.linspace(0.01, 5, 200) pure_values throughput_pure_aloha(G_values) slotted_values throughput_slotted_aloha(G_values) # 輸出理論峰值點 peak_pure throughput_pure_aloha(0.5) # 理論峰值對應 G0.5 peak_slotted throughput_slotted_aloha(1.0) # 理論峰值對應 G1.0 print(f純 ALOHA 峰值吞吐量: {peak_pure:.3f} (G0.5)) print(f時隙 ALOHA 峰值吞吐量: {peak_slotted:.3f} (G1.0))邏輯說明腳本用 numpy 在負載區(qū)間內均勻取 200 個點分別計算兩種協(xié)議在每個負載點的歸一化吞吐量然后輸出理論峰值對應的 G 值。運行結果應顯示 0.184 和 0.368和課件曲線一致。參數(shù)說明np.linspace(0.01, 5, 200)表示從負載 0.01 掃到 5取 200 個樣本點。掃描范圍之所以到 5是為了展示過載后吞吐量下滑的區(qū)間。實際設計網絡時我會把工作負載壓在峰值點左側——比如時隙 ALOHA 把 G 控制在 0.5 以內留出沖突重傳的余量。自己跑一遍比背公式更容易建立直覺G 從零增到峰值的過程中吞吐量上升越來越慢說明新增的負載大部分被沖突消耗了越過峰值后吞吐量不升反降這就是負載過重系統(tǒng)崩潰的數(shù)學表現(xiàn)。4. CSMA 三種堅持策略1-堅持、非堅持、p-堅持的取舍4.1 1-堅持 CSMA死等信道帶來的沖突放大ALOHA 最大的問題是站點完全不管別人在不在發(fā)撞了才知道。CSMA 的核心改進是「先聽再說」——發(fā)送前先監(jiān)聽信道。1-堅持策略的具體行為是站點在發(fā)送數(shù)據(jù)前先監(jiān)聽信道若信道忙則堅持監(jiān)聽直至發(fā)現(xiàn)空閑一旦空閑立即以概率 1 發(fā)送數(shù)據(jù)發(fā)現(xiàn)沖突后隨機等待一段時間然后重新開始監(jiān)聽。「1-堅持」這個名字里的 1 指信道空閑時發(fā)送的概率為 1不猶豫。好處是信道一釋放等待的站點能立刻搶占消息傳遞延遲低。壞處是多個同時等待的站點會同時聽到信道空閑、同時發(fā)送沖突反而被放大。特別是在兩個站點都盯著信道等釋放的場景下釋放瞬間幾乎必然發(fā)生碰撞。課件點出影響性能的兩個因素信號傳播延遲和 1-堅持的策略本身。傳播延遲大意味著站點聽到「信道空閑」時遠端站點可能已經發(fā)送了產生隱蔽終端問題。所以課件原話是「該協(xié)議適合于規(guī)模較小和負載較輕的網絡」這句話限定了它的適用場景。4.2 非堅持 CSMA用延遲換信道利用率非堅持 CSMA 的機制和 1-堅持完全相反發(fā)送前先監(jiān)聽信道若信道忙則放棄監(jiān)聽等待一個隨機時間后再監(jiān)聽若信道空閑則發(fā)送數(shù)據(jù)。這種「忙就退讓」的策略減少了沖突——不同站點退避的隨機時間不同不會扎堆去搶信道釋放瞬間。信道利用率高于 1-堅持 CSMA這是課件的判斷。但代價是延遲特性變差一個站點可能退避計時還沒結束信道就已經空閑了白白浪費了可用的發(fā)送窗口。我在工程上把非堅持理解成「悲觀主義」策略默認信道很擠主動讓路。它在站點數(shù)量多、負載偏重的共享信道里表現(xiàn)更好。但要注意一個問題隨機退避時間的取值范圍如果設置不合理可能出現(xiàn)長時間沒人發(fā)送的情況。課件沒有展開退避時間的設置細節(jié)實際實現(xiàn)時這是很關鍵的一個參數(shù)。4.3 p-堅持 CSMA折衷方案里的 p 值如何定p-堅持 CSMA 適用于時分信道。它的行為是發(fā)送前監(jiān)聽信道信道忙則等到下一個時間片再監(jiān)聽信道空閑則以概率 p 發(fā)送數(shù)據(jù)以概率 1-p 將發(fā)送推遲到下一個時間片。下一個時間片執(zhí)行相同的操作直到發(fā)送成功或檢測到信道忙。這個策略是在 1-堅持和非堅持之間取折衷。p 偏大會像 1-堅持延遲低但沖突概率高p 偏小會像非堅持沖突少但延遲大。課件把話說得很克制「影響協(xié)議性能的關鍵在于 p 的選擇」但沒有給出選 p 的指導。我一般用這樣的估算方法先估計同時活躍的站點數(shù) N把 p 設成 1/N 量級。這樣在一個時間片內期望發(fā)送的站點數(shù)約為 N × p 1能平衡成功率和沖突率。舉個例子如果網絡里大約有 10 個活躍站點p 取 0.1 左右比較合理站點越少 p 可以越大站點越多 p 必須越小。拿到初始值后再做一輪實測微調觀察吞吐量和延遲曲線。三種策略的行為差異和適用場景放在一起對比更直觀策略信道忙時行為信道空閑時行為沖突概率延遲特性適用場景1-堅持堅持監(jiān)聽直到空閑立即發(fā)送較高較低小規(guī)模、輕負載網絡非堅持放棄監(jiān)聽隨機退避后重試立即發(fā)送較低較高站點多、負載重的共享信道p-堅持等下一個時間片再監(jiān)聽以概率 p 發(fā)送取決于 p取決于 p時分信道需調 p 參數(shù)需要強調一個容易混淆的點以太網實際用的是 CSMA/CD可以理解成 1-堅持 CSMA 加碰撞檢測和二進制指數(shù)退避的變體不適合直接用「哪一堅持」來歸類。它的「堅持」是為了快速搶占信道而沖突解決靠的是「檢測到碰撞后立即停止發(fā)送 截斷二進制指數(shù)退避」。先把三種無 CD 的 CSMA 策略搞清楚再去看以太網脈絡會清晰很多。4.4 用模擬腳本看清 p 值對沖突率的影響調 p 值不能只靠公式我寫了一個簡單的 Python 模擬腳本。場景是 N 個活躍站點每個時間片開始時各自獨立以概率 p 決定是否發(fā)送統(tǒng)計成功、沖突和空閑的時間片比例import random def simulate_p_persistent(active_stations, p, slots10000, seed42): 模擬 N 個站點的 p-堅持訪問統(tǒng)計成功/沖突/空閑時間片占比 random.seed(seed) success 0 collision 0 idle 0 for _ in range(slots): # 每個站點獨立決定是否發(fā)送統(tǒng)計發(fā)送者數(shù)量 senders sum(1 for _ in range(active_stations) if random.random() p) if senders 0: idle 1 # 無人發(fā)送時隙空閑 elif senders 1: success 1 # 剛好一個站點發(fā)送發(fā)送成功 else: collision 1 # 兩個及以上站點同時發(fā)送沖突 return { idle_ratio: idle / slots, success_ratio: success / slots, collision_ratio: collision / slots, } # 固定 10 個活躍站點對比不同 p 值的表現(xiàn) for p in [0.05, 0.1, 0.2, 0.5]: result simulate_p_persistent(active_stations10, pp) print(fp{p}: 空閑{result[idle_ratio]:.3f}, f成功{result[success_ratio]:.3f}, 沖突{result[collision_ratio]:.3f})邏輯說明每個時間片模擬 N 個活躍站點各自做一次獨立隨機試驗發(fā)送者數(shù)量為 0 記為空閑、恰好 1 個記為成功、2 個及以上記為沖突迭代 10000 個時間片后統(tǒng)計三類事件的比例。參數(shù)說明active_stations10表示同時有 10 個活躍站點p 從 0.05 掃到 0.5。運行結果會驗證一個規(guī)律p 增大時沖突比例明顯上升空閑比例下降而成功率在 p0.1 附近出現(xiàn)峰值——這就是 1/N 原則的實證。這個腳本可以繼續(xù)擴展比如給沖突站點加退避重傳機制觀察重傳對網絡穩(wěn)定性的影響。但課程層面先看這一版就夠了它能把「p 值怎么調」從抽象公式變成可見的數(shù)據(jù)。5. 局域網技術避坑五個親身踩過的理解誤區(qū)5.1 把 0.184 當實際可用帶寬直接算容量現(xiàn)象拿著純 ALOHA 的吞吐量上限 0.184 去估算鏈路容量得出「10Mbps 鏈路最多跑 1.84Mbps」的結論。實際用模擬工具測試發(fā)現(xiàn)吞吐量并沒有低到這么離譜。原因0.184 是理論歸一化最大吞吐量對應「只發(fā)送定長幀、負載恰好處于 G0.5」的理想條件。真實系統(tǒng)里幀有前導碼、幀間間隔、控制字段等額外開銷而且鏈路負載不可能精確穩(wěn)定在峰值點。歸一化吞吐量不等于帶寬利用率。解決把 0.184 當成「信道能承載的凈數(shù)據(jù)比例上限」來理解。估算實際吞吐量時先根據(jù)幀長算開銷占比再用 S ×1 - 開銷占比做一次換算。比如 1518 字節(jié)的以太網幀前導碼和幀間間隔大約占 7% 左右凈效率還要再打折扣。5.2 時隙 ALOHA 的同步被做成了全網高精度硬同步現(xiàn)象實現(xiàn)時隙 ALOHA 時照課件「要求全局時鐘同步」一句字面執(zhí)行給每個節(jié)點上了高精度時鐘同步方案成本高到離譜。原因課件里「全局時鐘同步」說的只是時隙邊界對齊不是所有站點要精確到納秒級時間同步。時隙 ALOHA 真正需要的是每個站點在時隙邊界處統(tǒng)一行動這個精度要求通常在微秒級。解決采用中心信標同步——主站周期性地廣播時隙邊界信號從站收到信標后對齊自己的發(fā)送時刻。這種做法的同步成本和復雜度遠低于全網硬同步也更符合 ALOHA 最早在無線廣播場景里的實際部署方式。5.3 非堅持 CSMA 的退避時間設成固定值現(xiàn)象實現(xiàn)了非堅持 CSMA測下來沖突率居高不下而且重傳失敗的概率很大網絡在重負載下近似癱瘓。原因退避時間如果是固定值多個沖突過的站點會再次在同一時刻監(jiān)聽——同一時刻退避結束、同一時刻重新發(fā)送陷入同步沖突的循環(huán)。教科書只說了「等待一個隨機時間」沒有強調隨機值必須是變化的。解決把退避時間設成隨機范圍并隨重傳次數(shù)擴大取值范圍。常見做法是每次重傳把退避窗口翻倍比如第一次重傳退避窗口取 0~100 個時間片第二次取 0~200以此類推和以太網的截斷二進制指數(shù)退避思路一致。這一條即使是非堅持 CSMA 也應該參考。5.4 在重負載園區(qū)網里硬套 1-堅持 CSMA現(xiàn)象一個樓宇內 200 多臺設備共享同一沖突域網絡高峰時段廣播幀滿天飛實際吞吐量驟降延遲嚴重抖動。原因1-堅持 CSMA 的適用范圍是「規(guī)模較小、負載較輕」。200 臺設備的廣播域明顯超出設計目標沖突域過大導致節(jié)點頻繁重傳重傳又加劇信道占用形成惡性循環(huán)。解決縮小沖突域。用交換機把網絡劃分成多個獨立的沖突域每個交換機端口對應一個沖突域或者直接換用帶沖突避免機制的協(xié)議。這也是為什么現(xiàn)代局域網都建立在交換式以太網上共享式以太網只存在于實驗室和古董集線器環(huán)境里。5.5 p-堅持的 p 值固定不變現(xiàn)象照著課件設置了 p 參數(shù)后低峰期大量時隙空閑高峰期沖突頻發(fā)網絡體驗時好時壞。原因p 值的最優(yōu)解依賴活躍站點數(shù) N而 N 是動態(tài)變化的。固定 p 只能在某一類負載下表現(xiàn)良好負載一波動就偏離最優(yōu)工作點。解決把 p 值做成自適應的——節(jié)點根據(jù)最近一段時間觀測到的信道繁忙程度動態(tài)調整發(fā)送概率。信道忙則降低 p信道空閑則適當提高。實現(xiàn)方式通常是用滑動窗口統(tǒng)計信道占用率再映射到 p 值。這在無線局域網協(xié)議里已經是標配機制有線共享介質場景同樣適用。這五個坑里第 2、3、5 條屬于實現(xiàn)細節(jié)問題第 1、4 條屬于選型和計算層面。課件本身講的是協(xié)議邏輯沒有義務覆蓋實現(xiàn)陷阱所以我把這幾個親身踩過的坑記下來供你參考。6. 把課件里的公式變成可復現(xiàn)的實驗三條驗證路徑如果只看不練吞吐量曲線的感覺很快就淡了。我建議按這三條路徑把課件結論跑一遍成本都很低。第一條是數(shù)值驗證。跑第 3 章的 Python 腳本確認純 ALOHA 和時隙 ALOHA 的峰值分別出現(xiàn)在 G0.5 和 G1.0數(shù)值為 0.184 和 0.368。再把第 4 章的 p-堅持模擬腳本跑一遍把 p 從 0.05 調到 0.5觀察沖突比率的上升趨勢。這一步能幫你建立「負載-沖突-吞吐量」三者之間的數(shù)量關系。第二條是協(xié)議觀察。用 Wireshark 抓包驗證 CSMA/CD 的行為——把一個集線器接進測試網絡用兩臺主機同時發(fā)起持續(xù)下載觀察抓包里重傳幀的出現(xiàn)頻率和退避行為。沒有集線器也沒關系用 Mininet 模擬一條共享鏈路同樣能觸發(fā)沖突和重傳。抓包時重點看以太網幀頭里的類型字段和重傳間隔這比看課本上的拓撲圖直觀得多。第三條是教學順序的重排。如果你和我一樣要用這份課件講課或組內分享建議不要按原章節(jié)順序過而是按這個順序講先給局域網數(shù)據(jù)鏈路層模型說明 LLC 與 MAC 的分工再講靜態(tài)分配的局限引出動態(tài)分配接著用純 ALOHA 算出爭用協(xié)議的吞吐量下限再用時隙 ALOHA 展示對齊發(fā)送時機的效果最后把三種 CSMA 放進同一個坐標系里對比。這個順序的好處是每一步的改進都能對上一步的問題——學生先知道問題有多嚴重才能理解方案好在哪。從第一次在課堂上講這章到現(xiàn)在我養(yǎng)成了一個習慣接手任何帶共享介質的網絡項目時先做一遍「共享介質 vs 交換介質」的判斷把可能存在的沖突域列成清單再決定要不要啟用廣播抑制、風暴控制這些安全手段。這個動作用不了十分鐘但已經不止一次避免了下班后被廣播風暴召回機房的尷尬。如果你也用這份課件自學或者備課我建議把這個判斷流程加進你自己的檢查清單希望幫到你。本文還有配套的精品資源點擊獲取