半双工
同一信道上发射机的泄漏功率淹没本机接收机,无法边发边听。有线 PHY 可以把 TX/RX 做在不同线对或用回波抵消;单射频 802.11 做不到(全双工 Wi-Fi 仍是研究课题,不是现网能力)。
全书物理层和链路层几乎全是有线视角。这一页按抓包能对上的粒度写 802.11 MAC、四地址、接入状态机、PHY 演进、WPA2 四次握手、射频规划、快速漫游和 CAPWAP,蜂窝只点到网元与定位差别。
有线交换式以太网已经是全双工、点到点、误码极低;802.11 仍活在共享、半双工、接收端碰撞的世界。MAC 的每一处怪异——每单播都 ACK、NAV、RTS/CTS、不能 CSMA/CD——都是从这个物理事实推出来的。
同一信道上发射机的泄漏功率淹没本机接收机,无法边发边听。有线 PHY 可以把 TX/RX 做在不同线对或用回波抵消;单射频 802.11 做不到(全双工 Wi-Fi 仍是研究课题,不是现网能力)。
多径、衰落、邻频、微波炉、蓝牙、雷达都在同一段免许可频谱里。FCS 失败是常态,不是事故。所以单播要链路层 ACK + 重传,不能把可靠传输全甩给 TCP。
碰撞发生在接收机,发送机未必听得到。A 和 C 都听得到 B、彼此听不到,就是隐藏终端。这和总线以太网“人人听到同一根铜”完全不同。
STA 不跟对端 STA 直连,帧要经 AP 进 Distribution System。三个地址不够描述「谁发、谁收、最终给谁」,所以有第四地址和 To DS / From DS。
全书 4.3 的 CSMA/CD 有三条腿:先听后发、边发边听、冲突就停再指数退避。无线拆掉了中间那条。
802.11 的替代是 CSMA/CA:冲突避免,而不是冲突检测。发送前听;用 IFS 排出优先级;用随机退避摊开同时结束等待的节点;用 收不到 ACK 推断碰撞或误码;用 Duration/NAV 做虚拟载波侦听,把“我听不到的人”也锁住。
隐藏终端(碰撞在 B) 暴露终端(C 被冤枉推迟)
A ----> B <---- C A <---- B C ----> D
A 听不到 C B→A 时 C 听到 B,按 NAV 闭嘴
两帧在 B 处互毁 但 C→D 并不会毁掉 B→A
隐藏终端伤正确性:B 收到的是垃圾,只能靠缺 ACK 重传。暴露终端伤容量:本可并行的两对通信被虚拟载波侦听串行化。RTS/CTS 主要治隐藏终端;对暴露终端往往更糟——CTS 把更多旁观者的 NAV 拉长。802.11ax 的 BSS Color + OBSS-PD 空间复用,才是针对“听得到但不是本 BSS”的现代对策。
企业网默认 不开 RTS/CTS(dot11RTSThreshold 默认 2347,大于最大 MSDU 2304,等于禁用)。隐藏终端严重(室外桥、隐藏节点多的仓库)再降阈值;办公室高密度里 RTS/CTS 的 20+14 字节控制帧开销通常比它救回来的碰撞还贵。
wlan.fc.retry == 1 看重传率;wlan.fc.type_subtype == 0x1d 看 ACK。重传高而 ACK 稀疏,先怀疑隐藏终端或 SNR,不要先怪 DHCP。基础接入是 DCF(Distributed Coordination Function)。PCF 几乎没人实现。现网 QoS 走 802.11e EDCA(Wi-Fi Alliance 叫 WMM)。聚合和块确认是 802.11n 之后空气时间能用起来的真正原因。
| CSMA/CD(半双工以太网) | CSMA/CA(802.11 DCF) | |
|---|---|---|
| 听 | 物理载波(电压) | 物理 CCA + 虚拟 NAV |
| 发的时候 | 边发边听 | 只发,不听 |
| 冲突怎么知道 | 本地检测到碰撞 | SIFS 后没收到 ACK |
| 冲突后 | Jam + 二进制指数退避 | CW 加倍,下一次 DIFS+backoff |
| 最小帧 | 64 B(争用期) | 无此约束;控制帧可以短到 14 B |
| 单播确认 | 无(丢给上层) | 几乎每条单播 MPDU 都要 ACK(聚合后改 BA) |
| 广播/组播 | 不 ACK | 一般不 ACK,用最低强制速率发 |
| 优先级 | 无(后来有 802.1p) | IFS 长度本身就是优先级 |
帧间间隔越短,优先级越高。关系固定:SIFS < PIFS < DIFS < EIFS。EDCA 再用 AIFSN 把 DIFS 拉成四档。
SIFS 最短:ACK / CTS / 同一 TXOP 内后续 MPDU
PIFS = SIFS + 1×Slot PCF、部分 DFS/信道切换
DIFS = SIFS + 2×Slot DCF 新竞争的起点
AIFS = SIFS + AIFSN×Slot EDCA,按接入类别
EIFS = SIFS + ACKTxTime + DIFS
上一帧 FCS 失败时用,给“我解不出、别人在 ACK”留出空档
| PHY | SIFS | Slot | DIFS | CWmin / CWmax |
|---|---|---|---|---|
| 802.11b DSSS | 10 μs | 20 μs | 50 μs | 31 / 1023 |
| 802.11a OFDM 5 GHz | 16 μs | 9 μs | 34 μs | 15 / 1023 |
| 802.11g ERP(短时隙) | 10 μs | 9 μs | 28 μs | 15 / 1023 |
| 802.11g(有 11b 共存,长时隙) | 10 μs | 20 μs | 50 μs | 31 / 1023 |
| 11n/ac/ax 5/6 GHz | 16 μs | 9 μs | 34 μs | 15 / 1023 |
| 11ax 2.4 GHz | 10 μs | 9 μs | 28 μs | 15 / 1023 |
公式来自 IEEE 802.11:DIFS = aSIFSTime + 2×aSlotTime。11g 的短时隙要整个 BSS 没有 11b 站点才启用;混有 11b 时退回 20 μs 时隙,整网变慢——这是“保护机制有代价”的第一处。
物理载波(能量检测 + 前导检测)和 NAV 都空闲,连续空满一个 DIFS。
从 [0, CW] 均匀取整数个时隙。介质忙则冻结计数器,再空闲 DIFS 后继续减。CW 初值 = CWmin。
Duration 写成“SIFS+ACK”(或整个 TXOP)。旁听者把这个值写入 NAV,不必解出正文。
接收方用 SIFS 回复 ACK(14 字节:FC+Duration+RA+FCS)。ACK 不再被 ACK。
超时无 ACK:CW ← min(2×(CW+1)−1, CWmax),短重传计数 +1。短重传上限 dot11ShortRetryLimit = 7,长帧(走了 RTS)用 dot11LongRetryLimit = 4。成功后 CW 回到 CWmin。
教学口号指单播数据 / 需要确认的管理帧。广播、组播、Beacon、Probe Request、控制帧本身(RTS/CTS/ACK)都不被再 ACK。802.11n 之后单播聚合走 Block ACK,不再是一 MPDU 一 ACK。
每个站点维护 NAV 计数器(微秒)。听到帧的 Duration/ID 且该帧不是给自己,就用它更新 NAV(取较大值)。NAV>0 视为介质忙,即使 CCA 空闲也不能发。这是对隐藏终端的第一道防线:B 听得到 A 的 Duration,C 听得到 B 的 CTS Duration,于是 C 在 A 的数据窗口里闭嘴。
例外:Duration/ID 在 PS-Poll 里装的是 AID(bit 14–15 置位),不是时长。控制帧里 CTS/ACK 只有 Address1(RA),没有 TA。
RTS 20 字节(FC+Duration+RA+TA+FCS),CTS/ACK 14 字节。RTS 的 Duration 覆盖 SIFS+CTS+SIFS+Data+SIFS+ACK;CTS 的 Duration 是 RTS 减去 SIFS+CTS。隐藏的 C 听不到 RTS,但听得到 B 的 CTS,NAV 仍然被锁。
CTS-to-self:发送方先对自己发一个 CTS(RA=自己),把附近旧站点的 NAV 撑开,再发 OFDM 帧。这是 802.11g 在 2.4 GHz 保护 11b 站点的典型手法,比完整 RTS/CTS 便宜,但不解决隐藏终端——隐藏节点听不到你的 CTS-to-self。
802.11e 把一个站点拆成四个队列,各自一套 AIFSN / CW / TXOP。Wi-Fi Alliance 的 WMM 是 EDCA 的互操作子集;HCCA(中心轮询)现网基本没有。
| AC | UP(802.1D) | AIFSN(STA) | CWmin | CWmax | TXOP(OFDM) |
|---|---|---|---|---|---|
| AC_VO 语音 | 6, 7 | 2(AP 常为 1) | 3 | 7 | 1.504 ms |
| AC_VI 视频 | 4, 5 | 2(AP 常为 1) | 7 | 15 | 3.008 ms |
| AC_BE 尽力 | 0, 3 | 3 | 15 | 1023 | 0(一帧就再争用) |
| AC_BK 后台 | 1, 2 | 7 | 15 | 1023 | 0 |
表中 CW 按 OFDM 的 aCWmin=15 代入:CWmin[VO]=(aCWmin+1)/4−1=3,CWmin[VI]=(aCWmin+1)/2−1=7(IEEE 802.11 默认 EDCA 参数表)。AP 的 VO/VI AIFSN 常为 1,比 STA 更霸道——下行语音先于上行。标记错 AC(IP 电话走 BE)比“信号不好”更常见。
最大 MSDU 2304 字节(所以 IP 在 Wi-Fi 上仍按 1500,很少把 MTU 拉满 2304)。HT A-MSDU 3839 或 7935;A-MPDU 上限 HT 64 KiB、VHT 到 1 MiB、HE 更大。
选 RTS/CTS:隐藏节点、室外点对点、CTS-to-self 不够时。代价是每笔聚合前多 20+14 字节加两次 SIFS。
选 CTS-to-self:2.4 GHz 还有 11b 听客,只想让旧站点 NAV,不想付 RTS 往返。
选关保护 + 提高最低强制速率:现代 5/6 GHz 企业网的默认。Beacon/组播不再用 1 Mbps 吞空气。
三种类型(管理 / 控制 / 数据),Type 2 bit + Subtype 4 bit。地址最多四个。和以太网帧的差别不只是“多两个 MAC”。
通用 MAC 头(IEEE 802.11) +-------------+-------------+--------+--------+--------+--------+ | Frame Ctl 2 | Duration 2 | Addr1 6| Addr2 6| Addr3 6| Seq 2 | +-------------+-------------+--------+--------+--------+--------+ | Addr4 6 (仅 ToDS=FromDS=1) | QoS 2? | HT Ctl 4? | Body | FCS 4| +----------------------------+--------+-----------+------+------+
Protocol 2(现网恒 0)· Type 2 · Subtype 4 · To DS · From DS · More Frag · Retry · Pwr Mgt · More Data · Protected · +HTC/Order。
通常是剩余 TXOP(微秒),供旁听者写 NAV。PS-Poll 时高 2 bit 为 1,其余是 AID。
永远是接收机地址。网卡硬件用它决定“是不是给我的”。CTS/ACK 只有这一个地址。
Fragment Number 4 + Sequence Number 12。重传保持同一序号;新 MSDU 加一(模 4096)。
覆盖 MAC 头+正文。Radiotap Flags 里的 Bad FCS 是驱动标的,FCS 本身仍在帧尾。
Wireshark 的 wlan.fc.type_subtype = (type<<4)|subtype。Type:00 管理、01 控制、10 数据、11 扩展(60 GHz 等)。
| type_subtype | 名字 | 谁发 |
|---|---|---|
0x00 | Association Request | STA |
0x01 | Association Response | AP,带 AID |
0x04 / 0x05 | Probe Req / Resp | 主动扫描 |
0x08 | Beacon | AP,约每 100 TU |
0x0b | Authentication | Open / SAE / FT |
0x0c | Deauthentication | 回 State 1 |
0x0a | Disassociation | 回 State 2 |
0x0d | Action | 11k/v/r、测距、WNM |
0x1b / 1c / 1d | RTS / CTS / ACK | 控制 |
0x18 / 19 | BAR / BA | 块确认 |
0x20 / 0x28 | Data / QoS Data | 现网数据几乎都是 0x28 |
0x24 / 0x2c | Null / QoS Null | 省电、保活,无正文 |
以太网两地址就够:点到点链路,DA/SA 即下一跳。802.11 基础设施 BSS 里,STA 把帧交给 AP,AP 再送进 DS(通常是有线交换网)或转给另一个 STA。需要同时写下:接收者、发送者、最终目的、原始源。
| ToDS | FromDS | Addr1 | Addr2 | Addr3 | Addr4 | 场景 |
|---|---|---|---|---|---|---|
| 0 | 0 | DA | SA | BSSID | — | IBSS / 直连 |
| 0 | 1 | DA | BSSID | SA | — | AP → STA |
| 1 | 0 | BSSID | SA | DA | — | STA → AP |
| 1 | 1 | RA | TA | DA | SA | WDS / Mesh / 四地址 |
基础设施 BSS 日常是三地址。STA 上网关:ToDS=1 FromDS=0,Addr1=AP,Addr2=STA,Addr3=网关 MAC。AP 回 STA:反过来,Addr3 是网关(原始源)。四地址只在无线中继(WDS、802.11s、部分网桥、控制器间的某些隧道出口)出现。看到 Addr4 不是“Wi-Fi 总是四个 MAC”。
802.11 头没有 EtherType。数据正文前通常是 LLC/SNAP:AA AA 03 00 00 00 + 两字节类型(08 00 IPv4、86 DD IPv6、88 8E EAPOL)。托管模式抓包时驱动已经帮你拆成以太网 II,你会误以为无线帧本来就长那样。
802.11 最大 MSDU 2304,以太网 MTU 1500。FCS 都是 CRC-32,但覆盖范围和前导完全不同。802.11 还有 Duration、Retry、Pwr Mgt、Protected——以太网没有对等物。
SME 状态不是“连上 Wi-Fi”一句话。802.11 先认证再关联;WPA2/WPA3 的真正密钥在关联之后的 RSNA 握手里完成。Open System 认证成功不等于安全。
| 状态 | 认证 | 关联 | 允许的帧 |
|---|---|---|---|
| State 1 | 未 | 未 | Class 1:管理(Probe/Beacon/Auth)、控制 |
| State 2 | 已 | 未 | + Class 2:Assoc / Reassoc / Disassoc |
| State 3 | 已 | 已 | + Class 3:数据、PS-Poll、部分 Action |
| RSNA 4 | 802.1X/SAE 完成 | 已 | 用 PTK/GTK 保护的数据(Protected=1) |
Deauth → 掉回 State 1。Disassoc → 掉回 State 2(认证缓存还在,可直接再 Assoc)。未关联站点发 Class 3 帧,AP 回 Deauth,reason 7(Class 3 from nonassociated STA)。这是抓包里最容易误判成“被攻击”的正常拒绝。
Beacon 固定字段:Timestamp(64 bit TSF,微秒)· Beacon Interval · Capability。后面是 IE:SSID(tag 0)、Supported Rates(1)、DS Parameter(3,信道号)、TIM(5,省电缓冲位图)、RSN(48)、HT/VHT/HE、WMM、Country、ERP……DTIM 周期在 TIM 里,决定广播/组播何时冲出 AP 缓冲。
0–32 字节
网络名。现网当 UTF-8。空 SSID 的 Beacon = 隐藏(不隐身,只是不广播名字)。
48-bit MAC
一个 BSS 的链路层标识,通常是 AP 该射频的 MAC。MBSSID 下可以是派生地址。过滤器用 wlan.bssid。
多个 BSS 同一 SSID、经 DS 互通,构成 ESS。ESSID 不是标准字段,是对“这个 SSID 所代表的 ESS”的俗称。漫游 = 换 BSSID、不换 SSID。
无 AP。BSSID 由发起 STA 随机生成(本地管理位)。Capability 的 IBSS 位置 1、ESS 位 0。企业网不要用。
Authentication 帧里的 Algorithm Number:0 Open System(两帧,Request/Response,无密码)· 1 Shared Key(WEP 挑战,已废)· 2 FT(802.11r)· 3 SAE(WPA3-Personal)。WPA2-PSK 的认证算法仍是 0——密码验证发生在四次握手,不在这两帧里。只看到 Auth success 就说“PSK 对了”,是错的。
Association Request 带 Capability、Listen Interval、SSID、速率、RSN、HT/VHT/HE、WMM、PMKID 列表(若有缓存)。Response 带 Status(0=成功)和 AID 1–2007。Listen Interval 以 Beacon 间隔计,告诉 AP“我省电时最多睡几颗 Beacon”——AP 按这个给 TIM 留缓冲,太大浪费 AP 内存,太小费电。
Reassociation 用于漫游:请求里多一个 Current AP Address,让新 AP 经 DS 向旧 AP 要缓冲帧(IAPP/802.11F 已撤回,现网由控制器或 11r/OKC 完成)。
修订号是 IEEE 的;Wi-Fi 4/5/6/7 是联盟的市场名。对应关系写错是硬伤。速率是 PHY 峰值,不是用户 UDP 吞吐。
| IEEE | 联盟名 | 频段 | 标志技术 | 单链路量级峰值 |
|---|---|---|---|---|
| 802.11-1997 | — | 2.4 | FHSS / DSSS | 2 Mb/s |
| 802.11a-1999 | — | 仅 5 GHz | OFDM | 54 Mb/s |
| 802.11b-1999 | — | 2.4 | DSSS/CCK | 11 Mb/s |
| 802.11g-2003 | — | 2.4 | ERP-OFDM | 54 Mb/s |
| 802.11n-2009 | Wi-Fi 4 | 2.4 / 5 | HT、MIMO、40 MHz、A-MPDU | 600 Mb/s(4×4、40 MHz) |
| 802.11ac-2013 | Wi-Fi 5 | 仅 5 GHz | VHT、80/160、256-QAM、DL MU-MIMO | ~6.9 Gb/s(8×8、160) |
| 802.11ax-2021 | Wi-Fi 6 / 6E | 2.4 / 5 / 6 | HE、OFDMA、UL+DL MU-MIMO、1024-QAM、BSS Color | ~9.6 Gb/s |
| 802.11be-2024 | Wi-Fi 7 | 2.4 / 5 / 6 | EHT、320 MHz、4096-QAM、MLO、Multi-RU | ~46 Gb/s |
ac 没有 2.4 GHz。盒子上印 Wi-Fi 5 的双频 AP,2.4 GHz 射频仍是 n(或后来的 ax)。
Wi-Fi 6E = 802.11ax 用在 6 GHz,不是新修订号。Wi-Fi 7 才是 802.11be。
n = Wi-Fi 4,不是 5。联盟从 n 开始编号,a/b/g 没有 Wi-Fi 1/2/3 的正式对应(事后有人补过,考试不要用)。
| 2.4 GHz | 5 GHz | 6 GHz(6E/7) | |
|---|---|---|---|
| 覆盖 | 最好,墙损小 | 中 | 最差,近场容量带 |
| 干扰 | 蓝牙、微波、邻家 | 雷达(DFS)、少一些邻家 | 干净;WPA3 强制 |
| 不重叠 20 MHz | 美/中常用 1/6/11 三个 | 数十个(含 DFS) | 更多(UNII-5…8) |
| 典型企业带宽 | 只 20 MHz | 20 或 40(高密用 20) | 40/80,少 160/320 |
| 准入 | 老终端根据地 | 主产能 | 新终端;无 WPA2 开放网 |
信道中心:1 = 2412 MHz,之后 +5 MHz,到 13 = 2472。信道 14 = 2484,仅日本、仅 DSSS。美国 1–11,欧洲/中国 1–13。
DSSS 频谱约 22 MHz 宽,OFDM 20 MHz。1 和 6、6 和 11 之间约 3 MHz 隔离,工程上视为仅有 3 个不重叠信道。1/4/8/11 或 1/5/9 会邻频重叠——ACI(邻频干扰)往往比同频 CCI 更脏:能量在你的带边,解不出却抬高噪声底。
ETSI 有人用 1/5/9/13 挤出第四条 20 MHz,带边仍有交叠,只在全网统一规划时值得谈。
公式:channel = (f_MHz − 5000) / 5。36 = 5180,40 = 5200,165 = 5825。
绑定:40 MHz 用一对(36+40),80 MHz 四个(36–48),160 MHz 八个(36–64 或 100–128)。每加一倍带宽,理论速率约翻倍,可复用的信道数减半,同频碰撞域变大。高密场馆先加 AP、降功率、缩到 20 MHz,不要先开 80。
m×n:k = k 条流。SU-MIMO 服务一个 STA;MU-MIMO 同时服务多个(11ac 仅下行,11ax 上下行)。要高 SNR、信道估计准,小包不划算。MCS:n 用 MCS 0–31(含流数);ac MCS 0–9(256-QAM);ax 0–11(1024-QAM);be 到 13(4096-QAM)。海报速率还要乘流数、带宽、短 GI、编码码率。写进标书前先按单流 80 MHz 算用户体验。
无线排障一半是射频,不是 VLAN。规划目标:每个客户端在目标 RSSI/SNR 下听到 一个 强 AP、两三个可漫游邻居,而不是十个同信道 Beacon。
CCI(同频):两个 BSS 同一信道且能互相听到,就进入同一 CSMA 域,空气时间共享。不是“干扰”这么简单——它们在礼貌地排队。AP 越多、功率越大、带宽越宽,这个域越大,单用户吞吐下降。
ACI(邻频):部分重叠的信道。对方的能量落在你的带边,CCA 行为怪异,误码升,又不能像同频那样用 NAV 协调。所以 2.4 GHz 宁可 1/6/11 三个,不要“每个 AP 错开一个号”。
UNII-2 / 2e 要先听雷达再工作:
代价:AP 重启或 RRM 切到 DFS 信道时,这个射频会静默一分钟(或十分钟)。语音 SSID 要不要用 DFS,是容量 vs 可用性的取舍。假雷达(非 Wi-Fi 脉冲、故障气象设备)会造成整层莫名切信道——排障时看 AP 的雷达事件日志。
6 GHz 没有 5 GHz 那套雷达 DFS。美国等地区把标准功率 / 室外 AP 交给 AFC(Automated Frequency Coordination):AP 带位置查询数据库,避开固定微波等在用频率。室内低功率(LPI)通常不用 AFC,PSD 受限(美区量级 5 dBm/MHz)。VLP 更低,可移动。
6 GHz 强制 WPA3 或 OWE,没有 WPA2-PSK 开放网。扫描用 PSC(每 80 MHz 一个优先扫描信道),全扫 6 GHz 会很慢。
信道复用:2.4 只能三色;5 GHz 20 MHz 可以几乎每 AP 不同色;80 MHz 在一层楼里很容易两三个 AP 同色。先定带宽,再定功率,再跑 RRM(Cisco DCA/TPC,华为无线射频调优,H3C 类似)。RRM 不是把功率推到最大。
radiotap.dbm_antsignal 是捕获 NIC 的天线,不是客户体验。要用控制器的客户端 RSSI,或在客户身边抓。链路加密在 IEEE 802.11i / 联盟 WPA 品牌下。EAP 是 IETF(RFC 3748),802.1X 是 IEEE。抓包能看见四次握手和 EAP 身份交换,看不见 PMK 本身。
RC4 + 24 bit IV + CRC-32 ICV。IV 空间 224,忙 AP 几小时必然重用;Fluhrer–Mantin–Shamir / KoreK / PTW 从 IV 与密钥流恢复 WEP 密钥。ICV 不是加密 MIC,可比特翻转。Shared Key 认证还把挑战明文和密文都交给被动监听者。IEEE 已弃用,现网出现就是事故。
WPA 的 TKIP 是过渡:还是 RC4,加了 per-packet mixing 和 Michael MIC,48 bit TSC。也被打破。只在博物馆终端上作为过渡,新 SSID 不要开。
成对密码默认 CCMP(AES-CCM)。两种认证:
0x888E),AP 当 Authenticator,认证服务器通常是 RADIUS(UDP 1812 / 1813,旧实现 1645/1646)。EAP 方法:EAP-TLS(证书)、PEAP/MSCHAPv2、EAP-TTLS、TEAP、EAP-FAST……MSKs 导出 PMK。关联完成、PMK 已在双方后,Authenticator(AP/WLC)与 Supplicant(STA)用 EAPOL-Key 派生 PTK 并分发 GTK。
PTK = PRF(PMK, "Pairwise key expansion",
Min(AA,SPA) || Max(AA,SPA) ||
Min(ANonce,SNonce) || Max(ANonce,SNonce))
→ KCK (MIC) || KEK (wrap GTK) || TK (data)
再切成 KCK(算 MIC)、KEK(封装 GTK)、TK(加密数据)。
重放或重传 M3 会让部分实现把同一 PTK 再安装一遍并重置 nonce。CCMP 的安全建立在 (key, nonce) 不重复上;nonce 重用即可伪造/解密。Linux/Android 的一个变种甚至把 TK 重装成全 0。补丁策略:已安装的密钥禁止再安装。这是协议状态机实现漏洞,不是 AES 被破解。
PMKID = HMAC-SHA1-128(PMK, "PMK Name" || AA || SPA)。出现在 RSN IE 或 M1 的 Key Data。用途是快速识别缓存的 PMK。副作用:攻击者抓到 PMKID 就能离线撞 PSK(hashcat),不必等齐四次握手。WPA3 SAE 去掉了这条离线路径。
SAE(Simultaneous Authentication of Equals)基于 Dragonfly(RFC 7664),是口令认证密钥交换:双方用口令做有限域/椭圆曲线上的握手,得到 PMK,带前向保密。被动抓包不能拿去离线字典——每猜一次口令必须在线与 AP 完成一次 Commit/Confirm。
认证算法号 3。交换是 Commit + Confirm(可带 anti-clogging token 防算力耗尽)。6 GHz 要求 Hash-to-Element (H2E),不要用旧的 hunting-and-pecking。过渡模式(WPA2+WPA3 同 SSID)仍可能被降级到 PSK 再离线打——要 WPA3-only 才干净。
WPA3-Enterprise:802.1X + 强制 PMF;可选 192-bit 套件(GCMP-256 等 CNSA 向)。OWE(Opportunistic Wireless Encryption,RFC 8110)给“开放网络”做每会话加密,无认证。
未保护的 Deauth/Disassoc 是经典 DoS:任何人冒充 AP 就能踢人。802.11w 给单播管理帧做 CCMP,给广播管理帧做 BIP(IGTK)。能力位:Capable / Required。WPA3 要求 PMF。Beacon 本身的完整保护是后续修订的工作,不要说“开了 11w 所有管理帧都不可伪造”。
一台一台配 Fat AP 在三台以后就会漂移。轻量 AP + AC/WLC 把射频实时留在 AP,把关联、密钥、漫游、射频策略收到控制器。隧道是 IETF CAPWAP,不是 Cisco 私有。
RFC 5415(协议)+ RFC 5416(802.11 绑定)。前身是 Cisco LWAPP(UDP 12222/12223,私有)。
CISCO-CAPWAP-CONTROLLER.<domain>)、组播 224.0.1.140、上次加入的 AC。必须在 10 μs 量级完成的事留在 AP:Beacon、Probe Response、ACK、RTS/CTS、重传、很多实现里的 CCMP 加解密。可以集中的事放 WLC/AC:关联状态机、802.1X、密钥分发、RRM 决策、漫游锚点、用户 VLAN 策略。所以你在 WLC 上 debug client 看得到 Assoc,在空口仍看得到 AP 自己回的 ACK。
| 集中(Cisco Local mode / 华为 tunnel) | 本地(FlexConnect / 华为 direct) | |
|---|---|---|
| 用户数据 | CAPWAP 5247 拉回 WLC 再进有线 | AP 桥到接入交换机 VLAN |
| 选它 | 总部、要统一 ACL/镜像、跨子网漫游简单 | 分支、WAN 细、WLC 远在云端 |
| 代价 | WLC 吞吐与 WAN 是瓶颈;AP 口常做 access | 每站点要规划用户 VLAN;跨 WAN 漫游要锚或别玩 L2 |
| AP 掉控制器 | 现有客户端通常掉 | standalone 可按缓存策略继续转发 |
Cisco 把本地转发叫 FlexConnect(旧 H-REAP);华为 VAP forward-mode direct | tunnel(默认 direct);H3C client forwarding-location ap | ac。混合很常见:员工 SSID 集中,OT/打印 SSID 本地。
集中转发:口上往往只有 AP 管理 VLAN,switchport mode access + portfast 即可,客户端 MAC 不会出现在接入交换机上。
本地转发:必须 trunk,native = AP 管理,allowed = 用户 VLAN。这时交换机能看到客户端 MAC。不要在这种口上开 max=1 的端口安全,第一个客户关联就会违规。
debug client 和 monitor 抓包要对照着看。无线相关的“核心配置”其实大半在有线侧:AP 上联、VLAN、STP 边缘、到 AC 的聚合、用户网关冗余、把网段打进 IGP。SSID 命令三家方言差得远,以设备版本为准。
华为 / 华三看配置是 display current-configuration,不是 show。保存:Cisco end + write(或 copy run start);华为华三 quit 到用户视图再 save。SVI:Cisco interface Vlan20,华为 Vlanif20,H3C Vlan-interface20。
HSRP 是 Cisco 私有;华为没有 HSRP,三家都有标准 VRRP。AireOS WLC 的 LAG 不是 LACP,对端必须 channel-group mode on;C9800 才按交换机那样跑 LACP。
本地转发或多 SSID 多 VLAN 时用。集中转发可改成 access 管理 VLAN。
vlan 10 name AP-MGMT vlan 20 name WIFI-USER interface GigabitEthernet0/1 description AP switchport mode trunk switchport trunk native vlan 10 switchport trunk allowed vlan 10,20,30 spanning-tree portfast trunk spanning-tree bpduguard enable end write
vlan batch 10 20 30 stp bpdu-protection interface GigabitEthernet0/0/1 description AP port link-type trunk port trunk pvid vlan 10 port trunk allow-pass vlan 10 20 30 stp edged-port enable quit save
vlan 10 vlan 20 stp bpdu-protection enable interface GigabitEthernet1/0/1 description AP port link-type trunk port trunk pvid vlan 10 port trunk permit vlan 10 20 30 stp edged-port enable quit save
interface GigabitEthernet0/1 switchport mode access switchport access vlan 10 spanning-tree portfast spanning-tree bpduguard enable
stp bpdu-protection interface GigabitEthernet0/0/1 port link-type access port default vlan 10 stp edged-port enable
stp bpdu-protection enable interface GigabitEthernet1/0/1 port link-type access port access vlan 10 stp edged-port enable
spanning-tree mode rapid-pvst spanning-tree vlan 20 root primary spanning-tree vlan 30 root secondary
stp mode rstp # 出厂默认往往是 mstp,要显式改 stp instance 0 root primary
stp mode rstp stp instance 0 root primary
! C9800 / 交换机侧 LACP interface Port-channel1 switchport mode trunk switchport trunk allowed vlan 10,20,30 interface GigabitEthernet0/1 channel-group 1 mode active ! AireOS WLC 对端必须是静态,不是 LACP interface GigabitEthernet0/1 channel-group 1 mode on
interface Eth-Trunk1 port link-type trunk port trunk allow-pass vlan 10 20 30 mode lacp-static interface GigabitEthernet0/0/1 eth-trunk 1
interface Bridge-Aggregation1 port link-type trunk port trunk permit vlan 10 20 30 link-aggregation mode dynamic interface GigabitEthernet1/0/1 port link-aggregation group 1
HSRP 主必须和该 VLAN 的 STP 根对齐,否则流量先到根再绕去主网关。华为华三只用 VRRP。
interface Vlan20 ip address 10.20.0.2 255.255.255.0 standby 20 ip 10.20.0.1 standby 20 priority 110 standby 20 preempt ! 或标准 VRRP: ! vrrp 20 ip 10.20.0.1 ! vrrp 20 priority 110
interface Vlanif20 ip address 10.20.0.2 255.255.255.0 vrrp vrid 20 virtual-ip 10.20.0.1 vrrp vrid 20 priority 110 vrrp vrid 20 preempt-mode timer delay 0
interface Vlan-interface20 ip address 10.20.0.2 255.255.255.0 vrrp vrid 20 virtual-ip 10.20.0.1 vrrp vrid 20 priority 110
router ospf 1 router-id 1.1.1.1 passive-interface Vlan20 interface Vlan20 ip ospf 1 area 0 ! 用户 VLAN 只宣告、不在上面跑 Hello
ospf 1 router-id 1.1.1.1 silent-interface Vlanif20 area 0.0.0.0 network 10.20.0.0 0.0.0.255 # 或在接口:ospf enable 1 area 0.0.0.0
ospf 1 router-id 1.1.1.1 silent-interface Vlan-interface20 area 0 network 10.20.0.0 0.0.0.255
ip access-list extended GUEST permit udp any any eq 67 permit udp any any eq 68 permit udp any any eq 53 deny ip any 10.0.0.0 0.255.255.255 deny ip any 172.16.0.0 0.15.255.255 deny ip any 192.168.0.0 0.0.255.255 permit ip any any
acl number 3000 rule 10 permit udp destination-port eq bootps rule 20 permit udp destination-port eq bootpc rule 30 permit udp destination-port eq dns rule 40 deny ip destination 10.0.0.0 0.255.255.255 rule 50 deny ip destination 172.16.0.0 0.15.255.255 rule 60 deny ip destination 192.168.0.0 0.0.255.255 rule 70 permit ip
acl advanced 3000 rule 10 permit udp destination-port eq bootps rule 20 permit udp destination-port eq bootpc rule 30 permit udp destination-port eq dns rule 40 deny ip destination 10.0.0.0 0.255.255.255 rule 50 deny ip destination 172.16.0.0 0.15.255.255 rule 60 deny ip destination 192.168.0.0 0.0.255.255 rule 70 permit ip
! 只用于 PC access 口,不要用在 AP trunk interface GigabitEthernet0/2 switchport mode access switchport access vlan 40 switchport port-security switchport port-security maximum 2 switchport port-security violation restrict
interface GigabitEthernet0/0/2 port link-type access port default vlan 40 port-security enable port-security max-mac-num 2 port-security protect-action restrict
interface GigabitEthernet1/0/2 port link-type access port access vlan 40 port-security enable port-security max-mac-count 2 port-security intrusion-mode blockmac
下面给的是各家“WPA2-PSK + AES + 用户 VLAN 20”的最小骨架,不是完整生产模板。Cisco 分 AireOS 与 9800 IOS-XE;华为在 wlan 视图用 profile 拼 VAP;H3C 用 wlan service-template。
wlan CORP 1 CORP shutdown no security wpa akm dot1x security wpa akm psk security wpa psk set-key ascii 0 替换成口令 no shutdown wireless profile policy POL-CORP vlan 20 no shutdown ! 再绑到 policy tag / site tag / AP。以 17.x 为准。
wlan ssid-profile name corp-ssid ssid CORP security-profile name corp-sec security wpa2 psk pass-phrase cipher 替换成口令 aes vap-profile name corp-vap ssid-profile corp-ssid security-profile corp-sec service-vlan vlan-id 20 forward-mode tunnel ap-group name default vap-profile corp-vap wlan 1 radio 0 vap-profile corp-vap wlan 1 radio 1 # 以 V200R0xx 为准
wlan service-template 1 ssid CORP akm mode psk preshared-key pass-phrase cipher 替换成口令 cipher-suite ccmp service-template enable # 再绑到 AP 射频: # interface WLAN-Radio 1/0/1 # service-template 1 # 以 Comware 7 为准
802.1X 骨架:Cisco security wpa akm dot1x + aaa authentication dot1x + RADIUS 1812;华为 security wpa2 dot1x aes + radius-server template;H3C akm mode dot1x + RADIUS scheme。企业网把认证列表、动态 VLAN、CoA(UDP 3799)放到 ISE / 华为 Agile / 华三 IMC,不在这一页展开。
3GPP 的世界:许可频谱、基站调度(不是 CSMA)、SIM 身份、切换是一等公民。只记网元名字和跟 Wi-Fi 的分工,不在这里做 5GC 精读。
| 4G LTE | 5G SA | |
|---|---|---|
| 终端 | UE | UE |
| 基站 | eNB(E-UTRAN) | gNB(NG-RAN,常拆 CU/DU) |
| 核心网 | EPC | 5GC |
| 移动性 / 会话 | MME · S-GW · P-GW | AMF · SMF · UPF |
| 用户数据 | HSS | UDM + AUSF |
| 策略 | PCRF | PCF |
| RAN–核心 | S1-MME / S1-U | N2(gNB–AMF)/ N3(gNB–UPF) |
| 站间 | X2 | Xn |
NSA(非独立):gNB 挂在 4G eNB 下面(EN-DC),核心仍是 EPC/MME,不是 5GC。宣传“我们有 5G”时先问 SA 还是 NSA。SA 才是 gNB + AMF/SMF/UPF。
切换:理想走 X2/Xn(基站之间直接转上下文);走不通才 S1/N2,经核心网。Wi-Fi 漫游默认是客户端做主、断关联再关联;蜂窝是网络做主、目标小区预先准备。
笔记本 Wireshark 看不到空口 LTE/NR(要模组诊断或专用仪表)。能看到的是 UE 后面的 N6/SGi 或 Wi-Fi 侧以太网。手机从 Wi-Fi 切 4G 时,QUIC/TCP 迁移是上层的事(见全书 HTTP/3),不是 802.11 漫游。
同 ESS 换 BSSID 叫漫游。决定权默认在客户端。AP 再强,客户端觉得 −72 dBm“还能用”,就不会走。
| 工具 | 标准 | 做什么 | 代价 / 坑 |
|---|---|---|---|
| 802.11k | 无线电测量 | Neighbor Report:告诉 STA 附近 BSSID/信道 | STA 仍可不理 |
| 802.11v | WNM | BSS Transition Management,AP 建议或请求离开 | 强制踢人会伤劣质驱动 |
| 802.11r FT | 快 BSS 过渡 | PMK-R0 / PMK-R1 层级,Auth+Reassoc 里带密钥,跳过完整 802.1X | 部分安卓/老 NIC 残;MDID 必须一致 |
| OKC | 事实标准 | 同移动组缓存 PMKID,再关联时带 PMKID | 非 11r;跨厂商别指望 |
| PMK 缓存 | 802.11i | 回同一 AP 时跳过 EAP | 换 AP 不够 |
| CCKM | Cisco 私有 | 旧快漫游 | 新网用 11r 替代 |
11r 两种封装:Over-the-air(对新 AP 直接 FT Auth)和 Over-the-DS(经当前 AP 的 Action 帧中转)。苹果对 Adaptive FT / over-the-air 更友善。语音预算通常要整次漫游 < 50 ms;完整 PEAP 往往是几百毫秒到数秒。
密钥层级:PMK-R0 住在 R0KH(通常 WLC),派生 PMK-R1 给 R1KH(AP 或 WLC),再派生 PTK。Mobility Domain IE 必须全网一致,否则 FT 失败回退慢路径,表现为“开了 11r 更掉线”。
治理:降 2.4 功率、抬最低强制速率、开 11k/v、语音 SSID 只上 5/6 GHz、必要时 BTM 引导。不要一上来就“低 RSSI 强制踢”——劣质客户端被踢后会扫很久。
托管模式 NIC 已经加入某个 BSSID,固件 ACK、过滤、解密、再伪装成以太网。你看不到别人的 Beacon、看不到重传、看不到 Management、看不到真正的四地址。Monitor 模式把射频当频谱分析仪:锁定信道,把空中所有 BSS 的 802.11 + 驱动加的 radiotap 交上来。不在那个信道上的帧,你永远抓不到——这是无线和 tcpdump -i eth0 最大的操作差别。
一次成功 FT:Authentication(alg=2)+ Reassociation,中间没有完整 EAP,只有很短的 FTIE。若仍看到完整 PEAP,11r 没谈成。
不要一掉线就扩信道、加功率。先定界:空口状态机、密钥、DHCP/VLAN、还是射频空气时间。
现象 → 空口 M2 循环 → PMK 不一致 → 口令/SSID/VLAN 映射
先抓 monitor:若 Auth+Assoc 成功、EAPOL M1/M2 反复、然后 Deauth reason 15,这是四次握手失败,不是 DHCP。
有线对照:在 WLC 南向口抓,应看到 DHCP Discover 的源 MAC 是客户端(本地转发)或来自 WLC 的隧道解封(集中转发)。空口有 DHCP、有线没有 = 转发模式/VLAN 映射错。
现象 → AP 不 join → 发现/DTLS/时间/版本 → 不是 SSID
f1 + length=4×WLC 数 + 地址十六进制(10.1.1.1 = 0a010101)。华为/H3C 的 option 43 布局不同,抄 Cisco hex 会发现到错误的东西。现象 → 漫游掉话 → 完整 EAP / 粘滞 / VLAN 变了
现象 → 速率低 → 空气时间 / 保护 / CCI / MCS
信号格看的是 Beacon RSSI,不是数据 MCS。查:信道利用率(>50% 先减 CCI)、重传率(>10% 查 SNR/隐藏节点)、是否 2.4 GHz 还开着 11b 保护、是否 80 MHz 但同层三个 AP 同色、是否组播/mDNS 用 6 Mbps 刷屏。IPv6 RA / mDNS 在 Wi-Fi 上是不 ACK 的组播,泛滥时先做 MLD/IGMP 窥探和 mDNS 网关,不要先换 AP 型号。
一栋办公楼 + 两家分支。把本页的选择一次做完,并写下不选另一边的理由。
接入交换机 AP 口:总部 Local mode → access VLAN 10 + portfast + BPDU guard。分支 FlexConnect → trunk,native 10,allowed 20,30,40。两台汇聚跑 RSTP/MSTP,VLAN 20 的根与 VRRP/HSRP 主同一台。不要把 AP 口划进与用户相同的 STP 计算而不做边缘。
总部一对 WLC/AC SSO,CAPWAP 5246/5247 在防火墙显式放行。分支 AP 走 Flex,WAN 只走控制。AireOS 若上 LAG,对端 mode on。OSPF 里用户 VLAN 全部 passive。
CORP:5/6 GHz,WPA3-Enterprise 过渡(仍有老笔记本则 WPA2+WPA3+PMF capable),802.1X,VLAN 20,开 11k/v,11r 在试点网验证安卓后再全开。GUEST:VLAN 30,集中或锚点,ACL 只放 DHCP/DNS/外网。IOT:2.4 GHz,WPA2-PSK,VLAN 40,最低速率 12 Mbps,隔离客户端。
2.4:只 1/6/11,20 MHz,功率比 5 GHz 低 6 dB,密度高的会议室关 2.4。5 GHz:办公 40 MHz,高密 20 MHz;语音 SSID 慎用 DFS。6 GHz:WPA3-only,LPI。小区边缘按 −67 dBm 验收,不按“格满”。
不开全网 80 MHz。不在 AP trunk 上端口安全。不用 WPA2-PSK 承载员工身份(离职收不回口令)。不把访客和 CORP 放同一 VLAN 靠隔离位凑合。不在未验证终端上强制 11r。
先锁信道,再抓。不锁信道的“全频扫描”抓包,帧是碎的,不能当证据。
Wireshark → Capture Options → 勾选该接口的 Monitor Mode。抓管理帧时关掉自己的关联,否则驱动仍可能过滤。解密 PSK:Wireless Toolbar 填口令与 SSID,且 pcap 必须包含该 STA 的四次握手。
不是空中帧。驱动在 802.11 头前面插的元数据:TSFT、Flags(FCS 是否在末尾、Bad FCS)、Rate、Channel、dBm AntSignal、MCS/VHT/HE。PPI 是另一种元数据头。写过滤器时 radiotap.dbm_antsignal 和 wlan_radio.signal_dbm 看你的 Wireshark 版本哪个有值。
| 过滤器 | 命中 |
|---|---|
wlan.fc.type_subtype == 0x08 | Beacon(十进制 8 同样) |
wlan.fc.type_subtype == 0x04 | Probe Request |
wlan.fc.type == 0 | 全部管理帧 |
wlan.ssid == "CORP" | SSID IE |
wlan.bssid == aa:bb:cc:dd:ee:ff | 某个 BSS |
wlan.sa == … / wlan.da | 源 / 目的(注意三地址语义) |
wlan.ra / wlan.ta | 接收机 / 发送机 |
eapol | 四次握手、组密钥 |
eap | 802.1X 方法 |
wlan.fc.retry == 1 | 重传 |
wlan.fc.protected == 1 | 已加密正文 |
wlan_radio.channel == 36 | 信道(依赖 radiotap) |
抓 5 GHz 必须确认监管域和 NIC 是否支持该 DFS 信道。笔记本在 monitor 时是一台干扰源(自己的 Probe)。证据包要注明信道、位置、是否在客户端身旁。对照有线抓包方法见 排障决策树。
mode on。华为默认 STP 是 MSTP。HSRP 华为没有。