我们每天都在使用Wi-Fi网络,但你是否深入思考过,当点击发送按钮时,数据是如何被精确封装并通过无线电波传输的?本文将深入剖析IEEE 802.11协议的核心,揭示MAC层数据封装的全过程,并解读其独特的信道访问机制。
这本质上是一场关于数据“打包”与“排队”的精密协作。
在Wi-Fi的世界里,速度与秩序并存。我们接下来将深入底层,探究IEEE 802.11协议如何让数据在复杂且充满干扰的无线环境中实现可靠传输。

802.11的定位:在OSI模型中的层级
首先,需要明确Wi-Fi(IEEE 802.11)在协议体系中的位置。它属于庞大的IEEE 802家族(局域网技术标准)的一员。下图清晰地展示了IEEE 802家族与OSI七层模型的对应关系:

在TCP/IP模型中,802.11主要承担了数据链路层和物理层的工作:
- 上层(LLC子层):作为“逻辑链路控制”子层,它如同一个外交官。它与802.3(以太网)的LLC子层功能一致,确保上层网络协议(如IP)能够无缝地在Wi-Fi介质上运行。
- 下层(MAC子层):这是Wi-Fi的核心区域,也是本文的重点。它扮演着交通警察的角色,严格管控着哪个设备可以发送数据以及何时发送数据。

数据链路层:数据的逐层封装
数据从手机的应用层产生,最终到达Wi-Fi芯片准备发射,会在数据链路层经历三次关键的“封装”过程。这个过程类似于快递打包:将物品装入小盒,再将小盒放入大箱,最后贴上运单。
MSDU(网络层的包裹)与 A-MSDU(聚合打包)
网络层(第三层)将数据递交给数据链路层,经过LLC子层处理后,该数据单元被称为MSDU(MAC服务数据单元)。MSDU包含了来自第三层及以上的所有信息(如IP包头和载荷),可以简单理解为携带了上层协议数据的净荷。
802.11的管理帧和控制帧不携带上层信息,而数据帧的帧体则承载着MSDU。标准规定MSDU的最大长度为2304字节,但实际受限于以太网MTU,通常不超过1500字节。
802.11n标准引入了A-MSDU(聚合MSDU)技术。它将多个MSDU聚合在一起,形成一个更大的数据单元进行发送。此时,帧体的最大长度取决于A-MSDU的最大长度(3839或7935字节,由终端能力决定)以及加密开销。A-MSDU的结构如下图所示:

如图所示:
- 拼接方式:多个独立的“TCP/IP头+数据载荷”被加上一个微小的A-MSDU子帧头。
- 合体:这些带标签的数据包被首尾相连,组合成一个庞大的A-MSDU。
- 容量提升:这种“大包裹”的体积上限显著提高,最高可达7935字节,有效减少了协议开销,提升了传输效率。
MPDU(贴上MAC头)与 A-MPDU(聚合帧列车)
LLC子层将MSDU交给MAC子层时,MAC子层会为其添加MAC帧头等控制信息。封装后的单元被称为MPDU(MAC协议数据单元),也就是我们常说的802.11帧。一个标准的MPDU由三部分构成:
- MAC帧头:包含帧控制、持续时间、地址、序列控制、QoS控制等信息。
- 帧体:承载MSDU净荷,其大小和内容因帧类型而异,可以进行加密。
- 帧校验序列(FCS):一个32位的CRC校验码,用于接收端验证帧的完整性。
下图展示了一个标准MPDU的精密结构:

除了A-MSDU,MAC层还有另一种更主流的聚合技术——A-MPDU。
- 原理:它并非拆包重组,而是将多个完整的MPDU(每个都拥有独立的MAC头和FCS)像火车车厢一样串联起来,车厢之间用特定的分隔符(Delimiter)隔开。
- 优势:A-MPDU是目前高性能Wi-Fi传输的主流。相比于A-MSDU“一损俱损”的缺点(整个大包中任何一个比特错误都需重传整个包),A-MPDU实现了“错误隔离”。由于每个子帧都有独立的FCS校验,如果传输中第二个子帧出错,只需重传该子帧即可,其他正确的子帧依然有效,极大地提升了重传效率。


物理层:射频信号的最后成形
与数据链路层类似,物理层也分为两个子层。上层是PLCP(物理层汇聚协议)子层,下层是PMD(物理介质相关)子层。MAC子层将帧(此时对物理层称为PSDU)交给PLCP子层,PLCP子层为其添加前导码和物理层头部,形成PPDU(PLCP协议数据单元)以便传输。随后,PMD子层将数据比特调制为无线电波发送出去。

- PSDU:即PLCP服务数据单元,它就是物理层视角下的MPDU。两者是同一数据单元在不同层的称呼。
- PPDU:即PLCP协议数据单元。PLCP子层在PSDU前添加用于同步的前导码(Preamble)和物理层头部,构成完整的PPDU,然后交给PMD子层进行调制和发射。

MAC层面临的挑战与CSMA/CA机制
无线环境如同一个嘈杂的集市,所有设备共享同一片“空气”介质。802.11采用CSMA/CA(载波监听多路访问/冲突避免)机制来建立通信秩序,这与有线以太网使用的CSMA/CD有着根本区别。
CSMA/CA:礼貌的“先听后说”与“随机退避”
当一台无线设备(STA)想要发送数据时,它会遵循以下步骤:
- 载波监听(CS):首先监听无线信道是否空闲(即判断是否有其他设备正在发送信号)。
- 多路访问(MA):承认同一信道资源被多个设备共享,竞争必然存在。
- 冲突避免(CA):这是核心。如果信道从繁忙转为空闲,设备不会立即发送,而是先进入一个“随机退避”阶段。它会选择一个随机的退避时间(以时隙为单位),并开始倒计时。在此过程中持续监听,若信道一直空闲,则计时结束后发送数据;若在退避期间监听到其他设备开始发送,则暂停计时,待信道再次空闲后继续。这套机制虽然牺牲了一点即时性,但极大地降低了数据碰撞的概率。
确认机制与隐藏节点问题
802.11采用“正面确认”机制。绝大多数单播数据帧必须在收到接收方回复的ACK帧后才被认为发送成功,否则将触发重传。具体流程如下:

在无线网络中,还存在“隐藏节点”问题。如下图所示,STA 1和STA 3都能与AP(STA 2)通信,但彼此因距离或障碍物无法直接侦听到对方。从STA 1的角度看,STA 3就是一个隐藏节点,它们可能同时向AP发送数据而导致在AP处发生碰撞。

为解决此问题,802.11提供了可选的RTS/CTS(请求发送/允许发送)握手机制:
- 发送方(如STA 1)先向AP发送一个短小的RTS帧,预约信道使用权。
- AP收到后,广播一个CTS帧作为响应。
- RTS和CTS帧中都包含一个“持续时间”字段,会通知范围内所有听到它们的设备(包括隐藏节点STA 3)在一段时间内保持沉默。
- 完成握手后,STA 1即可无冲突地发送后续数据帧。
RTS/CTS机制通过额外的小帧交换,有效避免了大数据帧因碰撞而导致的重传开销,尤其适用于大数据包传输或隐藏节点较多的环境。

术语缩写对照表
- OSI:开放式系统互联
- LLC:逻辑链路控制
- MAC:介质访问控制
- MSDU:MAC服务数据单元
- A-MSDU:聚合MAC服务数据单元
- MPDU:MAC协议数据单元
- A-MPDU:聚合MAC协议数据单元
- FCS:帧校验序列
- CRC:循环冗余校验
- PLCP:物理层汇聚协议
- PMD:物理介质相关
- PPDU:PLCP协议数据单元
- PSDU:PLCP服务数据单元