跳轉到

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
(CSMA 效率約 2 倍於 ALOHA;20 站的模擬在 1000 幀內完成——無需大量重傳。)

結案 -- 後果與影響#

  • 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。