简介:这份《wifi 基础知识讲解》文档面向刚接触无线网络的初学者,以及需要梳理基础概念的运维、测试人员,围绕 Wi-Fi 工作原理与常见术语做系统归纳,帮助读者厘清有线与无线网络的差异,建立 802.11 协议族的整体认识。正文从基本概述切入,对比有线网络说明无线通信需先建立连接、采用半双工传输、网络层以下出错概率高、抓包容易以及功耗偏大等特点;随后按时间顺序梳理 802.11a/b/g/n 各协议的工作频段与最大速率,并解释 802.11n 在 MAC 层的改进,如信道合并与 MIMO 多输入多输出;最后逐一讲解 LAN、WAN、WLAN、AP、Station、Assosiate、SSID、BSSID、BSS、DS 等术语及彼此关系。压缩包内共 1 个 doc 文件,体积约 88KB,篇幅精炼,便于随查随用。目前已有 280 人学习,适合作为入门速查与知识补漏的参考。
1. 一张地图先摆出来:wifi 基础知识到底分几层
wifi 基础知识散在各处:协议代号、术语缩写、信道参数、加密方式、帧结构,五摊东西各说各话,单独看都懂,合起来就串不成线。系统梳理一遍会发现它其实是四层:最上面是协议族,802.11a/b/g/n 各自的频段与速率;往下一层是拓扑,AP、Station、BSS、DS 谁跟谁说话;再往下是参数配置,Band、Channel、Channel Width 决定干扰和吞吐;最底层是帧与抓包,管理帧、控制帧、数据帧怎么读。考试和面试真正爱问的不是这四层本身,而是层与层之间的因果:为什么 N 模式要合并信道、为什么 WEP 会把速率拉回 b/g、为什么抓到的包看起来“缺地址”。这份笔记按这四层重排,适合已经翻过一遍资料、需要把碎片串成线的人。
2. 协议与拓扑:802.11 家族、BSS 与 DS 的角色分工
很多人对“无线”两个字的第一个印象来自 3G/4G 这类移动通信,但 wifi 走的是另一套逻辑:它不负责广域覆盖,只解决最后一段接入,所以它的协议设计几乎全部围绕“共享介质、容易出错、需要省电”这三件事展开。理解了这一点,再看 802.11 家族和 BSS、DS 这些组件,就不会觉得它们是一堆孤立的缩写。
以太网用 802.3 做网络层以下的协议,wifi 用 802.11,两者都属于 IEEE 802 协议集,网络层以上基本一样,差别全压在下面这层。
2.1 802.11a/b/g/n 四个协议的时间线与参数
| 协议 | 制定/批准时间 | 工作频段 | 频段宽度 | 最大速率 | 记忆点 |
|---|---|---|---|---|---|
| 802.11a | 1999 年 9 月 | 5GHz | 325MHz | 54Mbps | 频段宽,当年不流行 |
| 802.11b | 1999 年 9 月 | 2.4GHz | 83.5MHz | 11Mbps | 铺得最广的一代 |
| 802.11g | 2003 年 6 月 | 2.4GHz | 83.5MHz | 54Mbps | 速率追平 a,兼容 b |
| 802.11n | 2009 年获批 | 2.4GHz 与 5GHz | — | 600Mbps | HT-40 加 MIMO |
a 和 b 几乎同时制定,命运却完全不同:a 走 5GHz,频段宽度 325MHz,速率上限 54Mbps,但当年 5GHz 射频器件成本高、覆盖特性又不如 2.4GHz,所以用得少;b 走 2.4GHz,只有 11Mbps,却因为便宜、穿墙好而大面积铺开。g 的意义是在 2.4GHz 上把速率做到 54Mbps 并且向下兼容 b,属于平滑升级。
n 的关键不在速率数字,而在 MAC 层的两处改造。一处是信道合并:传输速率很大程度上取决于信道的 ChannelWidth 有多宽,n 允许在传数据时把两个信道并成一个用,这就是 HT-40(high throughput 40MHz)。另一处是 MIMO(多输入多输出),让两对天线在同一个信道上同时传输数据,靠 OFDM 这种特殊调制方式保证彼此不干扰。这两个改动叠加,才有了 600Mbps 这个数字。
2.2 AP、Station、BSS 与两个 ID
术语这一层最容易背完就忘,原因是没和“谁跟谁通信”绑在一起。把下面这张表当成一张人物关系图来看,会好记很多。
| 术语 | 全称 | 一句话理解 |
|---|---|---|
| LAN | Local Area Network | 路由和主机组成的内部网络,一般指有线 |
| WAN | Wide Area Network | 外部更大的网络 |
| WLAN | Wireless LAN | 无线局域网,wifi 属于它 |
| AP | Access Point | 特殊节点,其它节点通过它与内外通信 |
| Station | — | 接入无线网络的设备 |
| Associate | — | Station 加入网络时与 AP 建立关联 |
| SSID | Service Set Identifier | 网络的名字,给人看的 |
| BSSID | Basic Service Set Identifier | 标识一个 BSS,48 位,格式与 MAC 相同 |
| BSS | Basic Service Set | 一组相互通信的工作站,802.11 网络的基本组件 |
| DS | Distributed System | 逻辑组件,负责把帧转发到目的地址 |
BSS 分两类。IBSS 又叫 Ad Hoc,组网是临时的,通信方式是 Station 对 Station,一般不在复习重点里;真正要掌握的是基础结构型网络,通信方式是 Station 到 AP 再到 Station,也就是说无线网络里的设备想通信,都必须经过 AP 这一跳。这个“必须经过”是后面理解 DS、理解帧地址、理解半双工冲突的前提。
SSID 和 BSSID 的关系必须掰开:SSID 是子网的名字,设备扫描时看到的就是它,理论上不扫描、事先知道名字也能直接连;BSSID 是给机器看的,48 位地址格式,通常就是所在接入点的 MAC。SSID 允许重复,把多个路由设成同一个 SSID 正是扩大一个无线网络覆盖范围的做法,漫游的原理就在这里——漫游时 SSID 不变,但 BSSID 一定变。SSID 和 BSSID 不是一一对应:同一个 BSSID 在不同 Channel 上可能对应多个 SSID,但在同一个 Channel 上是一一对应的。
2.3 DS 分布式系统:AP 之间靠什么把帧送到
DS 是 802.11 的逻辑组件,802.11 本身不规定它的技术细节,多数商业产品用桥接引擎加分步式系统媒介共同构成。它的作用是接入点之间转发帧的骨干网络,一般是以太网,也可以是无线媒介 WDS。
拆开看有三层意思。骨干网是媒介,比如以太网;桥接器是有线无线两个接口的接入点里包含的部件;而属于骨干网上的接入点所管辖的 Station,无论和外界通信还是和 BSS 内部通信,都必须经过 DS。原因很直白:外部路由只知道 Station 的 MAC 地址,不知道它挂在哪,必须靠分布式系统才能知道具体位置并正确投递。
还有一条容易被跳过:分布式系统中的接入点之间必须相互传递与之关联的工作站信息,整个系统才知道哪个 Station 和哪个 AP 关联。这条信息同步一旦缺失,帧就会被送到错误的 AP,表现就是“连着网但时通时不通”。
2.4 无线相对有线的六个差别
这六条不是背概念,是解释后面所有机制存在的理由。
- 通信前需要建立连接,有线插上线缆就能通,无线必须先关联。
- 通信方式是半双工,有线可以全双工,所以无线同一时刻只能有一个发送者。
- 网络层以下出错概率非常高,帧重传概率大,必须在底层协议里加重传机制,不能只靠上层 TCP/IP 的超时重传来兜底。
- 数据在无线环境里传输,抓包非常容易,存在安全隐患。
- 收发无线信号功耗大,对电池是考验,于是有了休眠和缓存机制。
- 吞吐量相对有线低,这一点正在改善,802.11n 理论上可以到 600Mbps。
半双工这条直接推出了后面的冲突避免和 RTS/CTS;出错率高这条推出了 ACK 和分片;功耗大这条推出了 DTIM 和缓存。复习时如果能把每条差别对应的机制说出来,这一章就算过关了。
3. 参数与信道:Band、Channel、Channel Width 的取舍逻辑
配置过无线路由的人大概都有体会:页面上参数一大堆,大部分默认值不动,真正需要想清楚的其实只有频段、信道、信道宽度这三项,其余多是锦上添花。但就是这三项,配错了会直接体现在“网速忽快忽慢”上,属于典型的玄学现场。
3.1 Band 与 Channel:频段划分与干扰源
Band 指频率范围,一般 AP 支持 5GHz 或 2.4GHz 两个频段。如果两个频段可以同时设置而不是互斥,这个路由器就能同时支撑两个无线网络,相当于在长波和短波两个范围里各自收音,互不占用。
Channel 是对频段的进一步划分,把 2.4GHz 或 5GHz 的范围再切成几个小频段,每个小频段就是一个信道,配置里能看到“5.18GHz”“Auto(DFS)”这类取值。处于不同信道上的数据,如果信道覆盖范围没有重叠,就不会相互干扰。信道的使用在不同地区有各自的规定,有些信道无需授权即可使用,有些则需要授权,配置时按设备提供的选项走即可。
2.4GHz 这一段尤其拥挤:微波、红外、蓝牙(走 802.15 协议)的工作频段都有落在 2.4GHz 范围内的,它们和 wifi 在不同协议下通信,互相把对方的信号识别成噪声。所以 2.4GHz 上的“干扰”往往不是邻居路由一家造成的,这也解释了为什么同样的位置,5GHz 经常更稳。
Channel 里那个“Auto”选项的含义是:AP 启动时自己扫描周围环境,挑一个干扰最小的信道,选定之后一般不再改变。它的价值在多 AP 环境里才明显,单台路由用 Auto 基本够。
3.2 Channel Width 与 HT-40:合并信道的收益与代价
Channel Width 是信道的带宽,常见取值 20MHz、40MHz,表示一个信道片段的宽度。举个便于理解的算法:假设 5GHz 的频段宽度总共 100MHz,平均划分为互不干扰的 10 个信道,每个信道的宽度就是 10MHz;实际信道并不一定完全不重叠,但这个算法足够说明“宽度是从总频段里切出来的”。
理解了宽度,就理解了配置的连带关系:选了 20MHz 的宽度,再选一个中心频率为 5.18GHz 的信道,意味着以 5.18GHz 为中心的前 10MHz 和后 10MHz 被一起占用。40MHz 就是前后各 20MHz,占用翻倍。802.11n 的 HT-40 正是把两个信道并成一个来传数据,速率上去了,代价是占用的频谱更宽。
这个代价在多 AP 环境里会放大。屋子里 AP 一多,每台都开 40MHz,可用的干净频谱很快被切完,相互干扰的概率反而上升。干扰出现后,协议本身有协调机制,比如让谁先通信、谁等一会儿,但性能一定不如无干扰时。所以血泪经验是:AP 密集的场所,宁可用 20MHz 换稳定,也别死盯 40MHz 的理论速率。
另外不是所有协议都有 40MHz 这个选项,非 802.11n 的设备可能根本不提供,因为合并信道是 N 模式的能力。
3.3 传输速率不等于吞吐量
参数页上的 Transmission Rate 是理论速率,不同协议可设置的范围不同,比如 a/b/g/n 各自的上限差别很大。这里有个必考的区别:Datarate 是理论上最大数据传输速率,Throughput 是实际最大吞吐量。
因为厂家实现、协议开销等各种因素,实际吞吐一般只有理论值的 50% 左右。这个比例不算精确,但作为估算锚点很好用。再给两个直观参照:网络上一路普通视频大约需要 4Mbps 的吞吐,高清视频大约 30Mbps。用这个尺子去量,就明白为什么标着 600Mbps 的设备,跑个高清投屏仍然可能卡——理论值和实际值之间隔着一半。
配置里还有个 Transmission Rate 的选项,实际中由于干扰,真实速率往往比设置的更小。所以这个参数更多是上限约束,不是性能承诺。
3.4 省电与冲突避免:四个常被忽略的参数
Beacon Interval 表示无线路由定期广播 SSID 的时间间隔,一般不用特别设置,用默认值即可。它的作用是告诉范围内的 Station“我还在”,Station 进入一个区域后靠扫描 Beacon 得知这里有没有 AP。如果关掉广播,Station 扫描时可能发现这个网络时有时无,进而断开连接。除了被动接收 Beacon,Station 也可以主动发 Probe 探寻包,询问范围内有没有 AP,这就是常说的主动扫描。
DTIM Interval 和休眠有关。为了省电,Station 可能在一段时间后自动进入休眠,这期间 AP 会替它缓存发给它的数据,休眠中的 Station 只在固定间隔醒来给 AP 发一个帧,确认有没有自己的数据。效果很直观:ping 一台睡眠中的机器,响应时间明显比它清醒时长。
Fragmentation Threshold 是分片阈值,数据包超过这个值,802.11 会自动把它切成若干片。因为无线出错概率远高于有线,分片越小,单次传输出错时只需要重传一个片段而不是整包,成功率更高;但分片要额外的标记信息,还要重组,开销也更大。这是个典型的两头权衡参数。
RTS Threshold 和 CTS Protection Mode 解决的是隐藏节点问题。设想同一个 AP 下的两个 Station A 和 B,因为距离远,彼此看不见,但 AP 都看得见。A 要发数据必须经 AP 转发,如果此刻 B 也在发,AP 会同时收到两边的请求,而无线网络同一时刻不允许两个人传数据。这种互相干扰却互相不可见的节点叫隐藏节点,节点一多,重传概率就上去了。
RTS/CTS 的机制是:A 先广播 RTS 给 AP 表明要发送,收到 RTS 的其它 Station 知道 A 要发数据,先不发声;AP 收到后广播 CTS,告诉范围内所有 Station(包括对 A 而言的隐藏节点 B)“A 要通信了”,B 于是安静下来。默认情况下 Station 发 RTS、AP 发 CTS。设置阈值之后,超过阈值才启用这套握手,小包不值得这个开销。顺带一提,不同网络的工作站之间也能通过 RTS/CTS 清除相互干扰。
3.5 MAC 地址与 Region:两个看着没用实则关键的字段
MAC 是数据链路层的一部分,MAC 地址烧录在网卡里,也叫硬件地址,48 位,16 进制表示。0 到 23 位叫组织唯一标志符(OUI),用来识别厂商;24 到 47 位由厂家自己分配。有些抓包工具会把前三个字节映射成组织名称显示,也可以选择不显示这层映射。
Region 是 AP 上的地区参数,Station 会根据 AP 中设置的 Region 调整发射功率以符合当地的约束。设置过程一般是手动的,设好之后这些信息会随 Beacon 帧广播出去,接入的 Station 从 Beacon 里读到并按此通信。如果 AP 一开始就设错了,Station 会使用不符合规定的频段和功率,可能干扰同一区域内的其它传输,这属于典型的“配错了自己也不知道”的坑。
QoS 在无线里指质量保证,大意是传输时综合考虑各种因素,以一定优先级保证特定要求,通常是速度。带宽足够时 QoS 的作用不明显,紧张时才体现出来。
4. 从加密到帧:WPA2 之后,抓包里还能看到什么
安全和帧这两块放在一起讲,是因为它们在同一次抓包里会正面相遇:加密方式决定了你能看懂多少,帧结构决定了你该怎么读剩下的部分。很多人抓包抓了一堆,看不出所以然,问题往往不在工具,而在于没先搞清楚“这个包是不是被加密的”。
4.1 WEP、WPA、WPA2 与三种加密算法的对应
IEEE 802.11 制定的是技术性标准,Wi-Fi 联盟制定的是商业化标准,后者基本都符合前者。这条关系理清了,下面三代安全标准就不会混。
| 标准 | 时间 | 加密算法 | 说明 |
|---|---|---|---|
| WEP | 1999 年 9 月 | RC4 | 802.11 标准的一部分,弱点较多,2003 年被 WPA 淘汰 |
| WPA | 过渡期 | TKIP | 保留 RC4,属于 CCMP 未完成前的过渡方案 |
| WPA2 | 2004 年 | CCMP | 即完整的 802.11i 标准,也常被写成 AES |
WPA 的存在理由很务实:当时更好的 CCMP 还没完成,只能在 RC4 上打补丁,所以 TKIP 保留了 RC4 的弱点。WPA2 采用 CCMP 加密协定,很多设备的设置页面用 AES 这个字眼替代 CCMP,看到时别以为是两回事。结论就是 WPA2 加 AES 是安全性最强的组合。
4.2 Personal 与 Enterprise:PSK 和 802.1X 两条路
设备参数里常见的 WPA-Enterprise、WPA2-Enterprise、WPA-Personal、WPA2-Personal,其实只是两种认证模式加两个版本的排列。Enterprise 就是标准的 WPA/WPA2,走 IEEE 802.1X/EAP 认证,需要专门的认证服务器。Personal 就是 WPA-PSK/WPA2-PSK,用预共享密钥或口令代替 802.1X/EAP,不需要认证服务器,所以特别适合家用和小型办公环境。
这里有个抓包时才会暴露的细节:Authentication 阶段的开始其实是 Open 的,也就是无授权,看上去连接已经建立好了,验证是“通过”的;紧接着才会走类似 802.1X 的安全加强协议做再次鉴权,若这一关过不了,已经建立的 Association 会被立即断开。这是早期 802.11 没有充分考虑安全留下的历史设计,好处是兼容旧设备。抓包抓到的“认证成功”不等于“最终接入成功”,判断连接是否真正建立,要看后续的鉴权结果。
4.3 三类帧与 DS 字段:地址怎么解析
802.11 的帧分三类:管理帧(Beacon、Association 等)、控制帧(RTS、CTS、ACK 等)、数据帧(承载数据)。帧头部的类型字段会标明属于哪一类。
ACK 帧值得单独记:单播帧都需要 ACK 确认,但 ACK 本身是单播的却不需要再被确认,而且它只有接收地址,没有源地址和序号。原因是发送和接收被视为一个不可分割的原子操作,发送方发出后其它人不会再发,接收方回一个没有源地址的 ACK 就足以说明“我收到了”。理解这一点,看到抓包里“缺地址”的 ACK 就不会以为抓漏了。
Beacon 帧定时广播,通知 AP 的存在,同时携带 Power Save、地区等信息,Station 与 AP 建立关联时也要用到它。Association 帧通常伴随 Probe Request 和 Probe Response,Request 里带着所需的信道与数据速率等状态供 AP 判断,关联是否成功看 Response 里的 Status code 是否为 Success。
数据帧的关键是 DS 字段,两位,分别表示 To DS 和 From DS,其余类型的帧这个字段全零。
| To DS | From DS | 含义 |
|---|---|---|
| 0 | 0 | Ad Hoc 类通信,或控制帧、管理帧 |
| 0 | 1 | Station 接收的帧 |
| 1 | 0 | Station 发送的帧 |
| 1 | 1 | 无线桥接器上的数据帧 |
复习时抓重点看 01 和 10 两种。可以把 DS 大致理解成 AP,To/From 是从 AP 的角度看的,To DS 就是让 AP 干活。但 DS 严格来说不是 AP,而是一个系统,从 Station 的角度理解更顺。数据帧里还有 Sequence 字段表示序号,重传帧序号不变,但会多一个 Retry 字段标识。
那怎么判断一个帧是单播、组播还是广播?看目的 MAC 的第一个字节:第一个位是 1 表示组播,前两位都是 1 表示广播,第一个位是 0 表示单播。注意 MAC 不是数值而是模式,没有大小端之分,也没有谁比谁大。
# 用目的 MAC 的首字节最低位判断帧类型 mac = "a8:27:26:1c:3b:07" first = int(mac.split(":")[0], 16) # 取第一个字节 a8,转成整数 print(bool(first & 0x01)) # bit0 = 0 → 单播;为 1 则是组播 print((first & 0x03) == 0x03) # 前两位同时为 1 → 广播a8 的二进制是 10101000,最低位是 0,所以这是一个单播地址。这段判断在实际读包时很实用:Probe 帧是广播帧所以没有对应的 ACK,对它的回复叫 Probe Response;ACK 本身是单播的,却再也不需要被确认。
4.4 抓包现场:过滤器、端序与设备限制
普通机器上的软件抓无线网卡时,抓到的包目标地址基本都是本机网卡,不是发给本机的包已经被网卡过滤掉了。想抓整个无线环境下的包,需要专门的嗅探设备,配合图形化抓包工具分析。
抓包时有几条基本纪律。第一,先确认包是否完整正确,校验位不对的直接忽略,几乎没有分析价值。第二,由于干扰等原因,抓到的内容可能不是实际传输所处信道上的包。第三,注意包是否被加密:协议里若有 data protected 字段,说明数据本身加密了,看不出具体内容。这里要分清两层:访问网络需要密码(网络是 security 的)是一回事,数据本身被加密是另一回事。第四,注意源地址、目的地址和序号,同一地址上的序号是连续的,除非丢包导致重复或缺失;看到两个 AP 的 MAC 几乎一样,很可能就是同一台设备虚拟出来的多个地址。
过滤器分两种:抓包时设置的是 capture filter,用 BPF 这种通用语言描述,不是某款工具专用的语法;抓包期间的过滤有时不准,所以更稳的做法是先全抓下来,再用显示过滤器筛出关注的部分,复杂条件可以用宏定义。保存时也可以按显示过滤或抓包过滤来存。
设备限制也得提前知道:某些嗅探硬件对信道宽度为 40MHz 的包支持不好,如果非要抓,可以在 36 号或 40 号信道上抓,并在工具里设置信道偏移为 +1(平时偏移是 0),这样能抓到 40MHz 的包,但其它信道上的 40MHz 包仍然抓不到。这是硬件固件层面的限制,不是配置错了。
部分移动系统提供命令行接口,可以直接查看当前连接的 SSID、BSSID、MAC、IP 等信息,排查“到底连到了哪个 AP”时比翻界面快。
5. 易错点排查:五个最容易记混的地方
前面四章是按体系铺开的,这一章换个方向,只挑那些“看的时候觉得懂、用的时候必错”的点。每条都按“错在哪、为什么会漏、怎么补”走一遍。
5.1 易错点一:把 SSID 和 BSSID 当成一回事
易漏点:配置页面上两个字段挨着,名字都带 ID,很容易默认它们一一对应。
为什么漏:SSID 是子网名,BSSID 是 48 位地址,两者在单 AP 环境下确实看起来绑定,一旦涉及多 AP 或漫游就分家了。
怎么补:记住三句话——同一 BSSID 在不同 Channel 上可能对应多个 SSID,但在同一 Channel 上一一对应;扩大覆盖时把多个路由设成相同 SSID,这正是漫游原理;漫游时 SSID 不变,BSSID 必变。实际设备上,路由器的外网 MAC 和内网 MAC 通常只差几位甚至连续,而抓包里的 BSSID 和标注的 MAC 也常常只差最后几位,看到“几乎一样的 MAC”先怀疑是同一设备。
5.2 易错点二:拿理论速率当实际吞吐
易漏点:包装和参数页只写 600Mbps、54Mbps,没人提醒这是 Datarate。
为什么漏:实际吞吐受厂家实现、协议开销、干扰共同影响,没有公式能直接算,只能估。
怎么补:按理论值的一半估实际吞吐,再用业务需求反推:普通视频约 4Mbps、高清约 30Mbps。这样一算就知道,标称 600Mbps 的设备在干扰环境下跑高清投屏仍然可能吃紧,排查时别一口咬定是设备坏了。
5.3 易错点三:开了 WEP 却以为还在 N 模式
易漏点:加密方式在安全设置页,工作模式在无线设置页,两页分开,改完一个不会提醒另一个。
为什么漏:WEP 工作于 802.11b/g 模式,802.11n 草案并不支持这种加密方式,设备不会报错,只会悄悄降级。
怎么补:看到“明明是新设备却只有几十兆”的现象,先去安全页确认加密方式。把加密改成 WPA2 加 AES,N 的性能才发挥得出来。这条在老旧设备混用的环境里尤其常见。
5.4 易错点四:大端小端混着读
易漏点:协议标准描述帧的整体格式时用小端,描述具体字段值时又用大端,同一份文档里两种写法并存。
为什么漏:内存地址用来标记字节而不是位,所以端序在内存层面以字节为单位;但描述帧格式时的位序又确实是另一套规则,两者容易搅在一起。
怎么补:把三句话分开记——以太网线路上按 Big Endian 字节序传送报文,比特序是 Little Endian,字节内最低位先传;协议标准描述整体帧时 b0 排在最前,字段的值按大端写;内存里以字节为单位,
本文还有配套的精品资源,点击获取