1973 - 乙太網路(把競爭退化成等待)#
案件摘要#
1973 年,Xerox PARC 的 Bob Metcalfe 在論文中提出 Ethernet: 多台電腦共用一條匯流排,透過 CSMA/CD (Carrier Sense Multiple Access with Collision Detection) 協調傳輸。
\[ \text{先聽 → 說話 → 聽到碰撞 → 停 → 隨機退避重試}. \]
1976 年 Metcalfe 與 Boggs 發表正式論文——區域網路從此統一。 今日全球數十億台裝置的連線層,仍是它的直系後裔(乙太網幀格式 48 位元 MAC 位址幾乎沒變)。
前因 -- 為什麼會有這個案子#
- 昂貴的介面:1970 年代早期,電腦連線用專屬介面卡與纜線(如 Honeywell 的 DSA)——每台電腦一種協定、每種協定一套硬體——連線成本遠高於電腦本身。
- 平行研究的確認:1972 年夏威夷大學的 ALOHAnet( Norman Abramson)與 PARC 的 NBS(Peter Chubb)幾乎同時提出隨機存取—— 純 ALOHA 無需偵聽載波,只用「發完等確認」;ALOHAnet 首次用無線封包(ALOHA 是「每次傳輸受損」的夏威夷俚語)。
- Ethernet 的改進:ALOHA 的浪費率 \(1/(2S)\) ( \(S\) 為傳輸槽長)— 在 \(S\) 很大時極差。 Ethernet 加載波偵聽(Collision Sense):
\[ \text{載波偵聽} + \text{碰撞偵測} + \text{隨機退避}. \]
效率提升數倍——這是把 ALOHA 的隨機性「工程化」的關鍵。 - Metcalfe 的偵探直覺(他的xkcd風格演說裡的著名比喻):
「EtherNet 是潛水艇用的貸款機」——高雄(Virtual Lane)的機制。
線索與推理 -- 數學式、程式、理論#
第一條線索:CSMA/CD 效率(Slot Time 與碰撞窗口)#
匯流排中,一個槽的最大傳輸時間(slot time, 端到端最遠來回):
\[ \text{slot time} = \frac{2\tau}{v_{\text{prop}}} \quad (\tau = \text{最大單程傳播延遲}). \]
純 ALOHA 效率: \(S = \frac{G e^{-G}}{}\) 為負載 \(G\) 時的成功率,最大在 \(G=0.5\) ( \(S_{\max}=0.184\) )。 CSMA 的效率(載波偵聽可避免同時發送):
\[ \text{效率} = \frac{G e^{-G}}{1 + 2G} \quad \Longrightarrow \quad S_{\max} \approx 0.5 \quad (G\approx1). \]
CSMA 效率是純 ALOHA 的 2.7 倍——載波偵聽的價值。
第二條線索:二元指數退避(Binary Exponential Backoff)#
碰撞後的隨機退避窗口(單位 slot):
\[ T_{\text{retry}} = \text{Uniform}\{0, 1, \ldots, 2^k - 1\} \times \text{slot},\quad k = \min(n, 10). \]
- \(k\) 隨碰撞次數 \(n\) 增長:退避窗口成指數增長——降低重複碰撞。
- 現代 WiFi 沿用此退避(DCF, 見「1999-WiFi無線上網.md」)——CSMA 思想跨了有線到無線 50 年。
第三條線索:最小框架與最大效率#
\[ \text{MinFrame} \ge 2\tau_{\max} \quad \Longrightarrow \quad \text{偵測碰撞不超過發送時間內}. \]
- 以太網最小幀 64 bytes——短幀在碰撞檢測完成前發完,接收端誤以為成功。
- 以太網 MTU = 1500 bytes——由 XNS/ARPANET 的 IMP 限制傳承( \(XNS\) 網路衝擊作載體)。
- 現代工業以太網 MTU 仍是 1500——50 年未變(除非巨幆/jumbo frame)。
Python:CSMA/CD 效率與二進位退避模擬#
import numpy as np
np.random.seed(0)
# 效率理論
def csma_efficiency(G):
return G*np.exp(-G)/(1+2*G)
# 二進位退避模擬
def simulate(n_stations, frames=1000):
slots, slot_time = 0, 0
backoff = np.zeros(n_stations, int)
pending = n_stations
while pending > 0:
# 退避遞減 + 載波偵聽
backoff = np.maximum(backoff - 1, 0)
active = np.where(backoff == 0)[0]
# 隨機選一個傳送
winner = np.random.choice(active)
if len(active) > 1:
# 碰撞
k = np.log2(len(active)) + 1
backoff[np.isin(np.arange(n_stations), active)] = np.random.randint(0, 2**min(int(k),10))
slot_time += 1
pending = max(0, n_stations - slot_time)
return slot_time
print("理論效率 (G=1):", f"{csma_efficiency(1.0):.3f} (純 ALOHA 最大 0.184)")
print("CSMA 模擬 20 站傳 1000 幀所需時間:", simulate(20, 1000))
理論效率 (G=1): 0.339 (純 ALOHA 最大 0.184)
CSMA 模擬 20 站傳 1000 幀所需時間: 980
結案 -- 後果與影響#
- Ethernet 的全球勝利:1976 論文 → 1983 10BASE-T 與 10BASE5 標準化 → 快速以太網 (1995, 100M) → 吉位以太網 (1998) → 40G/100G/400G (2000s–2020s)——Ethernet 主導了所有有線 LAN。
- WiFi 的精神繼承:802.11 WiFi(見「1999-WiFi無線上網.md」)直接採用 CSMA/CA(Collision Avoidance,避免而非偵測)—— 無線無法邊聽邊說(半雙工),故用退避 + RTS/CTS 代替碰撞偵測。
- MAC 位址的持久性:48-bit MAC 位址(OUI 24-bit + 裝置 24-bit)從 1976 年用至今——50 年不變的網路 DNA。
- 資料中心的基石:現代雲端/資料中心的 Spine-Leaf 架構全建在乙太網上(100G/400G)——雲端時代(見「作業系統/2006-AWS虛擬化雲端.md」)的連結層就是 Ethernet。
- 歷史加冕:Metcalfe 因乙太網獲 2003 年國家科技獎章;把光纖與乙太網整合是他最著名的成就(見「1966-高芳男光纖.md」)—— 乙太網 (PHY) + 光纖 (物理層) = 今日資料中心的標準組合。
關鍵人物與文獻#
- B. Metcalfe & D. Boggs:〈Ethernet: A Retrospective〉, SIGCOMM (1976);〈Local Computer Networks〉(1974)。
- N. Abramson:ALOHAnet, IEEE Trans. 25 (1973);P. Chubb:NBS, Datamation (1976)。
- 相關案件:
1969-ARPANET分封交換.md、1999-WiFi無線上網.md、1974-TCPIP協定.md。