简介这是一份面向网络入门学习者与无线通信初学者的基础资料围绕 WiFi 的技术脉络梳理常见概念与协议细节帮助读者解决术语混杂、协议版本分不清、组网组件职责模糊等入门难点。压缩包内共 1 个 doc 文档约 88KB内容以文字讲解与要点罗列为主适合作为课堂笔记或自学提纲使用。资料从有线与无线网络对比切入说明半双工通信、空口易抓包、功耗偏高等特性并逐一介绍 802.11a/b/g/n 各协议的工作频段与最大速率重点解释 802.11n 的信道合并与 MIMO 改进随后系统辨析 LAN、WAN、WLAN、AP、Station、Associate、SSID、BSSID、BSS、DS 等常用术语配合实践参数说明 MAC 地址等底层概念便于建立从网络层以下到组网结构的整体认识。目前已有 280 人学习适合希望快速搭建 WiFi 知识框架的读者查阅。1. 无线基础地图先认清 802.11 的知识分层再决定背什么复习 wifi 基础知识最容易走的一条弯路是从速率表开始背802.11b 是 11Mbps、g 是 54Mbps、n 是 600Mbps数字记得很熟一到配信道、看抓包就卡住。真正撑起这套知识的是分层最上面是协议演进回答 a/b/g/n 各自在哪个频段、天花板多高中间是术语与组网Station、AP、BSS、DS 这几个词决定了你画不画得出拓扑再往下是参数与安全Band、Channel、Channel Width、WEP/WPA/WPA2 决定了设备能不能通、通得稳不稳最底层是帧结构与抓包判读决定你排障时看到的是证据还是噪声。手机在 4G 和 wifi 之间来回切换的场景每天都在发生但蜂窝网和 WLAN 解决的问题并不相同别混着记。这份整理按这四层展开最后收在一份易错清单上适合系统学一遍的人也适合复习时按层定位盲区。2. 协议演进线802.11a/b/g/n 的参数表与四个硬差异以太网和 wifi 都属于 IEEE 802 协议集差别在网络层以下以太网用 802.3 做网络层以下的协议wifi 用 802.11。网络层以上的部分两者基本一样所以学 wifi 时真正要花时间的是 802.11 这一层往下的事。802.11 本身是一堆子部分的总称按时间顺序排下来a、b、g、n 四代是最常被问到的一组把这四代的参数对齐后面讲信道、讲速率、讲兼容性才有落点。2.1 四代协议的关键参数对照协议制定时间工作频段频段宽度最大传输速率记忆点802.11a1999 年 9 月5GHz325MHz54Mbps定得早当时不流行用得少802.11b1999 年 9 月2.4GHz83.5MHz11Mbps时间比 a 稍晚速率低但铺得开802.11g2003 年 6 月2.4GHz83.5MHz54Mbps在 b 的频段上把速率拉到 54Mbps802.11n2009 年获批准2.4GHz 与 5GHz 均可依信道合并情况而定600MbpsMAC 层有重要改进性能跳了一大截这张表要抓两个变量。第一个是频段2.4GHz 和 5GHz 不是「新旧」关系而是穿透能力、可用带宽、干扰环境完全不同2.4GHz 的频段宽度只有 83.5MHz5GHz 有 325MHz后者能塞下更多互不重叠的信道。第二个是速率表里的数字都是理论值802.11n 的 600Mbps 需要信道合并和多天线同时成立才拿得到实际能跑出多少是另一回事。选型上的直觉也能从表里读出来a 和 b 同一年制定a 的速率高、频段宽但当时 5GHz 的器件成本高市场没起来b 速率低却先普及于是 g 必须兼容 b到了 n双频加 MAC 层改进才把「无线能不能替代一部分有线」这件事变得可谈。复习时如果只背速率不背频段遇到「为什么 2.4GHz 容易挤」这类问题就答不上来。2.2 802.11n 的两处硬改进HT-40 与 MIMO802.11n 之所以被单独拿出来讲不是因为数字大而是它在物理层和 MAC 层都动了刀。第一处是信道合并传输速率在很大程度上取决于 Channel 的 Channel Width 有多宽802.11n 允许在传数据时把两个信道合并成一个再传也就是常说的 HT-40high through。原本一个信道 20MHz合并后 40MHz单位时间能搬的比特数直接翻倍这是最直观的一刀。第二处是 MIMO多输入多输出。它让两对天线可以在同一时刻、同一个 Channel 上传输数据而彼此不相互干扰靠的是 OFDM 这种特殊的调制技术。这句话里的每个限定词都重要同时、同信道、不互扰。传统理解里「同一个信道同一时刻只能有一个设备在发」MIMO 是在天线维度上开了空间复用的口子不是推翻了半双工的基本规则。这两处改进也各自带着代价。HT-40 在 5GHz 上还好放到 2.4GHz 就接近把整个频段吃满周围只要还有别的 AP干扰概率立刻上去MIMO 要求天线数量和射频链路对得上设备标称支持不代表每根天线都能满速跑。梳理下来会发现802.11n 的参数表里那个 600Mbps是「40MHz 多流 理想信噪比」三者同时成立的结果把它当成日常速率去规划网络属于典型的期望管理失败。2.3 无线相对有线的六个本质差异这六条差异是整份知识的地基后面讲重传、讲 RTS/CTS、讲抓包根子都在这里。第一通信双方是通过无线通信所以通信之前需要建立连接而有线网络插上线缆就能通没有这个过程。这就是后面 Association关联存在的理由。第二无线是半双工通信有线可以是全双工。半双工意味着同一时刻只能有一方在发于是必须有机制决定「谁先发」冲突避免、退避、RTS/CTS 全是这条差异的下游产物。第三通信时在网络层以下出错的概率非常高所以帧的重传概率很大必须在网络层之下的协议里加重传机制不能只依赖上层 TCP 的延时等待重传来兜底。原因很实在TCP 重传的时间粒度和开销在这个场景下太粗空口错一回等一次超时体验就崩了。这也是为什么 802.11 的 ACK 是帧级别的、即时的。第四数据在无线环境里传输抓包非常容易存在安全隐患。有线要在物理上接入才能嗅探无线只要在覆盖范围内就能听这是 WEP、WPA 这一整套安全机制存在的现实压力。第五收发无线信号功耗较大对电池是个考验。这条直接解释了 DTIM、Power Save 这些看起来莫名其妙的参数。第六相对有线网络吞吐量低但这一点正在逐步改善802.11n 理论上可以到 600Mbps。注意这里说的是吞吐量而不是标称速率两者在下一章会专门拆开。把这六条连起来看会发现它们不是并列的六个知识点而是一条因果链半双工 → 需要协调 → 协调靠帧 → 帧会丢 → 要在链路层补重传 → 重传和协调都费电。复习时能把这根链条讲顺比单独记住六句话有用得多。3. 术语与组网结构Station、AP、BSS 到 DS 的关系网无线网络里的术语密度很高而且不少协议原文是英文描述翻译过来容易有歧义所以有些词直接记英文反而更准。这一章的目标不是背单词而是能在一张纸上画出「谁连谁、帧怎么走」的拓扑图。画得出来后面看 DS 字段、看抓包地址才不会晕。3.1 六个必须分清的术语术语含义容易混的地方LAN局域网路由和主机组成的内部网络一般为有线日常说 LAN 多数指有线那一侧WAN广域网外部更大的网络和 LAN 是相对概念不是技术差异WLAN无线局域网无线场景下的 LAN不要和 LAN 混用AP接入点无线网络中的特殊节点和无线路由常常在同一台设备上但概念不同Station工作站接入无线网络的设备不只指电脑手机、平板都算Associate关联Station 加入无线网络的动作是动作不是设备连接成功才叫关联上补两个必须一起记的SSID 用来标识一个无线网络是网络的名字BSSID 用来标识一个 BSS格式和 MAC 一样是 48 位。SSID 是给人看的BSSID 是给机器看的这句话在排障时能救很多次场。3.2 BSS 与 IBSS两种组网两条通信路径BSSBasic Service Set由一组相互通信的工作站组成是 802.11 无线网络的基本组件分两种类型。一种是 IBSS又叫 Ad Hoc组网是临时的通信方式是 Station 和 Station 直接通。这种模式没有中心节点适合几台设备临时互联但在实际网络里出现得少复习时知道它存在即可。另一种是基础结构型网络通信方式是 Station 经 AP 再到 Station也就是所有无线设备想通信都得经过 AP。这是真正要花力气理解的一种AP 不只是「信号放大器」它是整个 BSS 的协调者。为什么必须过 AP回到上一章的半双工——一个 BSS 里所有 Station 共享同一个信道如果没有一个中心节点做仲裁和转发冲突概率会高到不可用。基础结构型网络里最重要的两类设备就是 AP 和 Station这句话看着平淡其实把组网的骨架说完了。3.3 DS 分布式系统三个职责与「外部路由只知道 MAC」的后果DSDistributed System分布式系统是 802.11 的逻辑组件负责把帧转发到目的地址。802.11 并没有规定它的技术细节大多数商业产品用桥接引擎加分步式系统媒介共同构成。这段话之所以绕是因为 DS 不是一个具体的盒子而是一套「把多个 BSS 连起来」的机制。拆开看它有三个要点。其一骨干网一般是以太网这是 DS 的媒介而不是 DS 的全部其二桥接器具有有线和无线两个网络接口的接入点里就包含它其三属于骨干网上的接入点所管辖的基础性网络里的 Station要和外网或者 BSS 内部的 Station 通信必须经过 DS而外部路由只知道 Station 的 MAC 地址不知道它挂在哪个 AP 下面所以也得靠分布式系统才能定位并正确送达。还有一个容易被忽略的职责分布式系统中的接入点之间必须相互传递与之关联的工作站信息这样整个 DS 才知道哪个 Station 和哪个 AP 关联才能把帧转给正确的 AP。这条信息同步不做表现就是「换个房间网络就断」。DS 的媒介也不一定是以太网用无线媒介的 WDS 也算。一句话概括BSS 解决「一个 AP 覆盖范围内怎么通」DS 解决「多个 BSS 之间怎么通」。把这两个层次分开拓扑图就不会画成一团。3.4 SSID 与 BSSID给人看的名字和给机器看的地址SSID 表示一个子网的名字无线路由通过这个名字为其它设备标识这个子网。设备扫描时会把相应 SSID 扫到然后选择对应的 SSID 连接理论上不扫描、直接指定已知 SSID 也能连。SSID 可以和别的网络重复扫描时会看到两个同名网络这一般用于扩大一个无线网络的范围想要扩展同一个 SSID 的覆盖时给多个路由设置相同的 SSID 就能做到。这就是漫游的原理人从楼这头走到那头网络名字没变但背后服务的 AP 换了。BSSID 的格式和 MAC 地址一样是 48 位一般来说它就是所处无线接入点的 MAC 地址。它和 SSID 不一定一一对应一个 BSSID 在不同的 Channel 上可能对应多个 SSID但在同一个 Channel 上是一一对应的漫游的时候虽然 SSID 不变BSSID 一定会变化。这句话是判断「到底漫游了没有」的关键依据。实际设备上还有一层容易绕晕的地方一个同时包含路由功能和 AP 功能的无线路由器Fat AP很可能有两个 MAC一个用于外网 WAN一个用于内网 WLAN 和 LAN而设备外壳或配置页面上往往只标注外网那个 MAC内网 MAC 和外网 MAC 一般只差几位甚至连续也有相差很多的例外。抓包时看到 AP 的 MAC 地址和 BSSID 只差几位不必惊讶那多半就是同一台设备。实际设备的 MAC 和 BSSID 之间并没有强制的对应关系BSSID 更像这个设备在无线侧使用的一个标识。4. 参数与安全Band、Channel、Width 及 WEP/WPA/WPA2 的对应关系这一章是配置页上的东西。参数之间是嵌套关系不是并列关系先选频段频段里划信道信道再定宽度。安全选项则是另一条线和加密算法绑定。两条线各自独立但都会影响最终能不能跑满速。4.1 Band、Channel、Channel Width三层嵌套的频段划分Band 是频率范围。一般 AP 可以支持 5GHz 或 2.4GHz 两个频段如果两者同时可以设置而不是互斥那这个路由器就能同时支持两种频段相当于这个 AP 可以建立两个无线网络它们采用不同的频段。这个类比很直观类似收音机在长波范围内收音和在短波范围内收音一台机器两套波段互不干扰。Channel 是对频段的进一步划分把 5GHz 或者 2.4GHz 的范围再切成几个小频段每个小频段就是一个 Channel配置里会看到 5.18GHz、Auto(DFS) 这类取值。不同传输信道上的数据如果信道覆盖范围没有重叠就不会相互干扰。信道的使用在国际上有规定其中有些信道无需授权即可直接使用具体是哪个频段哪个信道各个国家不同无需授权的意思是传输数据时可以让设备收发的功率导致数据进入该信道并在该信道所在频段宽度内传输授权信道则不允许随便占用否则会干扰该信道上其他数据的传输。Channel Width 是信道的带宽有 20MHz、40MHz 等表示一个 Channel 片段的宽度。举个例子在 5GHz 上选 20MHz 的宽度再选 5.18GHz 这个 Channel就意味着以 5.18GHz 为中心的前 10MHz 和后 10MHz 被占用。这个参数依赖其它选项不是 802.11n 的协议可能就没有 40MHz 的 Channel Width因为 N 模式的特点就是能把两个信道合并通过提高 Channel Width 来提高吞吐量。三层的关系可以这样记Band 决定「在哪片地」Channel 决定「在这片地里的哪一块」Width 决定「这块地你占多宽」。占得越宽速率越高撞上别人的概率也越大。4.2 信道规划为什么相邻 AP 要错开2.4GHz 的频段宽度只有 83.5MHz而一个 20MHz 的信道就要占掉一段能真正互不重叠的组合非常有限常见的做法是用 1、6、11 这类彼此隔开足够远的信道。5GHz 的频段宽得多可选信道多但有一批 DFS 信道需要避让雷达信号选了 Auto 之后设备自己扫描环境挑一个干扰最小的选定之后一般不会频繁改变。信道中心频率约与相邻的关系12412MHz基准信道62437MHz与 1 隔开 5 个信道20MHz 下不重叠112462MHz与 6 隔开 5 个信道不重叠配置无线 AP 时如果屋子里有很多个 AP仔细设置各自的 Channel Width 和 Channel可以保证它们之间的干扰尽可能小。干扰了也不是完全不能用Net Mode 指定的协议会有相应的协调方式比如让谁先通信、谁等一会儿再通信但这样网络的性能就不如没有干扰的时候。这就是「能通」和「好用」的差别。另一个常被漏掉的干扰源除了 wifi微波、红外线、蓝牙使用 802.15 协议的工作频段也都在 2.4GHz 范围内它们传输时会对 wifi 造成干扰因为双方在不同协议下通信互相把对方信号识别为噪声。这种干扰没法靠改信道完全躲开只能靠物理位置和频段选择缓解。4.3 安全三件套WEP / WPA / WPA2 与 RC4 / TKIP / AES这一块最容易背混因为标准名和算法名是两套体系。先把关系捋清IEEE 802.11 制定的是技术性标准Wi-Fi 联盟制定的是商业化标准而商业化标准基本上都符合技术性标准。安全方式时间与来源加密相关主要问题现状WEP1999 年 9 月802.11 标准的一部分RC4有好几个弱点2003 年被 WPA 淘汰WPAWi-Fi 联盟制定的商业化标准为支持 802.11iTKIP保留了 RC4仍带 RC4 的弱点是过渡方案2004 年被 WPA2 取代WPA2完整的 802.11i 标准CCMP设备上常写作 AES相对最稳安全性最强的组合是 WPA2 AESWPA 出现的时机很能说明问题当时更好的 CCMP 还没完成所以先在 WPA 上用 TKIP 顶着。所以看到设备上写「WPA AES」这种不严格搭配也别惊讶有些路由器配置时确实不严格按照规定来但大体关系不变。再记一组别名WPA-Enterprise / WPA2-Enterprise 就是 WPA / WPA2 的企业模式走 IEEE 802.1X/EAP 验证需要验证服务器例如 RADIUSWPA-Personal / WPA2-Personal 其实就是 WPA-PSK / WPA2-PSK用 pre-share key 或 passphrase 的验证模式代替 802.1X/EAP不需要验证服务器所以特别适合家用或小型办公场景。有一条兼容性陷阱必须记住WEP 是旧的加密方式工作于 802.11b/g 模式下而 802.11n 草案并不支持这种加密方式。也就是说802.11n 的设备一旦采用 WEP 加密它只会工作在 802.11b/g 模式下N 的性能根本发挥不出来。排障时遇到「设备是 N 的但速度只有几十兆」先去看加密方式比查天线有用。4.4 速率、Region、QoS 与几个「默认值别乱动」的参数传输速率这个参数设置的是理论速度采用不同协议a/b/g/n时可选范围不同实际由于各种干扰因素跑出来往往比设置的数值小。这里必须区分两个词Data Rate 是理论上最大数据传输速率Throughput 是数据的实际最大吞吐量。因为厂家实现、协议开销等各种因素实际吞吐量比理论值小一般实际最大吞吐是理论最大的 50% 左右。这个估算不算精确但很好用网络里高清视频所需的 Throughput 也就 30Mbps 左右一般视频 4Mbps 左右拿这个去反推需要多大的标称速率比盯着包装盒上的数字靠谱。Region 是个容易被当成无关项的参数。AP 上一般都有这个设置表明它处于哪个地区Station 会根据 AP 中设置的 Region 调整相应的发射功率以遵守该地区的规定。设置过程一般由手动完成设好之后这些信息会包含在 AP 发送的 Beacon 帧里通过这个 AP 接入的 Station 从 Beacon 中了解到 Region 信息并按其中的规定和 AP 通信。如果 AP 一开始就设错了Station 和 AP 通信时会采用不符合规定的频段可能对该地区的其它传输造成干扰这属于「非法」状态。换句话说Region 设错不只是合规问题还会让功率策略整体跑偏。QoS 是质量保证大意是传输数据时考虑各种因素例如收费策略、所处地区等以一定的优先级保证传输的特定要求一般就是速度。有个反直觉的结论如果带宽足够QoS 反而不需要了。它是资源紧张时的分配规则不是越多越好。RTS Threshold / CTS Protection Mode 这一组解决的是隐藏节点问题。假设同一个 AP 覆盖范围内有两个 Station A 和 B它们因为距离原因互相不可见比如分别在覆盖范围两端两端距离大于各自的信号覆盖范围但 AP 知道它们都在自己范围内。A 想通信必须经 AP 转发而 A 不知道 B 的存在如果同时 B 也在通信AP 就会同时收到两个请求这在无线网络里是不允许的同一时刻不能有多个人传数据。这时 B 和 A 互相干扰却互相不可见这就是隐藏节点。隐藏节点多了重传概率上升性能就垮。RTS/CTS 的解法是A 想通信时先广播 RTS 给 AP告诉 AP 它要发数据同时收到 RTS 的其它 Station对 A 而言可见的那些知道 A 要发于是不抢AP 收到 RTS 后广播 CTS告诉所有在 AP 范围内的 Station包括对 A 而言隐藏的 B「A 将要通信」同时也相当于告诉 A 可以无干扰地发了。这样 B 也知道有个 A 要发数据就不会去干扰。设置好 RTS 的阈值之后超过这个阈值才会在发送信息前先发 RTS以减小干扰。发送方向上一般都是 AP 发 CTSStation 发 RTS。还有个细节不同网络的工作站之间也可以通过 RTS/CTS 来清除相互的干扰。剩下三个参数默认值基本别动。Beacon Interval 表示无线路由定期广播其 SSID 的时间间隔不广播的话Station 扫描时可能发现不了这个网络甚至会断开连接AP 定时广播 SSID 是为了告知自己的存在Station 进入一个区域后通过扫描就能知道这里有没有 AP除了被动听广播Station 也可以主动发探寻包询问范围内有没有 AP。DTIM Interval 和休眠有关为了省电Station 可能在一定时间后自动进入休眠AP 会为它缓存发往它的数据休眠的 Station 只在固定间隔给 AP 发一个数据帧确认有没有自己的数据所以 ping 一台睡眠的机器响应时间会比它醒着时长很多。Fragmentation Threshold 是分片阈值数据包超过阈值就自动分割分片值越小整个包越容易传成功出错只需重传一个片段而不是整包无线出错概率比有线大得多但开销也越大因为要额外标记每个分片还要重组。在类 Unix 系统上确认当前连接状态命令行是最快的# 查看当前无线连接的关联信息SSID、BSSID、本机地址 # 不同芯片和驱动暴露的命令不同先确认本机装了哪套工具 wpa_cli status输出的ssid是网络名bssid是当前关联 AP 的地址freq是所在信道的频率。这三项正好对应本章的三个概念名字、机器地址、频段位置。当你要确认「设备到底连的是哪个 AP」时看 bssid 而不是看 ssid因为同名网络可能有好几个 AP 在服务。5. 帧结构与抓包易错点三类帧、DS 字段和五个最容易翻车的地方到了帧这一层抽象概念开始变成具体字节。802.11 的帧分三大类帧头部里的类型字段会标识出这个帧属于哪一类。抓包工具展示时大致按协议规定的字段展示但也有些地方按它自己的方式展示所以判读时要知道哪些是协议字段、哪些是工具加的辅助信息。5.1 三类帧管理帧、控制帧、数据帧各自管什么管理帧负责「建立和维护关系」典型的是 Beacon 帧和 Association 帧。Beacon 帧定时广播发送主要用来通知 AP 的存在性Station 和 AP 建立关联时也要用到它它还包含 Power Save 以及地区等信息。Station 可以通过扫描 Beacon 得知 AP 存在也可以主动发 Probe 来探寻这就是被动扫描和主动扫描两种方式。Association 帧通常伴随着 Probe Request 和相应的 Probe ResponseAssociation Request 里有它需要的 Channel 以及 Data Rate 等状态供 AP 决定是否让它关联关联是否成功主要看 Response 里的 Status code 是否为 Success。控制帧负责「协调空口使用权」典型的是 RTS、CTS、ACK。ACK 帧值得单独说单播帧都需要用 ACK 确认ACK 本身在 MAC 上是单播的帧里有 receive 地址字段用来标识是对谁的确认但它不需要再被确认。ACK 只有接收地址没有源地址和序号因为发送和接收是一个整体发送之后其他人除了这个接收者都不会再发数据这是无线协议的冲突避免机制决定的。按协议应当把「发送单播帧」和「收到对应的 ACK」看作一个原子的、不可分割的整体表示一次成功的通信。数据帧是承载数据的载体其中的 DS 字段用来标识方向很重要。5.2 DS 字段的四种组合与地址解析DS 字段用两位表示分别表示 To DS 和 From DS。大致可以把它理解为「从 AP 的角度看这个帧往哪走」To DS 表示 Station 到 AP一般也叫 UploadFrom DS 表示 AP 到 Station一般也叫 Download。To DSFrom DS含义00Station 之间的 Ad Hoc 类似通信或控制帧、管理帧01Station 接收的帧Download10Station 发送的帧Upload11无线桥接器上的数据帧两个提醒。第一DS 字段只在数据帧里有意义控制帧和管理帧里这个字段是全零所以拿管理帧去分析方向是白费功夫。第二DS 虽然大致等于 AP但它不是 AP而是一个系统从 Station 的角度去理解更顺。实际排障时主要关注 01 和 10 这两种情况它们对应一次正常的上下行。数据帧里还有一个重要字段是 Sequence表示帧的序号。重传帧的序号一样但会多一个 Retry 字段表示这是重传。看到序号重复先别急着判断是抓包工具出错先看 Retry 位。5.3 大端小端帧描述和传输顺序不是一回事这一节是最容易把人绕晕的地方但绕清楚一次就再也不会错。以太网和 802.11 都按 Little Endian 的方式传输数据MAC 层传输时是一个字节一个字节地传前面的低位字节先传后面的高位字节后传传输单位是字节而不是位。而在协议标准上描述一个帧的时候一般先按 Little Endian 的方式对帧做总体描述然后具体说每个字段的值这时候字段值又是用 Big Endian 表示的。举个具体的例子。协议标准里对帧格式可能这样描述|b0|b1|b2|b3|b4|b5|b6|b7|b8|b9|...最低位 b0 在最前面这就是小端的描述方式传输时也按这个顺序以字节为单位往物理层送先传 b0 到 b7再传 b8 到 b16。但解释各个域的时候却用大端假设 b30、b21、b10、b00 四者共同组成一个叫 FLAG 的域文档会写成FLAG4即 FLAG 为 0100用的是 b3b2b1b0 的读法而线上实际顺序是 b0b1b2b3也就是 0010。还有一条边界要划清内存地址是用来标记每个字节的不是标记位所以内存里的大端小端也是以字节为单位。前面描述大端小端时用的是位序这里说的是字节序两者不要混。一台 32 位小端机器存放整数 1数值上是十六进制的 00000001内存里却是由低到高依次放 01、00、00、00因为含最低位的字节放在低地址。帧传输时也是一个字节一个字节地传一个字节内部实际没有端的分别但抓包工具一律按 b7b6b5b4b3b2b1b0 的方式展示。MAC 地址还有个特殊性它不是数值而是一个 Pattern所以没有 Endian 之说也没有「哪个位高、哪个 MAC 大」的比较。判断单播还是组播看第一个字节的最低位mac a8:27:26:3c:1b:b7 b0 int(mac.split(:)[0], 16) # 第一个字节 0xa8 1010 1000 is_group (b0 0x01) 1 # 最低位 I/G1 为组播0 为单播 is_multi (b0 0x03) 0x03 # 最低两位全 1属于组播/广播判据 print(is_group, is_multi) # False False说明这是单播地址这段代码取的是 MAC 第一个字节也就是十六进制展开后最左边两位。以 a8 为例二进制是 10101000它的最低位是最后那个 0所以是单播。严格来说广播地址是 48 位全 1最低两位为 1 只是快速筛出组播类地址的判据两者不要等同。参数说明0x01掩的是 I/G 位0x03掩的是最低两位。5.4 五个最容易错的地方易漏点一在 ACK 帧里找源地址和序号。为什么漏脑子里默认「帧都该有源、目的、序号」看到 ACK 字段少就以为是工具截断了。实际上 ACK 只有接收地址没有源地址也没有序号这是设计如此。怎么补记住「发送单播帧 收到 ACK」是一个原子整体分析时把它们配对看别单独拆开找缺失字段。易漏点二把网络安全和数据加密当成一回事。为什么漏两个东西在配置页上都叫「加密」日常说话也不分。实际是两回事访问网络本身可能需要密码但数据本身未必被加密。怎么补看帧里有没有 data protected 字段有就表示这份数据被加密了不知道具体内容即使有密码解密工具也常常不好用同时记住加密后的包通常看不出它是什么类型、做什么用。易漏点三AP 的 MAC 和 BSSID 对不上就以为抓错了包。为什么漏下意识认为 BSSID 就是设备上标注的那个 MAC。实际上抓包时看到的 AP 的 MAC 是 BSSID它和标注的 MAC 不一定一样一般都差不多往往只是末尾几位不同一台设备还可能虚拟出多个 MAC所以看到两个只差几位的地址多半是同一台设备。怎么补用序号辅助判断同一个地址上的包序号是连续的除非丢包导致重复或缺失如果一台设备虚拟出两个地址且没做特殊处理两个地址上的序号合起来也可能是连续的。易漏点四把抓包过滤器和显示过滤器混着用。为什么漏两个都叫 filter界面上位置也近。抓包时设的过滤器是 capture filter用的是 BPF 这类通用语言描述不是抓包工具专用的语法而抓包期间的过滤有时候不准。怎么补先全量抓下来再用显示过滤器挑出关注的包复杂的显示条件可以用宏来定义保存的时候注意区分是按显示过滤保存还是按抓取过滤保存。易漏点五在不该抓的信道宽度上死磕或者分析校验和错误的包。为什么漏前者是硬件限制不写在手册显眼处后者是拿到包就想往下逐字段看。专用嗅探网卡对 40MHz Channel Width 的包支持不好非要在这种信道上抓很可能抓不全而校验位不对的包是错误包也无法确定接收时哪里出了差错几乎没有分析价值。怎么补抓包前先确认这个包是否完整正确checksum 不对直接跳过要抓 40MHz 就在 36 或 40 号信道上抓并把工具的 offset 设成 1平时 offset 都是 0其他信道上的 40MHz 包仍然抓不到这是硬件固件层面的限制。另外抓授权阶段的包要留意开始阶段实际是 Open 的也就是无授权看起来已经连上了真正的鉴权在后面用类似 802.1X 的安全协议再做一次通不过就会立刻把已建立的关联断开。6. 复习清单把这张 wifi 知识地图走一遍的自查方法复习到这个程度最怕的不是不会而是「以为会了」。我用一张三层自查表来验证每层都要求能说清、能配、能抓缺一项就算没过。层次能说清口述能配动手能抓验证协议与差异a/b/g/n 的频段、速率、n 的两处改进按场景选 2.4G 还是 5G看 Beacon 里的能力字段术语与组网Station、AP、BSS、DS 的关系判断该用基础结构型还是临时组网从地址判断帧走了几跳参数与安全Band/Channel/Width 的嵌套、WEP/WPA/WPA2 对应算法布多个 AP 时错开信道确认加密方式没把 N 拖回 b/g帧与抓包三类帧、DS 四种组合、端序设对抓包与显示过滤器按 DS 字段倒推上下行具体走法分三步。第一步合上资料在白纸上画一遍拓扑Station 怎么连 AP、AP 之间怎么通过 DS 转发、SSID 和 BSSID 分别标在哪。画不出来说明第 3 章还没进脑子。本文还有配套的精品资源点击获取