媒體存取控制(media access control)
想像一場會議,所有人共用一支麥克風,但同一時間只能聽見一個人說話。如果兩個人一起搶著拿,兩人的話都會糊成一團。這群人需要一條「誰在什麼時候說話」的規則。媒體存取控制就是共享連結的這條規則:它是連結層中協調「哪台裝置可以往大家共用的媒介上傳送」的那一部分,好讓它們的訊號不會撞成一團雜訊。
網路教科書把連結層分成兩個子層。上面的邏輯連結控制(LLC)負責框架化、錯誤檢查,以及(選擇性的)可靠傳遞機制——這些事情不管線上還有誰都很重要。下面的 MAC 子層負責存取的問題:在只有兩個節點的點對點連結上,沒什麼好協調的;但在許多裝置共用的廣播媒介上——老式同軸乙太網路、Wi-Fi 的空中電波、有線電視網的上行頻道——MAC 子層就跑一套多重存取協定來仲裁輪次。它也是用每台裝置那組扁平、由硬體指派的 MAC 位址,來標示每個訊框來源與目的地的地方。
它為什麼重要:存取方法很大程度決定了共享連結在負載下的行為。CSMA/CD(老式乙太網路)讓各站自由說話並偵測碰撞;CSMA/CA(Wi-Fi)試圖「避免」碰撞,因為在無線上碰撞無法可靠地被偵測;權杖傳遞則傳遞一個許可權杖;TDMA 與 FDMA 切出固定的片段。對一個常見混淆的誠實澄清:媒體存取控制這個「功能」(決定誰來傳送),和 MAC「位址」這個識別碼(那組 48 位元的硬體標籤)是不同的東西——它們共用一個名字、同一層,但一個是程序、另一個是號碼。
在一個 Wi-Fi 網路上,許多筆電共用一個無線頻道。傳送前,每一台都跑 MAC 子層的協定(CSMA/CA):先聽,若空中很忙,就等一段隨機的退避時間再試——這樣兩台站台就不太可能在完全相同的瞬間開始說話。
MAC 子層決定在共享媒介上,誰來傳送、何時傳送。
別把兩個 MAC 混為一談:媒體存取控制是「功能」(誰可以傳送),而 MAC 位址是「識別碼」(一個 48 位元的硬體標籤)。同名、同層,卻是不同的東西。