干无线这行久了,我发现自己被问得最多的问题不是"AP怎么配",而是"为什么Wi-Fi跑不到标称速度"。这个问题要回答清楚,绕不开802.11 PHY(物理层)。路由器上印的AX3000、BE6500,本质上都是PHY层参数堆叠出来的结果;手机状态栏里那个"866.7Mbps",也是PHY层握手速率的直接体现。这篇文章我想以一个老网工的身份,把802.11 PHY这条主线从头到尾捋一遍:从DSSS到OFDMA、从BPSK到4096-QAM,把调制编码、速率计算、前导码结构、MIMO工作机制这些概念用实战视角讲透。看完你能做三件事:看懂终端上的速率数字、自己算出理论速率、以及拿到抓包工具时知道该看哪些PHY字段。刚入行的网工、做Wi-Fi测试的QA、想搞清楚家里网络的技术爱好者,都适合往下读。
1. 从DSSS到OFDMA:三十年里PHY层到底改了什么
1.1 先分清PHY和MAC的分工
在802.11协议栈里,MAC层管的是"谁在什么时候说话",包括帧的调度、竞争窗口、确认与重传;PHY层管的则是"把比特流变成无线电波、再把无线电波变回比特流"的全过程。用食堂打饭打比方:MAC是排队的规则,谁先谁后、插队怎么处理都由它定;PHY则是厨师把菜谱变成饭菜、客人把饭菜还原成菜谱的过程。两者缺一不可,但PHY层常常被忽略——因为它的工作发生在空气里,看不见摸不着。
PHY层实际要做的事情,可以拆成三块。发射端:把比特流加扰、做FEC编码、映射到星座点、铺到子载波上、加上前导码、逆傅里叶变换成时域信号、最后上变频到2.4GHz/5GHz/6GHz的射频。接收端:做完全相反的流程,从检测到信号开始,完成AGC、同步、信道估计、解调、解码,最后还原出0和1。此外,信道空闲评估(CCA)也依赖PHY层对接收能量和信号类别的感知。可以说,MAC层所有的调度智慧,最终都要靠PHY层这个"翻译官"落地。
1.2 一张表理清代际变化
| 协议(商用名) | 频段 | 核心PHY技术 | 最大频宽 | 最大速率 | 最高调制 |
|---|---|---|---|---|---|
| 802.11(1997) | 2.4GHz | FHSS/DSSS | 22MHz | 2 Mbps | DQPSK |
| 802.11b | 2.4GHz | HR-DSSS/CCK | 22MHz | 11 Mbps | CCK |
| 802.11a/g | 5GHz / 2.4GHz | OFDM | 20MHz | 54 Mbps | 64-QAM |
| 802.11n(Wi-Fi 4) | 2.4GHz/5GHz | OFDM + MIMO | 40MHz | 600 Mbps | 64-QAM |
| 802.11ac(Wi-Fi 5) | 5GHz | OFDM + MU-MIMO | 160MHz | 6.9 Gbps | 256-QAM |
| 802.11ax(Wi-Fi 6/6E) | 2.4/5/6GHz | OFDMA + UL/DL MU-MIMO | 160MHz | 9.6 Gbps | 1024-QAM |
| 802.11be(Wi-Fi 7) | 2.4/5/6GHz | OFDMA + 320MHz频宽 | 320MHz | 46 Gbps | 4096-QAM |
这张表值得细看几眼。早期802.11和802.11b用的DSSS是"扩频"思路:把低速比特用更高的码片速率铺开到很宽的频带上,换取抗窄带干扰能力。它简单可靠,但速率上限很低,因为扩频本质上是拿带宽换信噪比。到802.11a/g,业界切换到OFDM,把20MHz频宽拆成几十个窄子载波并行传数据,单载波速率不需要太高,整体速率却能轻松上到54Mbps。这是PHY层第一次质的飞跃。
802.11n引入了MIMO和40MHz频宽,速率直接跳到600Mbps级别。802.11ac把频宽拉到160MHz、调制升到256-QAM,并支持最多8条空间流,理论速率到了6.9Gbps。802.11ax最大的变化不是速率,而是引入了OFDMA——多个用户可以同时共享同一个信道里的不同子载波资源,这直接改写了无线信道的使用效率。到了802.11be,速率提升来自320MHz超大频宽和4096-QAM,同时用多链路并发进一步榨干频谱。
1.3 演进的三条主线
如果你把这些代际串起来看,会发现PHY层的演进其实就三件事。第一,更宽的带宽:20MHz到40MHz再到80、160、320MHz,路径很清楚。第二,更高的调制阶数:从BPSK一路到4096-QAM,每多一个比特,对射频链路和信噪比的要求就上一个台阶。第三,更多的空间流和更聪明的多用户调度:从单天线到多天线,从一次服务一个人到一次服务一群人。
还有一个容易被忽略的细节:每一代新PHY都必须向后兼容,所以你会看到在802.11n/ac/ax/be的所有帧开头,都保留着L-STF、L-LTF、L-SIG这几个legacy前导码字段(除802.11n可选用的Greenfield模式外)。老设备听到这些字段就知道信道被占用了,新设备则接着读后面的HT-SIG、HE-SIG-A来获取该格式特有的参数。这个"新老同堂"的设计让Wi-Fi生态得以平滑演进,但也带来了不小的开销——后面讲抓包时你会再次看到它。
2. MCS与速率计算:标称速度背后的四个乘法因子
2.1 速率公式和四个变量
PHY层速率不是玄学,它由一个非常朴素的公式决定:
数据速率 = 数据子载波数 × 每子载波比特数 × 编码率 × 空间流数 ÷ 单个符号时长
四个乘数各自对应一项物理资源的利用水平。数据子载波数由频宽决定,频宽越宽,能用的子载波越多;每子载波比特数由调制阶数决定,调制阶数越高,每个符号携带的比特越多;编码率由FEC纠错强度决定,纠错越强,有效比特占比越低;空间流数由收发两端的天线链路共同决定,流数越多,并行管道越多。最后除以的单个OFDM符号时长,则包含FFT周期和保护间隔(GI),保护间隔选短一点,每秒能送出去的符号就多一点。
值得注意的是,这四个变量不是独立的。调制阶数上去了,对信噪比的要求就上去了;频宽宽了,信道里容纳的干扰也更多;空间流多了,对信道分离度的要求跟着提高。所以PHY速率上限从来不是"想高就高",而是每个因素都有物理条件的约束。
2.2 调制阶数和编码率分别是什么
调制阶数决定的是"每个信号状态代表多少比特"。BPSK用两个相位代表0和1,1个符号等于1比特;QPSK用4个相位组合,2比特;16-QAM用16个星座点,4比特;64-QAM是6比特;256-QAM是8比特;1024-QAM是10比特;4096-QAM是12比特。星座图上的点越密,相邻点的距离就越近,对噪声和失真的容忍度就越低。所以高调制阶数本质上是在拿"信号质量"换"速率"。信道不好的时候强行用256-QAM,结果只会是误码、重传,整体吞吐反而更差。
编码率则解决另一个问题:信道不可靠,我需要往里掺多少冗余?FEC编码会在有效比特后面加纠错比特,接收端据此纠正一部分错误。1/2表示每2个编码比特里有1个有效比特,5/6表示每6个编码比特里有5个有效比特。编码率越高,有效吞吐越高,但纠错能力越弱。MCS表就是把调制阶数和编码率组合起来编号:MCS0对应BPSK+1/2,MCS7对应64-QAM+5/6,MCS9对应256-QAM+5/6,MCS11对应1024-QAM+5/6;Wi-Fi 7又扩展了MCS12和MCS13,对应4096-QAM的3/4和5/6。
2.3 手算一遍:手机上的866.7Mbps是怎么来的
最常见的场景:一台支持802.11ac的5GHz手机,80MHz频宽、MCS9、2条空间流、短保护间隔,显示的握手速率是866.7Mbps。我们来验证一下。
802.11ac在80MHz频宽下有234个数据子载波;MCS9是256-QAM,每子载波8比特;编码率5/6;空间流2;短保护间隔下符号时长为3.2微秒FFT加0.4微秒GI,共3.6微秒。代入公式:
234 × 8 × 5/6 × 2 ÷ 3.6μs
先算分子:234×8=1872,×5/6=1560,×2=3120。除以3.6微秒,得到每秒约866.7兆比特。如果同条件但只支持1条空间流,速率就是433.3Mbps,这也是很多老手机显示"433Mbps"的原因——不是信号差,是手机只有1根天线链路。
再看802.11ax:80MHz下HE格式有约980个数据子载波(子载波间距缩小到78.125kHz,符号时长拉长到12.8微秒),MCS11是1024-QAM,每子载波10比特,编码率5/6,2条空间流,0.8微秒GI下符号时长13.6微秒。代入:980×10×5/6×2÷13.6μs,约为1201Mbps。所以一台Wi-Fi 6的手机在80MHz双流下协商出1200Mbps级别是正常的;要跑满设备包装盒上的2400Mbps,通常需要160MHz频宽加上更好的射频条件才能做到。
2.4 MCS回退:速率不是固定值
这里要强调一个新手最容易误解的点:802.11里每个数据帧的MCS都是动态选择的,这叫速率自适应。上一次100毫秒你可能还是MCS9,下一次信号抖一下可能就掉到MCS7,甚至MCS3。终端状态栏显示的是当下这一瞬间的协商速率,不代表它能一直保持。因此,测试无线速率时一定要多看一段时间内的均值,并同时观察RSSI和重传率,而不是抓一个漂亮的数字就下结论。
根据经验,粗略的对应关系可以这样记:RSSI在-50dBm以上,80MHz下大概率能稳住MCS9到MCS11;-60dBm左右,通常在MCS6到MCS8;到-70dBm,能保住MCS3到MCS5就不错了;低于-75dBm,基本只能维持MCS0到MCS2,这时候的PHY速率可能只有几十Mbps,无论路由器多贵都救不回来。这些不是绝对的阈值,射频实现、干扰和天线增益都会影响,但用来做快速判断足够可靠。
3. OFDM/OFDMA与保护间隔:多径环境下的工程妥协
3.1 OFDM为什么要把一条路拆成几百条小巷子
无线信号在室内传播时会遇到墙壁、金属柜、人体,产生大量反射。同一个比特的多个副本会以不同时间到达接收天线,这叫多径效应。如果符号速率太高,符号变短,反射副本就会"串台",前面的符号尾巴压到后面的符号头上,造成符号间干扰。单载波方案解决这个问题非常吃力,OFDM则用一个聪明的办法绕过去:把一条宽频路拆成几十上百条窄巷子,每条巷子里的符号速率很低,符号时长自然变长,多径副本就撞不上后面符号的脑袋了。
802.11a/g时代的OFDM,20MHz频宽分成64个子载波,符号周期3.2微秒;到802.11ac,80MHz用256点FFT做变换,数据子载波数增加到234个;802.11ax又把子载波间距从312.5kHz缩小到78.125kHz,符号周期拉长到12.8微秒,这样做的直接收益是在同样带宽下子载波数量翻到4倍,同时符号变长后对多径时延的容忍度更高。当然,符号变长意味着每一个符号的单位时间变慢,所以HE格式的速率提升主要来自更多的子载波和更高的调制阶数,而不是单纯变快。
3.2 OFDMA:从"一人独占整条路"到"按需分配车道"
传统OFDM时代,一个用户发送数据时不管包多小,都要占用整个信道带宽。对于视频、文件传输这种大流量没问题,但会议室里几十台设备每隔几秒只发几十字节的心跳包,你会发现信道被一次次地"大炮打蚊子",效率极低。
802.11ax引入OFDMA,把信道在频域上切成若干资源单元(RU),RU有26、52、106、242、484、996音调等规格,最小可以只给一台低速设备分26个音调。AP在HE-SIG-B字段里广播每个用户的RU分配,可以在一秒钟内、同一个物理帧里把不同的子载波块分给多个终端。下行OFDMA由AP统一调度各终端的数据,上行OFDMA则通过触发帧让多个终端在指定RU上同时上发。这就像把原来"一条国道每次只放一辆车"改成"多辆卡车按车道并行运输",对海量小包场景的改善非常明显。我实测过55台终端的会议室场景,开启OFDMA后平均时延和整体吞吐都有肉眼可见的改善。
3.3 保护间隔:宁可慢一点也要稳
保护间隔(GI)的作用是给多径反射留出缓冲带。发射端会把每个OFDM符号末尾一段复制到符号开头,接收端在去掉这段循环前缀时,就把延时较大的反射分量一起"扔掉"了,从而保住后面有效数据的完整性。
传统OFDM默认GI是0.8微秒,短GI是0.4微秒;802.11ax提供了0.8、1.6、3.2微秒三档。短GI能让符号周期缩短约10%,速率相应提升,但如果多径时延超过GI长度,符号间干扰就会抬头,误码率上升。什么场景该用哪档?一般室内办公室0.8微秒足够;大型开放区域、场馆、户外场所这类多径时延大的环境,建议用1.6甚至3.2微秒。这是典型的"低数字好看、实际链路表现难看"的坑——很多网工一上来就选短GI冲速率,结果覆盖边缘的终端频繁重传,整体体验反而更差。
4. MIMO、空间流与波束成形:天线多到一定程度就不灵了
4.1 空间流:收发两端共同决定的并行管道数
MIMO技术的核心是空间流。简单说,一对发射天线和一对接收天线之间若信道独立程度足够高,就能同时传两路不同数据,这就是2条空间流。流数由收发两端的天线链路数中较小的那个决定。一台4x4的AP加上一台2x2的手机,最多只能协商出2条空间流;如果手机天线链路切换到1条,速率直接减半。这不是AP配置问题,是物理层的硬约束。
很多人在部署时抱有不切实际的期待:买了4x4的AP,测出来单设备速率只有双流设备的一半,就怀疑AP有问题。实际上4x4的优势不在于单设备更快,而在于它能用MU-MIMO同时服务多个双流设备。空间流就像高速路的车道数,一辆车再快也只能占一两条道,车道多是用来容纳更多车的。
4.2 MU-MIMO与波束成形:把资源分给不同的人
MU-MIMO让多个设备在同一个时刻、同一个信道里,各自使用不同的空间流并行传输。802.11ac只支持下行MU-MIMO,AP同时向多个终端发送数据;802.11ax补上了上行,终端也能同时向AP发送。和分用户、分频段的OFDMA不同,MU-MIMO是"同一片频率、不同空间方向"的复用,两者可以叠加使用——一个AP可以在某个时刻把一部分子载波块分给A用户,另一部分分给B用户,同时每个用户又各自占用一条空间流。这就是Wi-Fi 6的完整资源调度画面。
波束成形则是让天线阵列把信号能量集中到指定终端方向的技术。AP先发送空的探测帧(NDP),终端根据收到的信号反馈信道状态信息(CSI),AP据此调整各天线的相位和幅度,使发射信号在目标方向同相叠加、在其他方向相互抵消。需要说明的是,波束成形不是把信号功率变大的信号放大器,而是改变能量在空间上的分布形状。它对弱信号边缘设备有明显效果,但前提是终端的反馈质量可靠,且天线阵列的耦合不能太强。
4.3 空间流失效的几种典型场景
第一,视距环境反而会让空间流"串味"。当终端和AP之间几乎无障碍、直达径占绝对主导时,各天线看到的信道响应高度相似,信道矩阵的秩下降,多条空间流难以分离。这就是为什么在空旷大厅里,4x4的AP也可能只能跑出2流甚至1流的速率。
第二,天线耦合过强。AP机身内部多根天线距离太近,互相吸收功率,信道独立度下降,标称的4流实际只能当2流用。这类问题在设备选型阶段就要避开,别只看天线根数,要看实际实测的流数表现。
第三,终端形态受限。手机这类小尺寸设备受天线空间限制,普遍是2x2,个别旗舰机型才上4x4。做容量规划时,不要用"AP流数×终端数"来算可用速率,要按"终端平均流数×同时服务用户数"估算。这是实战中最常被高估的数字。
5. 从PHY速率做排障:一通操作还原无线真相
5.1 终端上怎么快速读PHY信息
排查无线问题,我第一步永远是看PHY速率而不是吞吐。Linux终端上一条命令就够了:
iw dev wlan0 link
输出里tx bitrate一栏会给出当前速率、MCS编号、频宽和保护间隔,比如"866.7 Mbit/s MCS 9 80MHz short GI"。对应的终端级信息可以看iw dev wlan0 station dump,里面有rx bitrate、tx bitrate以及rx retries、tx retries的累计值,这两个重传计数是判断链路质量的关键指标。Windows用户可以在任务管理器里看到Wi-Fi连接速度,或者用netsh wlan show interfaces读取接收/传输速率。手机的话,各厂商入口不一样,但一般都在Wi-Fi详情页里能找到"已连接速度"或"链路速率"。
需要注意的是,这里的速率是瞬时协商值,会频繁变化。要判断稳定水平,我习惯连看20到30秒,记录最高、最低和多数时间的值,再看RSSI和历史重传,而不是抓某一个瞬间就下结论。
5.2 PHY速率高,但实际网速只有一半,正常吗
这个问题的答案取决于你站在哪一层看。PHY速率是无线介质上的原始比特率,包含了前导码、MAC头、帧校验、确认帧、帧间隔以及竞争退避等所有开销。真正到TCP层的有效吞吐,通常只有PHY速率的50%到70%。也就是说,手机显示866.7Mbps,iperf3能跑到400到600Mbps都是正常范围;如果只能跑几十Mbps,那问题就不在协商速率上,而在重传和信道竞争。
判断方法很简单:看station dump里的重传计数。如果retries占总发送量的比例超过10%,说明链路在持续丢包或碰撞,这时候先去查干扰、弱信号、漫游粘滞,而不是反复重启AP。如果重传很低但吞吐还是低,再去检查信道宽度是否被限制、AP的带宽/QoS策略以及网线本身是否有瓶颈。把层分清楚,排障效率会高很多。
5.3 一次真实排障的记录
之前帮A同学所在的小型办公区调无线,遇到一个很典型的情况。AP是支持Wi-Fi 6的,但现场手机连接速度显示只有144Mbps左右,而且靠近AP一两米也是这样,显然不对劲。我的排查过程是这样的:
先在AP侧用iw dev查这个终端的关联状态,看到tx bitrate: 144.4 Mbit/s MCS 7 40MHz,说明链路只有1条空间流,而且工作在40MHz频宽。手机本身支持双流,那问题要么在AP天线/射频,要么在当时的配置。
接下来查AP的射频配置,发现5GHz频宽被设成了40MHz——这是之前为了避开某个DFS雷达信道临时改的,改完忘记改回来。我把频宽改回80MHz后,近距离协商速率立刻升到866.7Mbps,说明射频硬件没有问题。但回到工位再测,速率又掉到200Mbps上下,同时RSSI在-63dBm左右,这个信号强度按理说不至于这么低。最后绕到工位后面才发现,两个工位之间隔着一排金属文件柜,反射路径把SNR搞得很差。调整AP天线角度、把文件柜移开半米后,该工位的PHY速率稳定在400Mbps以上,实际iperf3跑到300Mbps。
这个案例之所以典型,是因为它同时踩了三个PHY层相关的坑:配置上的频宽限制、物理层的多径衰减、以及只看瞬时速率不看重传的惯性。排障时沿着PHY参数一层层往上查,比漫无目的地重启和换信道高效得多。
5.4 抓包时该看哪些PHY字段
如果要用Wireshark深入分析,建议在monitor模式抓包。每个802.11帧前面都会带一个Radiotap头,里面直接写着信号强度(dbm_antsignal)、噪声(dbm_antnoise)、工作频率和信道号、以及数据速率。用wlan.fc.type_subtype == 8过滤beacon帧,可以看到Beacon里携带的HT/VHT/HE/EHT capability字段——支持的最大MCS、空间流数、频宽能力全在这里,这是判断设备能力上限的权威来源。
抓关联过程时,重点看Associate Request里的能力和AP回应的Associate Response,两者取交集就是这台设备实际可用的PHY配置。比如AP支持160MHz、终端只报80MHz能力,那协商速率最高就按80MHz算。这些信息在常规网管后台里未必看得到,但在空口抓包里一目了然。
最后说一点个人体会。PHY层的知识价值不在于背参数表,而在于建立起一张"数字到物理条件的映射":看到MCS 11,你脑子里应该浮现出"好的SNR、低重传、宽频宽"的画面;看到40MHz频宽还跑不满,你会下意识去看是不是有配置或DFS问题;看到高PHY低吞吐,你会立刻把怀疑对象转到重传和竞争上。这种直觉不是看几天文档能形成的,要靠反复对比速率、RSSI、重传和物理环境来沉淀。我建议你下次遇到无线卡顿,先别急着换AP,拿起终端把这几个数字抄下来,对照这里的公式和表格过一遍,八成能自己找到方向。调试无线,最值钱的不是设备,而是你对着PHY速率数字时心里那本明白账。