介质访问控制

媒体接入控制（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）