尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

WiFi基础详解:从802.11协议到AP配置与抓包实战

WiFi基础详解:从802.11协议到AP配置与抓包实战 简介面向网络初学者与无线技术爱好者文档对 WiFi 的基础知识做了系统整理涵盖基本概念、协议演进和常用术语可作为学习无线网络的入门笔记或课前预习资料。内容先从有/无线网络对比切入说明 WiFi 无需布线、移动方便也存在须先建立连接、半双工通信、下层出错率高、抓包容易、功耗较大等特点随后梳理 802.11a/b/g/n 等协议的工作频段与速率差异并重点解释 802.11n 在信道绑定、MIMO 多天线传输上的改进。文档以条目式结构讲解 LAN、WAN、WLAN、AP、Station、SSID、BSSID 等名词帮助读者扫清术语障碍便于后续深入理解无线网络原理。资源共 1 个 doc 文件、大小仅 88KB内容紧凑、可直接查阅或打印。目前已有 277 人学习下载适合无线网络课程复习或日常速查是一份简洁实用的速查型资料。1. 这份 WIFI 基础文档能帮你把协议术语和后台参数真正对齐最早做 3G/4G 模块调试转到 wifi 项目时对着路由器后台一脸懵SSID、BSSID、Channel Width、RTS Threshold 这些词单个认识组合起来不知道怎么配。后来翻到一位老工程师的《WIFI 基本知识整理》802.11 协议演进、AP 参数含义、帧方向、抓包注意点全在里面是我见过的把基础概念讲得最不绕的资料之一。它的价值不在教你怎么配某台路由器而在把协议原理和后台参数一一对上为什么 802.11n 能用 40MHz 信道、为什么改了加密方式速率掉回 b/g、抓包时 BSSID 为什么和设备标称 MAC 对不上。底子打完后再去看网上那些 wifi 工具分析帖、随身 wifi 刷机教程或者排查电脑 wifi 打不开的问题思路完全不一样。适合刚碰无线的嵌入式工程师、做 AP/STA 联调的人。2. 802.11 协议演进与术语体系先分清什么是给人看的、什么是给机器看的2.1 从 802.11a 到 802.11n速率提升靠的不只是频率802.11 协议族里大多数人对 a/b/g/n 的认知停留在“b 慢、n 快”但这份整理把每个协议的制定时间和频段范围写得很清楚。802.11a 和 802.11b 都在 1999 年 9 月制定a 工作在 5GHz可用频段宽度 325MHz最大速率 54Mbpsb 工作在 2.4GHz频段宽度只有 83.5MHz速率被压到 11Mbps。g 是 2003 年定的继承了 b 的 2.4GHz 频段却做到了 a 的 54Mbps。n 直到 2009 年才被 IEEE 批准2.4G 和 5G 都能工作标称速率拉到 600Mbps。协议制定时间工作频段频段宽度最大速率802.11a1999.095GHz325MHz54Mbps802.11b1999.092.4GHz83.5MHz11Mbps802.11g2003.062.4GHz83.5MHz54Mbps802.11n20092.4GHz / 5GHz视信道配置600Mbpsn 能翻这么多倍关键不在射频前端而在 MAC 层做了两个重要改进。一是 HT-40传输时可以把两个相邻 20MHz 信道合并成一个 40MHz 宽信道再传信道宽度直接决定能塞多少数据相当于把单车道改成双车道。二是 MIMO两对天线可以在同一时刻、同一信道上各自传一路数据配合 OFDM 调制互相不干扰。这两点也解释了为什么后台里只有选了 802.11n 模式才会出现 40MHz 的 Channel Width 选项——速率提升不是单纯把功率加大而是协议层在信道使用方式上做了重组。我建议新接触这份内容的人这样做一遍打开你的路由器后台把无线设置里的模式、频段、信道宽度、加密方式依次和上面的协议条目对照过一遍再拿一台手机连上这个网络记下协商速率。这一遍走完a/b/g/n 的区别和 AP 参数的关系就串起来了。2.2 BSS 与分布式系统为什么 Station 通信必须经过 DS术语这块最容易被绕进去的是 BSS 和 DS。BSS 是 802.11 无线网络的基本组件一组能相互通信的工作站就是一个 BSS。组网方式分两种IBSS 又叫 ADHOC是临时组网Station 之间直接通信今天很多设备开热点直连还保留着这种模式的影子基础结构型则是所有设备都通过 AP 通信Station 想发给谁都得先到 AP 再转出去。我们平时说的 wifi 网络基本都是后者。DS 是 802.11 逻辑组件里最难理解的一个。它是分布式系统负责把帧转发到目的地址802.11 并没规定它的技术细节商业实现里一般由以太网做骨干网络AP 里的桥接控制器同时接有线口和无线口。这里有个容易忽略的细节外部路由只知道 Station 的 MAC 地址不知道这个 Station 挂在哪台 AP 下所以 DS 里的各 AP 之间必须互相传递各自关联的 Station 信息整个系统才能把帧正确送到目标 STA。这也是为什么企业级组网里 AC 要统一管理 AP——本质上就是在维护 DS 工作站的关联表。DS 不一定是有线以太网用无线介质WDS也可以但骨干转发逻辑一样。理解这一点后很多组网问题就有了判断依据比如两个 AP 都开着但 STA 在两个 AP 之间切换不正常多半要查 DS 侧有没有把关联信息同步过来而不是盯着射频参数折腾。2.3 SSID、BSSID 与多 MAC 设备抓包对不上地址的根源SSID 和 BSSID 的差别一句话就能说清SSID 是给人看的网络名字BSSID 是给机器看的 48 位地址格式和 MAC 地址一样。SSID 可以重复这正好被用来扩展无线网络覆盖想让一个固定名字的网络覆盖更大面积就给多台路由设同一个 SSID用户走进哪台 AP 的范围就连哪台。漫游也是这个原理手机在多个 AP 之间切换时 SSID 不变但 BSSID 一定在变。抓包时经常看到 AP 的 BSSID 和路由器标签上标称的 MAC 地址只差几位这不是抓错了而是设备本身可能有多个 MAC。一台 Fat AP路由和 AP 功能在一台设备上通常外网 WAN 一个 MAC、内网 WLAN/LAN 一个 MACBSSID 是无线接口用来标识 BSS 的地址和标签上印的外网 MAC 本来就不要求一致。还有一个细节一个 BSSID 在不同 Channel 上可能对应多个 SSID但在同一个 Channel 内是一一对应的。所以判断某个帧是不是来自目标 AP只能拿 BSSID 说话别拿设备标签去对。3. AP 配置参数逐个拆Channel、安全、RTS/CTS 的决策逻辑3.1 Channel 与 Channel Width先做干扰规划再谈性能Channel 是对频段的进一步划分。2.4GHz 这段 83.5MHz 的带宽被切成若干信道每个信道占用一个片段信道之间如果覆盖范围不重叠就不会互相干扰。2.4G 频段里真正互不重叠的通常只有 1、6、11 三个信道常见做法是相邻 AP 分别选这三个之一而不是大家全挤在 11 上。5GHz 信道数量多、压力小得多这也是为什么设备密集的办公区优先用 5G。Channel Width 是信道宽度。选 20MHz 时以中心频率为界前后各占 10MHz选 40MHz 时相当于把两个信道合并。这个参数在 2.4G 下要慎重2.4G 总共就 83.5MHz40MHz 的宽信道几乎把可用频谱占去一半两个相邻 AP 都开 40MHz 必然重叠。后台里 Channel 选 Auto有些路由叫 DFS时AP 上电后会自动扫描周围环境挑一个干扰最小的信道工作选定后一般不会自己变。所以别太迷信 Auto信道拥挤的现场固定信道往往比 Auto 稳定。Region 这个参数容易被忽略但它直接影响发射功率合法性。AP 的 Region 设置会写进 Beacon 帧Station 关联后按这个地区规定调整发射功率。Region 配错设备和 AP 通信可能用了不符合当地规定的频段干扰到其它合法传输这属于“非法操作”。新建 AP 时第一件事就是核对 Region其次才是信道。另外要记住除了 wifi微波、红外、蓝牙的工作频段也在 2.4GHz 范围内它们对 wifi 来说全是噪声源现场干扰排查时别只盯着 AP 看。3.2 WEP/WPA/WPA2 与加密算法三个版本的安全选型WEP、WPA、WPA2 的演进史基本就是无线安全被不断打补丁的历史。WEP 是 1999 年 802.11 标准的一部分用 RC4 加密弱点太多2003 年被 WPA 淘汰WPA 用 TKIP 算法保留了 RC4 所以仍有隐患只是当时更好的 CCMP 还没完成先用它顶着WPA2 是 2004 年完整的 IEEE 802.11i 标准采用 CCMP 加密协定很多路由器选项里直接写成 AES。所以后台里 WPA2 AES 是安全性最强的组合。这里有个常见的坑WPA-Enterprise 和 WPA-Personal 的区别。Enterprise 是完整的 WPA/WPA2用 IEEE 802.1X/EAP 认证需要 RADIUS 服务器Personal 其实就是 WPA-PSK/WPA2-PSK用预共享密钥pre-shared key / passphrase代替认证服务器适合家用和 SOHO。小办公室选 Enterprise 属于杀鸡用牛刀还要维护一套认证服务器PSK 模式没有验证服务器配置简单代价是密码一旦泄露就得全网改密。更隐蔽的是加密方式对速率的影响。802.11n 草案根本不支持 WEP如果一台 n 设备配置了 WEP 加密它会自动退化到 b/g 模式工作N 的性能完全发挥不出来。排查“路由器支持 300M 但手机只有 54M”这类问题时第一反应应该是看加密是不是 WEP而不是怀疑射频有问题。同理在部分路由器上设了 WPA 却还允许选 AES这类混合配置虽然能用但实际协商结果要以终端支持为准现场别凭后台界面想当然。3.3 RTS/CTS 与隐藏节点什么时候该动这个默认值RTS/CTS 机制解决的是隐藏节点问题。一个 AP 覆盖范围内两端各有一个 Station A 和 B它们彼此距离远互相收不到对方的信号但都能被 AP 覆盖。A 和 B 同时发数据时AP 会同时收到两份请求而无线网络中同一时刻不允许两路传输冲突就发生了A 和 B 还互相看不见于是只能不断重传。RTS/CTS 的流程是A 要发数据前先广播一个 RTS 给 AP告诉“我要通信了”能听到这个 RTS 的站会等一会儿不发声AP 收到后广播一个 CTS通知整个覆盖范围内的所有站包括对 A 而言的隐藏节点 B“A 要开始发了”B 收到就知道 A 存在主动让路。RTS/CTS 让隐藏节点之间通过 AP 间接达成同步A 和 B 哪怕在不同网络上这个机制仍然有效。实际配置时RTS Threshold 是触发阈值当帧长度超过这个值才先发 RTS。默认值通常比较大意味着大多数普通数据帧不触发 RTS。如果现场环境里隐藏节点多、重传严重我一般会把这个值调低让更多帧走 RTS/CTS 流程但要注意RTS 和 CTS 本身也是开销阈值设太小会拖慢小包传输。判断标准很简单看丢包率和重传率而不是凭感觉。3.4 Beacon、DTIM、Fragmentation三个默认参数背后的设计意图Beacon Interval 是 AP 定期广播 SSID 的时间间隔。Station 进入范围后能通过扫描感知 AP 存在扫描分两种方式被动地听 Beacon或者主动发出 Probe 探寻包问“周围有没有 AP”。如果 Beacon 停止广播了Station 可能认为网络消失而断开。这个参数一般保持默认但调试“设备周期性掉线”时值得看一眼 Beacon 间隔和实际发送是否一致。DTIM Interval 和休眠机制直接相关。Station 为了省电会定期睡眠AP 为它缓存数据睡眠的 Station 每隔一定间隔醒来给 AP 发一个帧确认有没有自己的缓存数据。这就是为什么 ping 一台睡眠状态的机器响应时间会明显变长——不是网络慢是它在按 DTIM 节奏醒来。排查“ping 突然多出几百毫秒延迟”问题时优先确认目标设备是否处于省电模式而不是怀疑链路抖动。Fragmentation Threshold 是分片阈值。超过阈值的帧会被拆成多个分片传输分片越小单个分片传输出错的代价越小出错只需重传一个分片但分片头、重组标记这些额外开销也越大。无线环境误码率比有线高得多所以这个参数在信号差的环境里值得调低信号好的场景保持默认即可盲目调小反而降低吞吐。顺带把两个容易混淆的概念放一起说。Transmission Rate 是理论最大数据速率Datarate实际吞吐Throughput要比它小因为协议开销、重传、竞争都吃掉了带宽。经验值大概是理论最大吞吐的 50% 左右——直观点说高清视频需要的吞吐也就 30Mbps 左右普通网络视频 4Mbps 左右。所以看到后台里协商速率是 300M别指望实际能跑满 300MB能到 150M 已经算不错了。QoS 也是同理它是在带宽不足时按优先级保特定业务带宽充足时反而不需要它。4. 帧结构、DS 方向与大端小端抓包分析的理论地基4.1 三类帧与 ACK 确认规则802.11 帧分三类管理帧、控制帧、数据帧。管理帧负责连接过程典型的是 Beacon定时广播证明 AP 存在、Probe主动扫描时发出去询问有没有 AP、Association关联请求与响应控制帧负责介质协调典型的是 RTS、CTS、ACK数据帧就是承载数据的载体。帧头里的类型字段会标明它属于哪一类抓包时第一眼先看类型再往下读别一上来就盯着地址字段看。ACK 机制值得单独拿出来说。单播帧都需要 ACK 确认但 ACK 帧本身既没有源地址也没有序号只有一个接收地址字段它不需要再被确认。协议把“发送单播帧 收到对应 ACK”看作一次原子通信。广播帧和多播帧不需要 ACK例如 Probe Request 是广播帧就没有对应的 ACK回复它的是 Probe Response。判断方法是看目的 MAC第一个字节的第一位是 1 表示组播、前两位都是 1 表示广播、第一位是 0 表示单播。4.2 DS 字段四位组合一眼看出上行还是下行Data 帧和别的帧最大的区别是它带方向方向由 DS 字段标记。DS 用两位表示 To DS 和 From DS从 AP 的角度理解To DS 是让 AP 干活一般叫上传Station→APFrom DS 是 AP 往下发一般叫下载AP→Station。其它类型的帧如管理帧、控制帧这个字段是全零。四种组合的意义如下表To DSFrom DS含义00Station 间 ADHOC 通信或管理帧、控制帧01Station 正在接收的帧AP→STA10Station 正在发送的帧STA→AP11无线桥接器上的数据帧WDS 转发抓包时判断上下行先看 DS 组合再结合帧里的源、目的、BSSID 三个地址就能拼出完整的转发路径。很多人只盯着 source/destination 看忽略 DS 字段结果分不清哪个地址是 AP、哪个是终端。4.3 大端小端字节序在抓包里的实际表现大端小端在抓包里特别容易把人绕晕。802.11 帧在线路上是按 Little Endian小端方式传输的一个字节一个字节地传低位字节先走但协议标准在描述某个字段的取值时习惯用大端方式书写。所以你会看到协议文档里帧格式的位图从左到右按 b0、b1、b2……排说的是传输顺序解释字段值时却按数值大小端书写。Wireshark 展示的时候按它自己的方式把字段解析成我们熟悉的十六进制基本不用手动算但了解底层逻辑有助于读协议原文时不被误导。MAC 地址本身是个 Pattern 而不是数值没有“哪个位更高”之说。但判定单播/组播时看的是第一个字节的最低位比如 MAC 01-80-C2-00-00-00 里的 01 是 00000001最低位是 1表示组播。需要注意的是线路上实际 bit 顺序是反的01 传出去时先传最低位也就是 10000000 开头。如果你用工具按字节比对 MAC会看到原始 bit 流和十六进制表示不一致这不是工具坏了是字节序和位序的问题。另一个容易混淆的点内存里的大端小端是按字节为单位不是按位。一台 32 位小端机器表示整数 1 时内存里从低地址到高地址依次是 01、00、00、00而不是 10、00、00、00。搞清楚这个区别再看那些讲“抓包字节序”的文章就不会被绕进去了。4.4 加密帧的可见性动手分析前先判断能不能分析抓包分析前还要确认一件事帧是否加密。协议标准里有个 data protected 字段置位说明数据本身被加密了不知道原文就不知道这个包到底是干什么的。注意这里的数据加密和网络加密是两回事网络可能是开放式的连入不需要密码但数据帧照样可以加密反过来网络访问需要密码也不代表每个数据帧的 payload 都加密了。Wireshark 提供按密码解密的工具但实际用起来不那么灵光。我更习惯的做法是先看帧头部里的加密位确认非加密帧再分析对加密帧只统计方向和大小不去纠结 payload 内容——那已经进入密码学分析的范畴了。抓包时如果发现大量帧内容不可读先别怀疑工具坏了先确认这个网络是不是开了加密。5. 抓包实战避坑五个翻车现场的现象、原因、解决5.1 坑一校验位不对的包被当成有效数据现象Wireshark 里检查 checksum 显示 incorrect 或 no checksum却继续分析这个帧的地址和字段甚至拿它统计流量。原因无线环境下扰、信号弱、抓包工具丢字节都会造成帧损坏。校验位不对说明接收方无法确定数据哪里错位任何字段解析都不可信。这类帧没有分析价值应该直接忽略。解决分析前先把坏帧剔掉。常见做法是用 Wireshark 的显示过滤器筛掉 FCS 校验失败的帧再只统计有效帧。还有一点值得记住抓包阶段设置的 capture filterBPF丢了就回不来了所以我一般先把所有包抓下来存好再用显示过滤器分析这样后悔药随时有。# 只保留 FCS 校验通过的帧wlan.fcs.status 字段名因版本可能有差异 wlan.fcs.status 15.2 坑二在 Channel 1 上嗅探却抓到 Channel 2 的包现象设备和嗅探器明明锁定在 Channel 1抓到的包里却混着 Channel 2 对应的帧统计出来的数据跟现场对不上。原因相邻信道频率靠得近滤波器不是理想的能量会串进相邻信道。尤其 AP 多、信道密集的办公环境串扰很难避免。这也解释了为什么有时候在 Channel 1 上抓包却看到 Wireshark 里显示 BG1 这样的标识——它在提醒你这是 BG mode 的 Channel 1 上出现的帧但来源不一定可靠。解决抓包前先确认当前信道分析时用工具查看实际出现的信道分布对来源存疑的帧做标记或过滤。更稳妥的做法是分析时只看目标 BSSID 的帧其它信道的串扰帧自然就被排除掉了。5.3 坑三40MHz 宽度下抓包直接没数据现象把 AP 设置成 40MHz Channel Width 之后嗅探器抓不到包或者抓到的是乱码。原因这是硬件限制。AirPcap 一类的嗅探器芯片固件对 40MHz 带宽支持不好无法正常抓取 40MHz 宽信道上的帧这是芯片厂商不愿意花精力维护这个功能导致的。解决如果非要抓 40MHz 的包在 40 或 36 号信道上抓并在 Wireshark 里设置 channel36、offset1平时 offset 是 0可以抓到一部分 40MHz 的帧其它信道上的 40MHz 包基本没办法。这也是为什么我建议现场排查时先把 AP 临时改成 20MHz抓完再改回去——为了一个抓包动作把带宽降一半总比抓不到数据强。5.4 坑四BSSID 和设备 MAC 对不上就以为抓错了现象抓包看到一个 AP 的 BSSID和路由器标签上的 MAC 地址不一样以为自己没抓到目标网络白白重抓一遍。原因BSSID 是无线接口用来标识 BSS 的地址宿主的设备上通常有多个 MACWAN 口一个、LAN 口一个、无线接口一个。标签上印的往往只是 WAN 口 MACBSSID 和它差几位甚至差很多都是正常的。解决判断某个帧是不是来自目标 AP用 BSSID 做匹配。同一台设备如果虚拟出多个 BSSID它们的地址往往只有少数几位不同看到地址几乎一样的情况多半是同一台设备的多个虚拟接口。定位时用 OUI 查前三位确认厂商再结合 BSSID 变化判断 AP 是否在漫游切换。5.5 坑五广播帧没有 ACK被当成丢包现象抓包看到 Probe Request、Beacon 这类帧发出去后没有 ACK 回复以为数据丢了开始怀疑链路质量。原因广播帧和多播帧本身就不需要 ACK单播帧才需要。不是所有帧都必须确认这是 802.11 的机制设计。解决先判断目的地址类型。MAC 第一个字节的最低位为 1 是组播前两位为 1 是广播最低位为 0 才是单播。单播帧没有 ACK 才需要检查重传Retry 字段置位广播帧没 ACK 是正常现象。分析时可以用过滤器分类# 管理帧Beacon/Probe/AssociationFrame Control 的 type0 tcpdump -i wlan0 -e wlan[0] 0x0c 0x00 # 数据帧type2对应 wlan[0] 0x0c 0x08 tcpdump -i wlan0 -e wlan[0] 0x0c 0x08注意普通无线网卡在 managed 模式下会把非本机目的帧过滤掉要抓所有经过的帧得先把无线网卡切成 monitor 模式或者使用 AirPcap 一类嗅探硬件否则抓到的数据永远只有你自己那台设备的流量。6. 进阶验证用 wpa_cli 把协议知识变成排障能力学完这些基础怎么验证自己真懂了我习惯用的方法不是重新读一遍文档而是拿一台 Android 设备或 Linux 设备走进一个陌生的无线环境用命令把连接事实一条条拉出来。wpa_cli status # 输出里重点看ssid / bssid / freq / ip_address / key_mgmt这些字段就是前面所有概念的现场对照。SSID 是当前连的网络名字BSSID 是当前 AP 的地址freq 是工作频率ip_address 是拿到没拿到 IPkey_mgmt 是认证方式。设备连上了 wifi 但没有网络——很多人遇到的“dhcp 关闭后连不上 wifi”就是典型——先看 ip_address 字段就能定位阶段看不到 IP说明卡在 DHCP 阶段能看到 IP 但上不了网才需要怀疑路由和上层。另一种常见场景是电脑 wifi 打不开、点开又关闭先别急着重装驱动在设备里确认无线接口是否被系统识别、驱动是否在报错。很多这类问题不是硬件坏了而是 wlan 服务状态或驱动配置的问题。信道上也能验证用扫描工具看看周围每个信道的 AP 分布画一张信道占用图再对照前面讲的 Channel 重叠规则就能规划出当前环境最优的固定信道。做过一次这样的空间规划后再去看那些说“信道选 Auto 就行”的说法就知道 Auto 只是上电时的初始选择不稳定环境里不如固定到干扰最小的信道。从那以后我每次接手一个 wifi 项目都强制先走一遍 wpa_cli status 拿连接事实再翻协议文档对参数而不是凭感觉改路由器后台。这个习惯帮我避开过无数次先改配置后查原因的弯路希望帮到你。本文还有配套的精品资源点击获取
返回列表