IEEE 802.11 分片机制

为什么要拆大帧、如何确认、以及它和聚合的区别

Posted by Yvain Zhang on March 22, 2024 主题:技术

802.11 分片本质上是一个很直接的取舍:多花一点协议开销,换更高一点的抗错误能力。

理解这件事时,先抓住下面三个问题:

  1. 为什么要分片
  2. 分片之后怎样确认和重组
  3. 它和现代更常见的聚合机制有什么区别

1. 分片机制要解决什么问题

在无线环境里,帧越大,出错后重传成本越高。IEEE 802.11 引入分片机制,就是为了把一个较大的 MAC 帧拆成多个较小片段,提高在干扰、丢包场景下的传输可靠性。

分片的核心收益是:

  • 大帧出错时,不必重传整个帧
  • 只重传失败的片段
  • 更适合噪声较大、信道质量不稳定的环境

2. 分片发生在哪一层

802.11 分片通常由 MAC 层 处理。

当待发送的数据长度超过分片阈值时,MAC 层会把一个较大的数据单元拆成多个片段,每个片段都作为独立 MPDU 发送。

3. 分片触发条件

分片是否发生,主要取决于分片阈值(Fragmentation Threshold)。

常见理解方式:

  • 当帧大小超过阈值时,触发分片
  • 阈值可以配置
  • 默认值一般较大,在现代网络中往往不会频繁触发

在高干扰环境下,可以适当降低阈值,以减少单次重传成本;但阈值过小也会增加协议开销。

4. 分片后的帧如何标识

一个原始帧被拆成多个片段后,接收端通常会依赖这些信息进行识别:

  • 同一个序列号
  • 不同的片段号
  • More Fragments 标志

也就是说,接收端可以依靠:

  • 序列号
  • 片段号
  • 是否还有后续片段

来完成重组。

5. 发送与确认机制

每个片段都被当作独立帧发送,并且通常需要独立 ACK。

典型过程通常是:

  1. 片段 1 发送
  2. 接收端确认
  3. 再发送片段 2
  4. 某个片段失败时,只重传该片段

分片能提升可靠性的关键,就在这里。

6. 接收端如何重组

接收端拿到一组片段后,会按序列号和片段号进行重组。重组成功的前提通常包括:

  • 所有片段都收齐
  • 片段顺序可恢复
  • 每个片段的完整性校验通过

只有在这些条件满足后,才会把重组后的完整数据继续交给上层处理。

7. 分片和加密的关系

这部分最实用的结论是:

片段通常按独立单位传输和校验,因此在实现上往往也是按片段处理加解密。

这样做的好处是:

  • 某个片段丢失或损坏时,不影响其他片段处理
  • 不需要等待全部片段到齐再处理每一段基础完整性
  • 更符合无线环境下丢包、重传、乱序的实际特点

但具体实现仍可能随着安全机制和芯片 / 驱动实现不同而存在差异,所以在定位问题时,最好同时结合:

  • 802.11 标准语义
  • 安全协议实现
  • 抓包结果
  • 芯片驱动实现路径

8. 分片和聚合的区别

它和聚合都跟“拆”和“拼”有关,但目标并不一样:

  • 分片:为了提高可靠性,把大帧拆小
  • 聚合:为了提高吞吐,把多个小帧拼大

两者目标完全不同:

  • 分片偏向抗丢包
  • 聚合偏向减少开销和提高吞吐

在现代 Wi-Fi 中,更常见的是帧聚合(如 A-MPDU / A-MSDU),而不是频繁使用传统分片。

9. 什么时候分片更有价值

分片更适合这些场景:

  • 无线信道质量差
  • 干扰多
  • 丢包率高
  • 帧较大,重传成本明显

而在高质量链路里,频繁分片可能反而导致:

  • MAC 头开销增加
  • ACK 开销增加
  • 吞吐下降
  • 时延上升

10. 实际排查时该怎么想

如果你在做抓包、协议栈或驱动分析,建议重点看:

  1. 是否真的触发了分片阈值
  2. 分片后的序列号和片段号是否连续
  3. ACK 是否逐片返回
  4. 某个片段是否频繁重传
  5. 加密场景下是否存在分片后的额外开销或异常
  6. 是否其实是聚合、而不是分片导致的问题

11. 总结

802.11 分片机制的本质很简单:

  • 把大帧拆成更小片段
  • 每片独立发送和确认
  • 出错时只重传失败部分

它本质上是一个“用额外协议开销换可靠性”的机制。理解它最重要的不是背标准字段,而是知道它为什么存在、适合什么场景、和聚合相比该怎么取舍。