4. 11帧结构与MAC层机制
各位好,欢迎来到第四章。这一章我们聊聊WiFi的“交通规则”——MAC层核心机制。说白了,就是解决一个根本问题:一堆设备共享同一个无线信道,怎么保证它们不互相“撞车”?
有线网络里,以太网用的是CSMA/CD,检测到冲突就停。但无线环境不一样,你没法一边发一边收,也检测不到远端设备在发。所以WiFi用了另一套方案——CSMA/CA,冲突避免。我刚开始接触这个区别时,觉得挺绕的,后来在项目里踩过坑才真正理解。
4.1 CSMA/CA:先听再说,避免冲突
CSMA/CA的全称是Carrier Sense Multiple Access with Collision Avoidance。核心思想就四个字:先听后说。
- 载波侦听:发送前先监听信道。如果信道忙,就等。
- 冲突避免:不直接发,而是通过随机退避来降低碰撞概率。
你可能会问:为什么不直接检测冲突?因为无线信号衰减快,远端设备发数据,你这边可能根本听不到。这就是所谓的“隐藏节点问题”。
关键点:CSMA/CA不是“撞了再处理”,而是“尽量别撞”。这种设计让WiFi在共享信道下能保持相对公平的接入机会。
4.2 DCF模式:WiFi的默认工作模式
DCF,Distributed Coordination Function,分布式协调功能。这是WiFi最基础、最常用的模式。每个设备自己决定什么时候发,没有中心控制器。
DCF的核心机制包括:
- IFS(帧间间隔):不同优先级的帧等待不同时长。SIFS最短,用于ACK、CTS等高优先级响应;DIFS较长,用于普通数据帧。
- 随机退避:信道空闲后,设备还要随机等一段时间。这个时间窗口叫Contention Window,CW。第一次碰撞后CW翻倍,直到最大。
- 二进制指数退避:每次冲突,退避窗口翻倍。我见过有人把这个机制调得太激进,结果网络吞吐量反而下降。
个人经验:我在一次WiFi性能调优项目中,发现某个AP下的终端频繁掉线。排查后发现是DCF的退避参数被误改,导致竞争窗口过小,设备间碰撞率飙升。恢复默认值后问题解决。
4.3 PCF模式:中心调度,但很少用
PCF,Point Coordination Function,点协调功能。它需要一个中心节点(通常是AP)来轮询各个站点,决定谁可以发数据。
PCF的优点:
- 无竞争,时延可控
- 适合实时业务,如语音、视频
PCF的缺点:
- 实现复杂,AP负担重
- 轮询效率低,空闲站点浪费时隙
- 实际产品中很少启用
| 特性 | DCF | PCF |
|---|---|---|
| 控制方式 | 分布式,各站自主决策 | 集中式,AP轮询调度 |
| 竞争机制 | CSMA/CA + 随机退避 | 无竞争,由AP分配 |
| 时延保障 | 无保障,尽力而为 | 有保障,适合实时业务 |
| 实际应用 | 几乎所有WiFi网络 | 极少使用,仅部分企业AP支持 |
注意:PCF虽然理论上能提供更好的QoS,但实际部署中因为兼容性和效率问题,几乎被HCF(混合协调功能)取代。你如果做产品开发,建议优先考虑802.11e的EDCA机制。
4.4 RTS/CTS握手机制:解决隐藏节点问题
隐藏节点问题,简单说就是:A和C都能和B通信,但A听不到C。如果A和C同时给B发数据,就会在B处碰撞。RTS/CTS就是用来解决这个问题的。
握手流程:
- RTS:发送方先发一个短帧,告诉所有人“我要发数据了”。
- CTS:接收方回复一个CTS帧,确认信道空闲,并通知其他站点“别打扰”。
- 数据:发送方收到CTS后,开始发数据。
- ACK:接收方收到数据后,回复ACK确认。
RTS/CTS的代价是增加了开销。所以一般只在数据帧较大或隐藏节点严重时才启用。我建议的阈值是:数据帧超过1500字节时开启RTS/CTS。
避坑指南:我曾经在一个仓库项目中,所有终端都开启了RTS/CTS,结果小包业务(如传感器数据)延迟暴增。后来调整为仅对大于1000字节的帧启用,吞吐量提升30%。
4.5 核心流程总结:一张图看懂
下面这张SVG图展示了DCF模式下,一次完整的数据发送流程,包括退避、RTS/CTS握手、数据发送和ACK确认。
4.6 实战建议:参数调优
在实际项目中,MAC层参数调优直接影响网络性能。我总结了几条经验:
- RTS阈值:默认2347字节(关闭),建议在干扰大的环境中设为1000-1500字节。
- 碎片阈值:默认2346字节,信道质量差时降低到500-1000字节,减少重传开销。
- Beacon间隔:默认100ms,对时延敏感的业务可缩短到50ms,但会增加AP开销。
- 最大重试次数:默认7次,建议不超过4次,否则会加剧信道拥塞。
个人习惯:我每次部署WiFi网络前,都会先用抓包工具观察一下信道利用率。如果超过50%,就说明竞争太激烈,需要调整RTS阈值或增加AP密度。
好了,这一章的内容就到这里。CSMA/CA、DCF、PCF、RTS/CTS,这些机制共同构成了WiFi MAC层的骨架。理解它们,你就能在遇到无线性能问题时,快速定位是“交通规则”出了问题,还是其他原因。