介質訪問控制

媒體存取控制（Medium Access Control 或 Media Access Control，縮寫：MAC，大陸簡體也稱為「介質訪問控制」）子層，是區域網中數據鏈路層的下層部分，提供定址及媒體存取的控制方式，使得不同設備或網路上的節點可以在多點的網路上通訊，而不會互相衝突，上述的特性在區域網或者城域網中格外重要。若只是兩台設備之間全雙工的通訊，因為兩台設備可以同時傳送及接收資料，不會衝突，因此不需要用到MAC協定。

MAC子層作為邏輯鏈路控制子層及物理層之間溝通的媒介，提供了一種定址的方法，稱為實體地址或MAC地址。對於IEEE標準的MAC地址，全球管理的MAC地址（其最高字節的次低比特位，即從高到低的第7位取0）是唯一的，每張網卡的MAC地址都不一樣，因此可以在一子網路中傳送封包到特定的目的設備。此處的子網路是指沒有路由器的實體網路（例如乙太網路）。但本地管理（相應的比特位取1）的MAC地址可以由使用者自行分配。在同一個區域網內，MAC地址已經足夠使用，但隨著互連網路的發展，為了適應全球性能差異巨大，使用不同種類MAC層地址和MAC層協議的網路，並在其基礎上建立一個虛擬網際網路，IP位址應運而生。網際網路廣泛使用ARP協議來將IP位址轉換為MAC地址。

## 通道存取控制機制

介質訪問控制層提供的通道存取控制機制（channel access control mechanism）也稱為多路存取方法（multiple access method）。這讓數個連在一個因此連接在同一傳輸介質的幾個設備可以共享其介質。像匯流排拓撲、環狀拓撲、HUB網路、無線網路及半雙工點對點的連結都是這類的網路。若有使用以封包模式競爭 (通訊)為基礎的的通道存取方法，可以偵測甚至避免資訊封包的碰撞 (通訊)，若是使用以電路交換或是通道化（channelization）為基礎的通道存取方法，可以保留資料建立邏輯通道。通道存取方法要以實體層的多路復用框架為基礎。

廣為使用的多路存取方法之一是乙太網使用，以競爭為基礎的CSMA/CD方法。此作法只適用在一個網路碰撞域中，例如乙太網匯流排網路或是星狀拓撲。乙太網網路可以分為數個個網路碰撞域，彼此之間用橋接器和網路交換器。

多路存取方法不一定要用在有交換器的雙工網路（例如乙太網），不過因為相容性的考量，這類的網路常會有網路交換器。

以下是一些使用在有線網路的封包交換多路訪問協定：

- CSMA/CD（在Ethernet及IEEE 802.3使用）
- 令牌環（Token Ring, IEEE 802.5）
- 令牌環匯流排（Token Bus,IEEE 802.4）
- 令牌傳遞（Token Passing,在FDDI使用）

以下是一些使用在無線網路的封包交換多路訪問協定：

- CSMA/CA
- 槽式ALOHA協議
- 動態TDMA
- 預約ALOHA協議
- CDMA
- OFDMA

## 乙太網的媒體接入控制

由於歷史原因，有線區域網擁有兩個標準：DIX Ethernet V2和IEEE 802.3，基於前者的有線區域網稱為乙太網。IEEE 802.3區域網標準與前者十分相似，因而也被視作「乙太網」，這裡不做區分。

在傳統的總線拓撲乙太網以及使用集線器（hub）的星形拓撲乙太網（集線器工作在物理層，故從邏輯上看這種乙太網和總線乙太網沒有差別）中，在總線上，某台站點發送的數據會被發送至所有站。在發送數據幀時，在幀的首部標明目的站的適配器地址，適配器據此來進行過濾，接收發給自己的數據幀，丟棄發給其他站點的數據幀，從而實現一對一通信鏈路的建立。這種網路連接方式的缺點是同一時間只能有一個站點在發送數據，而乙太網使用隨機接入方式，任何使用者都可隨機發送數據，這會導致碰撞的可能性。所以這種乙太網只能使用半雙工通信方式。並在MAC層採用CSMA/CD協議（載波監聽多點接入/碰撞檢測）。

使用交換式集線器（switching hub，又名乙太網交換機（switch））的乙太網中，乙太網交換機通常工作在全雙工模式，通過查詢幀交換表來將數據幀轉發到相應的站點連接的物理埠。乙太網交換機的幀交換表是通過自學習演算法得到的：在一開始交換機的幀交換表是空白的。當乙太網上的兩個站點A和B雙向通信時，A要發給B數據幀，交換機收到A要發給B的數據幀，記錄A的MAC地址（數據幀的源地址）以及所在的接口，由於不知道B連接的接口，交換機向所有其他接口轉發這個幀；B接受數據幀，其他站收到數據幀後丟棄；B向A發送數據幀時，交換機記錄B的MAC地址和連接的接口。之後A與B通信時，不必再廣播數據幀，直接按照記錄的地址-接口對應關係轉發即可。這種乙太網不使用CSMA/CD協議。

吉比特乙太網擁有全雙工和半雙工模式，在全雙工模式不使用CSMA/CD協議。在吉比特乙太網中，由於網路速率很快，因而幀發送時間會變短，爭用期也變短。為了使網路線纜長度符合實際，在半雙工模式下採用載波延伸（Carrier Extension，在發送幀末尾添加填充以使幀長度加倍）和分組突發模式（Burst Mode，在第一個幀後，連續發送數據幀）來解決上述問題。10GE以及更高速（≥10 Gbps）的乙太網只使用全雙工模式工作，也不使用CSMA/CD協議。

### CSMA/CD協議

CSMA/CD協議適用於半雙工信道。CSMA/CD協議要求站點不斷檢測信道（「載波監聽」），不論是否發送數據。在數據發送前，如果有其他站發送數據，則暫時不發送，等待信道空閒。然而由於電磁波在媒介中速率有限，難免會有站點未能及時偵測到信道占用。在數據發送中，若發現數據包與其他站點發送的數據「碰撞」，則採用截斷二進位指數退避來確定重傳時間。

若將總線的單程端到端傳播時延記作τ，則其往返傳播時延為2τ。可以證明，總線上的站點需要至多2τ的時間得知發送的數據幀是否遭遇碰撞，故將此段時間稱為「爭用期」或「碰撞窗口」，對於具體的乙太網協議，規定其為51.2 μs。在檢測到碰撞後，站點不會等待信道空閒後馬上發送數據，而是推遲隨機時間。這個隨機時間是由下面的截斷二進位指數退避來確定的：

- 令k = min{重傳次數,10}，從{0,1,…,2k-1}中選取隨機整數r，重傳推遲時間即為r倍的爭用期。若再次發生碰撞，再次執行此步驟，重傳次數+1。
- 重傳次數達到16次後便丟棄該幀，並向更高層報告。

對於乙太網來說，長度小於一定數值的幀是因為幀衝突中止的無效幀，因為其發送時間小於爭用期。例如對於10 Mbps乙太網，長度小於64位元組的幀都是無效幀。這種無效幀應被丟棄。

### 乙太網MAC幀

常用的乙太網MAC幀有兩種：DIX Ethernet V2標準MAC幀和IEEE 802.3標準MAC幀。

DIX Ethernet V2標準MAC幀的格式如下，各個欄位按照發送順序排列：

- 目的地址——目的站點的MAC地址。6位元組（48位）;
- 源地址——源站點的MAC地址。6位元組（48位）;
- 類型——標識上層協議類型。例如0x0800標識IP數據報。2位元組（16位）。
- 數據——上層協議下發的數據報。46位元組~1500位元組之間。若長度不夠，添加填充欄位。
- FCS（幀檢測序列）——檢測數據幀差錯的校驗碼，使用CRC校驗。

這種MAC幀沒有長度欄位，上層協議（如IP協議）處理時根據上層協議數據報頭部的長度欄位去掉填充欄位。

IEEE 802.3標準的乙太網MAC幀格式與上述標準的區別如下：

- 第三個欄位為「長度/類型」，當該欄位大於0x0600時表示類型，與DIX Ethernet V2標準一致，小於0x0600時表示數據幀的數據部分長度。
- 當「長度/類型」欄位小於0x0600時數據欄位必須填充入邏輯鏈路控制子層（LLC）的LLC幀。

## IEEE 802.11無線區域網的媒體接入控制

802.11無線區域網採用星形拓撲，中心點稱為接入點（AP）。它的MAC層採用CSMA/CA（載波監聽多點接入/碰撞避免）協議以及停止等待協議。與乙太網不同，802.11無線區域網是具有鏈路層確認的，它是可靠傳輸，而乙太網的數據鏈路層是不可靠的。

CSMA/CD協議不適用於無線區域網。因為存在以下問題：無線信道與有線信道不同，由於多徑效應和都卜勒頻移等原因，無線信號的信號強度動態範圍很大，適配器上接收到信號強度往往小於發送信號的強度。硬體實現困難。即使在硬體上實現碰撞檢測，也無法避免碰撞的產生。簡單例子：假設有一定移動站A和C之間存在站點B，A和C都欲和B通信，存在這樣一種可能：A和C足夠遠，以至於A無法探測到C的信號，但A和C都可以和B通信，這會導致潛在的碰撞可能，稱為隱蔽站問題。

802.11無線區域網的MAC層分為分布協調功能層（DCF）和點協調功能層（PCF）。DCF層在每一個節點使用CSMA機制的分布式接入演算法，讓每個站點爭用信道。所有的802.11無線區域網實現都必須要有此層。而PCF層是可選層，它用接入點AP集中控制基本服務集（BSS），使用類似探詢的辦法來依次將發送數據的權利交給各個站點，它提供無爭用服務。

802.11區域網規定所有站點發送完成之後，必須等待一段很短的時間（幀間隔，IFS）才可以發送下一幀。幀間隔的長度取決於幀的類型，高優先級的幀等待時間短，低優先級的長。若低優先級幀未來得及發送，而其他站的高優先級幀已經發送，則媒體變為忙態，低優先級幀推遲發送。幀間隔分為短幀間間隔（SIFS）和分布協調功能幀間間隔（DIFS）。SIFS是最短的幀間間隔。使用該類型間隔的幀有ACK幀、CTS幀、由過長的MAC幀分片得到的幀、回答AP探詢的幀以及在PCF方式中AP發射的幀。DIFS的長度比SIFS長。它用來發送DCF方式下的數據幀和管理幀。

### CSMA/CA協議

與CSMA/CD相似，將要發送數據的站點檢測信道，當源站發送其首個MAC幀時，若檢測到信道空閒則等待間隔DIFS後發送，這是為了讓其他站優先發送高優先級幀。若無高優先級幀發送，源站發送了自己的數據幀，若目的站正確接收，則經過SIFS後向源站發送確認幀ACK。若源站未在重傳計時器滿時接收到ACK，則重傳該幀直到收到確認為止。

發送數據的源站會將占用信道的時間通知給其他站點（包括目的站發回確認幀所需的時間），以使其他站點在這段時間內停止發送數據。這叫虛擬載波監聽（Virtual Carrier Sense）。這是通過源站在下面提到的數據幀的第二個欄位「持續時間」內填入本幀結束後還會占用信道的時間來實現的。每當某站檢測到信道中正在傳輸的MAC幀首部的持續時間欄位時，會調整自己的網路分配向量NAV（Network Allocation Vector），其指出了完成數據幀的本次傳輸必需的時間。

當信道由忙態轉為空閒時，任何站發送非首個數據幀時，不僅需要等待間隔DIFS，還要進入爭用窗口，計算隨機退避時間，這與CSMA/CD協議是不同的。802.11無線區域網也使用截斷二進位指數退避演算法，但是第i次退避要在22+i個時隙中隨機選擇一個。時隙選擇完成後要根據其設置一個退避計時器，若計時器的值降至零，則發送數據。若信道在此過程中再度進入忙態，則計時器數值凍結，到信道再度空閒再等待一個DIFS間隔後，從凍結時的數值開始繼續計時，這是為了使得繼續啟動退避計時器的站及時接入信道。

### 802.11無線區域網MAC幀

802.11幀有三種類型：控制幀、數據幀、管理幀。其格式如下（按照發送順序）：

- MAC首部（30位元組）
- 幀控制（2位元組，16位）
- 協議版本（2位）：目前為0。
- 類型（2位）：分辨幀的類型（控制幀、數據幀、管理幀）。
- 子類型（4位）：分辨幀的子類型（數據幀、RTS幀、CTS幀等）。
- 去往DS（1位）
- 來自DS（1位）
- 更多分片（1位）：置為1時表明這個幀是一個幀的多個分片之一。
- 重試（1位）
- 功率管理（1位）
- 更多數據（1位）
- WEP（1位）：置為1時表明採用了WEP加密演算法。
- 順序（1位）
- 持續期（2位元組）
- 地址1（6位元組）（RTS幀該項為接收地址）
- 地址2（6位元組）（CTS和ACK幀無此項，RTS幀該項為發送地址）
- 地址3（6位元組）（CTS，ACK和RTS幀無此項）
- 序號控制（2位元組）（CTS，ACK和RTS幀無此項）：一共16位，序號子欄位12位，分片欄位4位。這個欄位的作用與運輸層TCP協議的序號欄位的作用是差不多的。802.11無線區域網引入了乙太網不具備的可靠傳輸功能。
- 地址4（6位元組）（CTS，ACK和RTS幀無此項）
- 幀主體（≤2312位元組，但一般不長於1500位元組，CTS，ACK和RTS幀無此項）
- MAC尾部（4位元組）
- FCS（4位元組）

#### 802.11數據幀的地址

802.11數據幀有四個地址欄位。地址4用於自組網路，在有基礎設施的網路中不使用。而前三個地址的內容取決於幀控制欄位中的「去往DS」和「來自DS」子欄位。DS指的是分配系統。

去往DS｜來自DS｜地址1｜地址2｜地址3

0｜1｜目的地址｜基本服務集標識符｜源地址

1｜0｜基本服務集標識符｜源地址｜目的地址

兩個站點A和B之間通信，需要經過AP轉發。基本服務集標識符（BSSID）是一個48位地址，與乙太網MAC地址類似，其最高字節的最低位為0，次低位為1，其餘46位通過演算法產生，確保無重複，可以視作AP的地址。站點A向AP發送數據，「去往DS」和「來自DS」子欄位分別設置為1和0。地址1是基本服務集標識符（接收地址），地址2是A的地址（源地址），地址3是B的地址（目的地址）。AP將數據轉發給B，「去往DS」和「來自DS」子欄位分別設置為0和1。地址1是B的地址（目的地址），地址2是基本服務集標識符（發送地址），地址3是A的地址（源地址）。

現在考慮另一種情況：來自其他網路的數據報發往無線區域網上的移動站C。網路層數據報經由路由器轉發，路由器在網路層數據報首部提取C的IP位址，通過ARP協議得知C的MAC地址，於是路由器將數據報封裝為乙太網MAC幀。乙太網幀通過有線信道到達AP。AP將C的MAC地址（目的地址）和路由器轉發該數據報的埠的MAC地址（源地址）提取出來，加入AP地址，並重新封裝成802.11無線區域網幀。此時「去往DS」和「來自DS」子欄位分別設置為0和1。地址1是C的地址（目的地址），地址2是基本服務集標識符（發送地址），地址3是路由器轉發該數據報的埠的MAC地址（源地址）。

同樣地，C要發送數據到其他網路，先發送802.11無線區域網幀到AP。地址1是基本服務集標識符（接收地址），地址2是C的地址（源地址），地址3是路由器轉發埠的地址（目的地址）。AP提取出路由器轉發該數據報的埠的MAC地址（目的地址）和C的MAC地址（源地址），轉換為乙太網幀，通過有線信道送至路由器的轉發埠。

## 蜂窩行動網路的媒體接入控制

蜂窩網絡的MAC層是其空中接口的一部分，為無線鏈路控制層提供服務。它不需要利用MAC地址，它通過無線臨時標識（RNTI）和邏輯信道映射區分使用者。MAC層將多個邏輯信道（如同時有控制信令和使用者數據）的數據復用到同一個傳輸信道塊（TB）里發送，並在接收端正確解復用。這是通過MAC PDU中的C/T欄位（UMTS網路）或者LCID欄位（LTE以及更新的網路）實現的。MAC層通過調度機制為雙向通信分配資源，並通過HARQ機制管理重傳。

UMTS網路（即WCDMA，TD-SCDMA是其變種）的MAC層分為四個實體：

- 廣播MAC實體（MAC-b），處理廣播信道（BCH）。
- 專用MAC實體（MAC-d），處理專用信道（DCH）。
- 公共MAC實體（MAC-c/sh），處理尋呼信道（PCH）、前向接入信道（FACH）、隨機接入信道（RACH）、上行鏈路公共分組信道（CPCH）和下行鏈路共享信道（DSCH）。
- 高速MAC實體（MAC-hs），處理HSDPA的高速下行鏈路共享信道（HS-DSCH）。

LTE網路和5G NR網路的MAC層對此進行了簡化，不再延續UMTS的多實體劃分，而是通過統一MAC實體整合功能。

MAC層完成邏輯信道與傳輸信道之間的映射，而傳輸信道與物理信道之間映射的工作由物理層實現，UMTS網路的映射關係如下：

- 邏輯信道廣播控制信道（BCCH）對應傳輸信道BCH或者FACH。該邏輯信道向小區內所有UE廣播控制資訊。
- 邏輯信道尋呼控制信道（PCCH）對應傳輸信道PCH。傳輸尋呼資訊的下行信道。
- 在空閒模式下，邏輯信道公共控制信道（CCCH）的下行鏈路對應傳輸信道FACH，上行鏈路對應傳輸信道RACH，此時該信道用於傳輸控制資訊。連接模式下不使用CCCH。
- 在連接模式下，若未分配專用傳輸信道，邏輯信道專用控制信道（DCCH）和專用業務信道（DTCH）可以對應傳輸信道FACH（下行鏈路中）和傳輸信道RACH（上行鏈路中），這兩個邏輯信道分別處理專用控制資訊和業務數據；在使用專用傳輸信道時，多個DTCH和DCCH對應一個傳輸信道DCH，也可以映射到不同的傳輸信道DCH。除此之外還可以對應Release 4和Release 5提出的新傳輸信道，如公共分組信道（CPCH），下行共享信道（DSCH）和高速下行共享信道（PDSCH）。

LTE網路和5G NR網路的映射關係如下：

- 廣播控制信道（BCCH）對應傳輸信道BCH以及DL-SCH（下行共享信道）。前者承載主資訊塊（MIB），後者承載系統資訊塊（SIB）。
- 尋呼控制信道（PCCH）對應傳輸信道PCH。
- 在空閒模式（RRC_IDLE）下，公共控制信道（CCCH）下行鏈路對應傳輸信道DL-SCH，上行鏈路對應傳輸信道UL-SCH（上行共享信道）。連接模式下不使用CCCH。
- 在連接模式（RRC_CONNECTED）下，專用控制信道（DCCH）和專用業務信道（DTCH）可以對應傳輸信道DL-SCH（下行鏈路中）和傳輸信道UL-SCH（上行鏈路中）。

上面忽略了映射的方向問題。實際上映射的方向與數據的傳輸方向有關：接收數據的一側按照物理信道→傳輸信道→邏輯信道的方向映射，發送數據的一側按照邏輯信道→傳輸信道→物理信道的方向映射。

### MAC報頭

MAC層將來自RLC層的SDU（服務數據單元）加上MAC報頭，構成MAC PDU（協議數據單元）。需要注意的是UMTS網路發展時間較早，其MAC報頭結構與現在流行的LTE/LTE-A網路和5G NR網路有較大的差異。

#### UMTS網路的MAC報頭

對於UMTS網路，不同信道映射下的MAC報頭包含不同的欄位。非HS-DSCH的MAC PDU可能包含的欄位有：目標信道類型（TCTF）、C/T、UE-Id和UE-Id類型。HS-DSCH的MAC PDU分為兩種：MAC-d PDU和HS-DSCH MAC PDU。MAC-d PDU的格式與非HS-DSCH的MAC PDU的相同；而HS-DSCH MAC PDU包含了一個或多個MAC-hs報頭以及一個或多個MAC-hs SDU。MAC-hs SDU相當於一個MAC-d PDU。

TCTF域在多種邏輯信道映射到同一傳輸信道時使用，它標識了FACH和RACH傳輸信道傳輸的邏輯信道的類型，以便於接收端的MAC將SDU傳送到合適的邏輯信道。C/T域在多個同類型的邏輯信道映射到同一傳輸信道時使用，它提供了同一傳輸信道（不包括HS-DSCH）上或者同一MAC-d流上的諸邏輯信道之區分標識。UE-Id用於在公用信道上區別不同的UE，其中包含的是RNTI。UE-Id類型用於標識UE-Id的類型。

#### LTE/5G NR網路的MAC報頭

對於LTE網路和5G NR網路，MAC協議的全局報頭由一組報頭單元組成，每個單元都與RLC幀或控制元件有關。對於LTE網路，報頭單元連續排列，位於首部，RLC幀或控制元件的連接順序與報頭單元的順序對應。而與控制元件相關的單元應位於與RLC幀相關的單元前。而對於5G NR網路，由於採用了sub-PDU，報頭單元不再連續排列在首部，而是排列在對應的RLC幀或控制元件前。

LTE/5G NR的MAC PDU可能包括以下欄位:

- 保留(R)，1位，設為0;
- 擴展(E)，1位，表明下一報頭單元存在（1）或不存在（0），僅用於LTE/LTE-A網路。
- 邏輯信道標識符（LCID），5 bit（對於LTE/LTE-A）或6 bit（對於5G NR）編碼，表明邏輯信道實例或控制元件的類型，需要注意不同類型的信道中同一LCID可能有不同的含義。
- 格式（F），1位，指定長度欄位的格式，當長度欄位為7/8 bit時取1，為15/16 bit時取0。
- 長度（L），LTE/LTE-A可以取7位或15位；5G NR取8位或16位。

典型的LTE/LTE-A MAC報頭可以有以下格式：

- R/R/E/LCID/F/L，L域長7位，用於少於128位元組的MAC SDU。
- R/R/E/LCID/F/L，L域長15位，用於不少於128位元組的MAC SDU。
- R/R/E/LCID，用於MAC控制元件和填充部分。

典型的5G NR MAC報頭可以有以下格式:

- R/R/LCID，用於固定長度MAC控制元件。
- R/F/LCID/L，用於可變長度MAC控制元件和MAC SDU。

值得注意的是，LTE/LTE-A網路的上行和下行鏈路MAC PDU格式相同，控制元件排在MAC SDU前。而5G NR網路下行鏈路中，控制元件所在sub-PDU的置於MAC SDU所在sub-PDU前；上行鏈路中，控制元件所在sub-PDU的置於MAC SDU所在sub-PDU後。

### MAC控制元件

LTE/LTE-A以及5G NR網路的MAC幀包含若干控制元件，主要類型如下：

- 緩衝區狀態報告（BSR）：用於UL-SCH信道。對於LTE/LTE-A網路，一共有三種BSR：截斷BSR、短BSR、長BSR，對應的LCID為28、29和30；對於5G NR網路，一共有四種BSR：短截斷BSR、長截斷BSR、短BSR、長BSR，對應的LCID為59、60、61和62。其由移動台發送以提供存儲器狀態。其包含分配給該存儲器的邏輯信道組標識（LCG ID）以及包含存儲器中可用數據大小的索引的緩衝區大小欄位。
- 小區無線網絡臨時標識符（C-RNTI）：用於UL-SCH信道。對於LTE/LTE-A網路，其LCID為27；對於5G NR網路，其LCID為58。包含在隨機控制接入期間分配給移動台的標識符。
- 非連續接收（DRX）：用於DL-SCH信道。對於LTE/LTE-A網路，其LCID為30；對於5G NR網路，其LCID為59（長DRX命令）/60（DRX命令）。允許不連續接收以延長電池壽命。
- 定時提前（TA）：用於DL-SCH信道。對於LTE/LTE-A網路，其LCID為29；對於5G NR網路，其LCID為61。
- UE競爭解決標識（UE CRI）：用於DL-SCH信道。對於LTE/LTE-A網路，其LCID為28；對於5G NR網路，其LCID為62。
- 激活/去激活MAC控制元件（ADM）（LTE/LTE-A），或者輔小區激活/去激活（SCell Activation/Deactivation）（5G NR）：用於DL-SCH信道。對於LTE/LTE-A網路，其LCID為27；對於5G NR網路，其LCID為57（4位元組格式）/58（1位元組格式）。涉及SCell次級無線信道的激活/去激活。
- 複製激活/去激活（5G NR）：LCID為56。1位元組，含8個D欄位，表示對應順序DRB的PDCP複製狀態。

## 參考文獻

本條目部分或全部內容出自以GFDL授權發佈的《自由線上電腦詞典》（FOLDOC）