简介:一份面向无线网络初学者、网络运维入门者及备考相关认证读者的WiFi基础知识梳理文档,重点解决802.11协议版本、常用术语含义以及有线与无线网络差异容易混淆的问题。文档共1个doc文件,压缩包约88KB,体积轻便,已有280人学习下载。内容按基本概述、协议演进和术语讲解展开,先对比有线与无线网络在连接建立、半双工通信、差错重传、抓包安全与功耗等方面的差异,再梳理802.11a/b/g/n的工作频段、最大速率及802.11n在MAC层的改进,如信道合并与MIMO。术语部分覆盖LAN、WAN、WLAN、AP、Station、SSID、BSSID、BSS与分布式系统等,便于建立无线网络的基本概念框架,适合作为课堂笔记、岗位入门速查和后续协议学习的铺垫材料。
1. 信号满格却卡成幻灯片:瓶颈往往不在射频
手机上的 Wi-Fi 图标满格,视频却在转圈,这是最容易被误判的一类故障。射频强度只回答“能不能听见”,真正决定体验的是 802.11 在 MAC 层搭起的一整套仲裁规则:谁先发、一次发多大、发错了谁负责重传、隔壁听不见彼此的节点怎么被通知暂时闭嘴。这套规则比以太网复杂一个量级,原因很朴素——无线介质没有独立的收发通道,没有可靠的物理载体,也没有天然的边界。移动网络从 3G/4G 一路演进,靠的是网络侧集中调度;wifi 把调度权下放到了每个终端,代价就是终端之间必须自己商量。搞懂这套商量机制,信道宽度、RTS 阈值、Beacon 间隔这些看似互不相干的参数才会连成一张图,抓包时也才分得清哪些帧是必要开销、哪些是翻车信号。
2. 从以太网到 802.11:共享介质强加了三个硬约束
以太网和 802.11 同属 IEEE 802 协议集,前者用 802.3 做网络层以下的协议,后者用 802.11。网络层以上几乎一模一样,差异全部压在链路层和物理层。很多“Wi-Fi 为什么这样设计”的疑问,答案都能回溯到三个约束:介质共享、半双工、误码率高。这三个约束不是并列关系,而是层层放大的——共享导致必须仲裁,仲裁导致必须建立连接关系,误码高导致仲裁本身还要带确认和重传。
2.1 半双工与“必须先关联”:连接建立为什么不是可选项
插上网线就能发包,连 Wi-Fi 却必须先走一遍扫描、认证、关联。这不是流程繁琐,而是共享介质的必然结果。AP 需要明确知道“这个 48 位地址属于我的基本服务集”,才敢给它分配关联标识、决定帧往哪个方向转发、以及在它休眠时替它缓存数据。没有这层登记,AP 收到一个帧根本不知道该往哪儿送。
更深一层的原因在半双工。同一时刻、同一信道上只能有一个发送者,两个终端同时发射,信号在空间中叠加成噪声,谁都解不出来。有线网络可以用 CSMA/CD,一边发一边听,发现冲突就立刻停;无线做不到这一点,因为终端自己的发射功率会淹没它想接收的微弱信号,边发边听等于聋子喊话。所以 802.11 换成了 CSMA/CA——冲突避免而不是冲突检测,靠随机退避和帧间间隔把冲突概率压下去,而不是事后发现。
提示:这也解释了一个常见困惑——为什么 Wi-Fi 的延迟抖动比有线大得多。退避窗口是随机的,赶上信道繁忙,一帧可能要等好几个竞争窗口才发得出去。
2.2 出错率与重传:为什么必须下沉到 MAC 层
无线链路的误码率比双绞线高几个数量级,干扰、多径、距离衰减都会让帧在物理层就损坏。如果只靠上层 TCP 的超时重传来兜底,代价极其昂贵:一次 RTO 至少几百毫秒,还会把拥塞窗口砍半,把链路误码误判成网络拥塞。
所以 802.11 在 MAC 层就做了确认与重传:单播数据帧发出后,接收方必须在很短的帧间间隔内回一个 ACK,发方收不到就重发。这个止损点前移的设计,让一次重传的代价从几百毫秒降到几十微秒到几毫秒。重传帧的序号与上一帧完全相同,只是把帧控制字段里的 Retry 位置 1,接收端据此识别重复帧并丢弃,避免上层收到两份数据。
2.3 频段、信道与带宽:802.11a/b/g/n 到底改了什么
协议演进的主线可以概括成一句:先在 2.4GHz 上把速率做上去,再往 5GHz 要空间,最后在 MAC 层动刀子。
| 协议 | 制定时间 | 频段 | 频段宽度 | 理论最大速率 | 关键变化 |
|---|---|---|---|---|---|
| 802.11a | 1999 | 5GHz | 325MHz | 54Mbps | OFDM 调制,设备少、不流行 |
| 802.11b | 1999 | 2.4GHz | 83.5MHz | 11Mbps | 兼容性好,铺开最快 |
| 802.11g | 2003 | 2.4GHz | 83.5MHz | 54Mbps | 在 2.4GHz 上复刻 a 的速率 |
| 802.11n | 2009 | 2.4GHz / 5GHz | 双频 | 600Mbps | 信道绑定 HT-40 + MIMO |
802.11n 是分水岭,因为它第一次大规模改动了 MAC 层。两个改动值得单独说:其一是信道绑定,把两个相邻的 20MHz 信道合并成一个 40MHz 信道再传数据,吞吐量直接翻倍;其二是 MIMO,用多对天线在同一信道上同时传输不同的空间流,靠 OFDM 的正交子载波和空间分离让多路信号互不干扰。OFDM 把一个大载波切成许多互相正交的子载波,正交意味着子载波之间在频域上可以重叠而不产生串扰,这是多路并行传输能成立的前提。
但 HT-40 在 2.4GHz 上几乎是纸面功能。2.4GHz 总共只有 83.5MHz 可用,去掉边缘保护,真正互不重叠的 20MHz 信道只有三个(习惯上选 1、6、11)。把两个绑成 40MHz,等于把仅有的三个信道吃掉两个还多,邻居一多就必然重叠。所以现实里 40MHz 基本只在 5GHz 上启用,而 5GHz 信道多、非重叠组合多,这才是双频路由器真正的价值所在。
顺带说清楚干扰的来源:2.4GHz 是个公共泳池,微波炉、蓝牙、红外设备都在这个频段附近工作,它们各自跑在不同协议下,互相只能把对方的信号识别成噪声。这也是为什么 2.4GHz 在晚上和周末明显更慢——不是你的路由器坏了,是整栋楼都在同一个池子里游泳。
2.4 Datarate 与 Throughput:那 50% 的账是怎么算出来的
厂商标 600Mbps,实际测速三百多,很多人以为是虚假宣传。其实标称值叫 Datarate,是物理层理论最大传输速率;实际能跑出来的是 Throughput,即有效吞吐量。两者之间的差额不是损耗,而是协议开销。
算一笔账更直观。一个满载 1500 字节的数据帧,在 54Mbps 的物理速率下,空口占用时间约为 1500×8/54 ≈ 222 微秒。而它前后还要加上前导码、PLCP 头、MAC 头、帧校验、一个 SIFS 间隔、一个 ACK 帧、一个 DIFS 间隔,再加平均退避时间。这些固定开销加起来轻松超过 100 微秒,占比接近一半。帧越小,开销占比越高——这就是小包场景(比如大量短连接、游戏心跳包)Wi-Fi 效率极低的原因。
一份经验值可以拿来对照:一路高清视频流大约需要 30Mbps 的有效吞吐,普通网络视频 4Mbps 左右。按 50% 折算,标称 600Mbps 的链路跑一路高清视频是绰绰有余的,真正让体验崩掉的从来不是峰值速率,而是重传率和信道争用。
3. BSS 与分布式系统:一个帧从 A 到 B 的寻址全过程
知道有 AP、有 Station,不等于知道帧怎么走。真正容易混淆的是三个“地址”概念——SSID、BSSID、MAC,以及数据帧里那两个决定方向的比特。把这几个东西理清楚,抓包里那一串似是而非的 MAC 地址就不再是黑匣子。
3.1 SSID 与 BSSID:给人看的名字和给机器看的地址
SSID 是一个子网的名字,终端扫描时把它列出来供人选择。它允许重复——当需要扩大一个无线网络的覆盖范围时,给多个 AP 配置相同的 SSID 即可,终端在移动中从一个 AP 切到另一个 AP,用户感知到的还是同一个网络名。这正是漫游的原理,和移动通信里跨基站不断话是同一套思路。
BSSID 则是 48 位地址,格式与 MAC 相同,一般就是所在 AP 的 MAC。SSID 给人看,BSSID 给机器看。两者不是一一对应:同一个 BSSID 在不同信道上可能对应多个 SSID,但在同一个信道上是一一对应的;漫游时 SSID 不变,BSSID 一定会变。
这解释了一个日常现象:拿着手机从客厅走到卧室,网络名没变,微信却会短暂转圈。因为终端正在断开旧 BSSID、关联新 BSSID,重新走一遍认证和关联流程,这期间数据帧无处可去。
抓包时还会遇到另一个坑:抓到的 AP 地址和路由器外壳标签上印的 MAC 对不上,只差最后几位。原因是一台同时具备路由和 AP 功能的无线路由器通常有多个 MAC——一个给广域网口,一个给局域网和无线侧,标签上往往只印了广域网那个。有些设备还会在此基础上再派生 BSSID。所以看到两个“AP”的地址只差几位,先别怀疑抓错了,它们很可能就是同一台设备虚拟出来的。
3.2 BSS、DS 与桥接引擎:外部路由为什么只认 MAC
BSS 是 802.11 无线网络的基本组件,由一组相互通信的工作站组成。它分两类:IBSS 又叫 Ad Hoc,组网是临时的,通信方式是 Station 对 Station,没有 AP;基础结构型网络的通信方式是 Station 经 AP 再到 Station,所有设备想通信都必须过 AP。工程上绝大多数场景是后者。
多个 BSS 要连成一个大网络,靠的是分布式系统 DS。DS 是 802.11 的逻辑组件,负责把帧转发到目的地址,但标准刻意没有规定它的技术细节。商业实现里,DS 通常由以太骨干网加桥接引擎构成:骨干网是媒介,桥接引擎负责在两个网络接口之间做转发,每个 AP 都有一个到骨干网的接口和一个到本 BSS 无线侧的接口。
这里有个关键点常被忽略:外部路由只知道 Station 的 MAC 地址,完全不知道它挂在哪个 AP 下面。所以 DS 内部的各个 AP 之间必须互相通告“哪个 Station 关联在我这里”,关联和解关联事件都要同步。只有这张映射表是全的,DS 才能把目的地址是某个 Station 的帧送到正确的出口,而不是广播泛洪。DS 的媒介也不一定是以太网,用无线做骨干的 WDS 就是另一种形态。
3.3 To DS / From DS:数据帧的四象限
数据帧的帧控制字段里有两个比特,To DS 和 From DS,它们决定了这个帧是上行、下行还是桥接转发,也决定了地址字段该怎么解析。管理帧和控制帧这两位全为零,所以这套判断只对数据帧有效。
| To DS | From DS | 含义 | 典型场景 |
|---|---|---|---|
| 0 | 0 | Station 之间直连,或管理帧、控制帧 | Ad Hoc 组网 |
| 0 | 1 | Station 接收的帧 | AP 下发给终端(Download) |
| 1 | 0 | Station 发送的帧 | 终端上发给 AP(Upload) |
| 1 | 1 | 无线桥接器上的数据帧 | WDS 两个 AP 之间转发 |
把 DS 粗略理解成 AP 是可以的,方向是从 AP 的视角命名的:To DS 就是“交给 AP 去干活”。但严格说 DS 是一个系统而不是一台设备,从 Station 的角度理解更不容易绕晕——站在终端这边看,我发出去的帧就是 To DS,我收到的帧就是 From DS。
3.4 隐藏节点与 RTS/CTS:一个可选握手的成本收益
同一个 AP 覆盖范围内,两个 Station 可能互相听不见。比如 A 和 B 分别位于覆盖边缘的两端,彼此距离超过各自的信号范围,但都能和中间的 AP 通信。A 不知道 B 的存在,B 也不知道 A 的存在,同时发包就会在 AP 处撞车,双双重传。这种互相不可见的节点叫隐藏节点,节点越多,重传率越高,网络性能下降得越厉害。
RTS/CTS 就是针对这个问题的解药。A 想发数据前,先发一个很短的 RTS 帧给 AP,说“我要发了”;AP 收到后广播一个 CTS 帧,告诉覆盖范围内所有节点“A 即将占用信道”。对 A 而言隐藏的 B 虽然听不见 A 的 RTS,但能听见 AP 的 CTS,于是知道有人要发数据,主动静默。CTS 里携带的时长字段让听到它的节点设置一个网络分配矢量计时器,在这段时间内不发起传输。
一般由 Station 发 RTS,由 AP 发 CTS,两者都是短帧。这套机制甚至能跨网络生效——不同网络的工作站之间也可以通过 RTS/CTS 互相清除干扰,因为 CTS 是广播的,谁听见谁避让。
代价也很明确:每次通信多了两个短帧和两次帧间间隔。所以设备上都有一个 RTS 阈值参数,只有帧长超过阈值才启用这套握手。小帧重传一次的成本远低于握手成本,大帧则相反。阈值调得太低,握手开销吃掉吞吐;调得太高,隐藏节点导致的重传又压不住。这就是个典型的工程折中,没有普适最优值。
4. 帧结构里的实现细节:类型、序号、确认与大小端
抓包工具把一帧展开成几十个字段,新手容易陷进去。其实只要抓住四件事——这是什么类型的帧、序号连不连续、要不要被确认、字段是按什么字节序读的——大部分现象都能解释。
4.1 三类帧的分工:管理帧建网、控制帧仲裁、数据帧搬货
802.11 的帧分三类,帧头里的类型和子类型字段负责标识。
管理帧负责找网、建网、入网,典型的有 Beacon(定时广播,通知 AP 的存在)、Probe Request / Probe Response(主动扫描探寻)、Authentication(认证)、Association Request / Response(关联)。控制帧负责仲裁介质和确认,典型的有 RTS、CTS、ACK、PS-Poll(休眠终端取缓存)。数据帧是承载上层数据的载体,其中的 DS 字段用来标识方向,这是它与管理帧、控制帧最本质的区别。
关联过程值得展开一点。终端先扫描:被动方式是听 Beacon,主动方式是发 Probe Request 询问附近有没有 AP。找到目标后先认证,再做关联。关联请求里会带上终端需要的信道、支持的速率等能力信息,供 AP 判断是否接纳;关联是否成功,看响应帧里的状态码是不是成功。
注意:抓包时会看到一个反直觉的现象——认证阶段一开始往往是“无认证”直接通过,真正的安全认证在关联之后才做,失败了立刻把已建立的关联断开。这是历史包袱:802.11 最初没有充分考虑安全,安全机制是后加的补丁,为了兼容早期设备只能先连后验。
4.2 ACK 的原子语义:为什么它没有源地址和序号
单播帧必须被确认,组播和广播帧不确认——如果一群接收者同时回 ACK,信道立刻变成噪声场。ACK 帧本身是单播的,里面有接收地址字段,标识它在确认谁,但它没有源地址,也没有序号。
这不是设计遗漏。发送方发完一帧后就停在那里等 ACK,收到就代表这次传输成功,收不到就重传,整个过程被协议看成一个不可分割的原子操作。既然一次成功的通信里只有一个可能的发送方在等,源地址就是冗余信息。ACK 帧本身也不需要再被确认,否则确认会无限递归。
判断一个帧是单播、组播还是广播,看目的 MAC 地址第一个字节的最低位:最低位为 1 是组播,最低两位都是 1 是广播,最低位为 0 是单播。这里有个容易翻车的细节——MAC 地址是一个比特模式,不是数值,所以它没有大小端之分,也没有“哪个 MAC 更大”这种说法。拿 a8:27:26:xx:xx:b7 举例,第一个字节 a8 的二进制是 10101000,最低位是 0,所以它是单播地址。很多人下意识去看最高位,结果把单播认成组播。
4.3 Sequence、Retry 与分片:重传怎么被识别
序号字段是识别重传的关键。每个单播数据帧携带一个 12 位的序号,重传帧的序号与原始帧相同,只把 Retry 位置 1。接收端看到重复序号就丢弃,避免上层收到两份。抓包时统计 Retry 位为 1 的帧占比,是判断链路质量最直接的手段之一,比看信号强度靠谱得多。
下面这段代码把帧控制字段里几个最容易被忽略的位拆出来,包括方向、重传、加密标志,以及地址字段的单播判断。
def decode_fc(fc0, fc1, addr1): """ fc0/fc1: 抓包软件给出的帧控制字段两个字节的数值,线上先传 fc0 addr1: 第一个地址字段,形如 "a8:27:26:11:22:33" """ ftype = (fc0 >> 2) & 0x03 # 0 管理帧 1 控制帧 2 数据帧 3 扩展 subtype = (fc0 >> 4) & 0x0F # 与 type 组合决定具体帧种类 to_ds = fc1 & 0x01 # 仅数据帧有意义,管理帧/控制帧恒为 0 from_ds = (fc1 >> 1) & 0x01 retry = (fc1 >> 3) & 0x01 # 置 1 表示重传,序号与上一帧相同 protect = (fc1 >> 6) & 0x01 # 置 1 表示载荷已加密,看不到上层语义 first = int(addr1.split(":")[0], 16) # 只取第一个字节的数值 group = (first & 0x01) == 1 # 最低位为 1 是组播 broadcast = (first & 0x03) == 3 # 最低两位全 1 是广播 return { "type": {0: "management", 1: "control", 2: "data"}.get(ftype, "ext"), "subtype": subtype, "dir": {(0, 0): "IBSS 或管理/控制帧", (0, 1): "下行 AP 到 STA", (1, 0): "上行 STA 到 AP", (1, 1): "WDS 桥接转发"}[(to_ds, from_ds)], "retry": retry, "protected": protect, "group": group, "broadcast": broadcast, }这段代码里几个参数的含义值得逐条对照:fc0承载协议版本、类型、子类型这三个低字节字段,fc1承载 To DS、From DS、更多分片、重传、省电、更多数据、加密、严格排序这八个高位字段。之所以用位移而不是直接取位,是因为抓包软件给出的是字节数值,而位序和字节序是两套东西,混着用必然出错。protect位为 1 意味着这个帧的载荷被加密,看不到上层是什么协议、什么内容,但它和“连这个网络要不要密码”完全是两回事——网络可以是加密的,载荷也可以是不加密的。
分片阈值是另一个常被误解的参数。当数据帧超过阈值,802.11 会自动把它切成若干个分片,每个分片单独编号、单独确认。收益很明确:一个分片出错只需重传这个分片,而不是整个大包,而无线链路的差错率比以太网高得多。代价同样明确:每个分片都要带自己的头和确认开销,重组还要额外处理。所以阈值调小在网络质量差的环境里有效,在干净环境里纯属自找麻烦。
4.4 大端小端:为什么协议标准看起来“前后不一致”
这是读 802.11 规范时最容易卡住的地方。描述整个帧的布局时,标准按 b0、b1、b2 的顺序排列,最低位在最前,也就是小端方式;但描述某个具体字段的取值时,又换成了大端,直接写那个字段的数值。
举个具体例子。假设 b3、b2、b1、b0 四位共同组成一个叫 FLAG 的域。标准里会写“FLAG = 4(即 0100)”,这是把它当成一个整体数值用大端写的;但真正在线路上传输时,顺序是 b0、b1、b2、b3,读出来是 0010。同一个域,规范里写 4,线上看到的是 0010,第一次见必然怀疑自己看错了。
以太网的惯例是把这两层说清楚:线路上按大端传字节,最高字节先传;但一个字节内部的比特序是小端,最低位先传。所以一个十六进制写成 01-80-C2-00-00-00 的地址,实际传输的比特序列是 1000 0000 0000 0001 0100 0011 0000 0000……第一位先发的是最低位。
注意:内存层面的“大端小端”说的是字节序,不是位序。一个 32 位整数在小端机器上存放时,低位字节放在低地址,但字节内部没有“大端小端”这回事,因为内存按字节编址,位没有地址。把位序和字节序混为一谈,是读帧结构时最常见的思维陷阱。
5. 抓包排查:五条血泪踩坑记录
抓包这件事,工具会用不等于看得懂。无线抓包比有线多出好几层失真源:硬件过滤、加密、信道宽度、休眠机制。下面五条是我在排查中实打实踩过的坑,每条都对应一个具体的机制。
5.1 抓包前必须搞清的两个前提
第一个前提是网卡过滤。普通无线网卡只把目的地址是自己的帧交给上层,其余的帧在硬件层就被丢掉了。所以用笔记本自带的网卡抓包,永远只能看到“发给自己的包”,看起来像整个网络只有自己一个终端在工作。要看到所处无线环境里的全部流量,需要专门的嗅探设备——它把射频前端置于监听状态,不做地址过滤,抓取所有经过的帧。这类硬件通常价格不低,驱动也往往只支持特定操作系统,使用时需要配合抓包软件。
第二个前提是嗅探位置。无线信号是广播的,理论上覆盖范围内的所有帧都能被听到,但实际能否解出来取决于信号质量和是否正好处在目标信道上。所以在 A 信道嗅探却抓到 B 信道的帧,并不稀奇,也不必为这种偶发断言惊讶。
5.2 五条踩坑记录:现象、原因与解决
坑一:抓了半天只有自己的流量。现象是抓包文件里目的地址清一色是本机网卡,看不到别家的 Beacon 和 Probe。原因是普通网卡做了硬件层地址过滤,非本机的帧直接丢弃,抓包软件根本拿不到。解决办法是换用支持监听模式的专用嗅探硬件,或者在只关心自身链路时接受这个限制,转去看关联过程和 ACK 情况。
坑二:文件里满是校验错误的帧。现象是抓包工具把大量帧标成校验和错误,展开看内容也是乱的。原因是无线干扰、多径或距离过远导致物理层就解错了,帧校验字段对不上,内容不可信。这类帧几乎没有分析价值,唯一的意义是统计比例——错误帧占比高,说明链路本身有问题,先去查信道干扰和距离,别急着分析协议。显示过滤器里直接排除掉即可。
坑三:明明抓到了包,却看不出是什么业务。现象是帧结构完整,但载荷部分是二进制乱码,看不到任何上层协议特征。原因是帧控制字段里的加密标志为 1,载荷被加密了。这里要区分两个容易混淆的概念:网络本身可能需要密码才能接入,这是接入层面的安全;而数据帧的载荷是否加密是另一层,两者并不等价。对于一个加密的数据帧,连它是做什么用的、属于哪个上层协议都判断不出来。手上有密钥的话,抓包软件提供了配置解密的功能,但成功率并不稳定,取决于握手过程是否被完整抓到。
坑四:40MHz 信道的包抓不全。现象是抓 40MHz 信道宽度的帧,只能看到一半,或者干脆什么都看不到。原因是嗅探硬件的芯片固件对 40MHz 支持很差,这不是配置问题,是硬件能力边界。可行的绕法是:在 36 或 40 号信道附近抓,并把信道偏移参数设成 +1(平时都是 0),这样能抓到一部分 40MHz 的帧;换到别的信道就还是抓不全。
坑五:ping 一台休眠中的终端,延迟大得离谱。现象是同一台设备醒着时响应几毫秒,休眠后动辄几百毫秒。原因是省电机制在起作用:终端为了省电会周期性进入休眠,AP 替它缓存发来的数据,终端只在约定的时间点醒来查一下有没有自己的数据。这个时间点由 DTIM 间隔决定,Beacon 帧里携带了这个信息。所以延迟不是网络慢,而是终端在按计划睡觉。解决办法是调整 DTIM 间隔,或者接受这个代价——省电和响应速度本来就是一对矛盾。
5.3 两层过滤器:先全抓,再精筛
抓包软件有两套过滤器,很多人混着用,结果漏帧。抓包阶段用的是抓取过滤器,语法基于一种通用的包过滤语言,不是某个软件专有的;显示阶段用的是显示过滤器,语法各软件自定,还能用宏定义复杂条件。
血泪经验是:抓包阶段只做粗过滤,甚至完全不过滤,把原始流量完整落盘;分析阶段再用显示过滤器精确筛选。抓包期间的过滤有时候判定不准,一个本该保留下来的帧被规则误杀,等回头想查就再也找不回来了,这属于没有后悔药的操作。
# 抓包阶段:只按帧类型做最粗的过滤,尽量完整落盘 sniffer capture -i wlan0 -w all.pcap 'type mgt or type data' # 分析阶段一:把 Beacon 拉出来,看 SSID 与 BSSID 的对应关系 sniffer read all.pcap -Y 'wlan.fc.type_subtype == 0x08' \ -T fields -e wlan.ssid -e wlan.bssid # 分析阶段二:统计重传帧数量,占比高说明链路质量差或有隐藏节点 sniffer read all.pcap -Y 'wlan.fc.retry == 1' | wc -l第一行里的type mgt or type data是抓取过滤器表达式,只保留管理帧和数据帧,跳过控制帧以减小文件;-w表示写入文件而不是打印到终端。第二行的wlan.fc.type_subtype == 0x08是显示过滤器,0x08 对应 Beacon 子类型,-T fields只输出指定字段,方便直接看 SSID 和 BSSID 的对应表。第三行的作用是量化重传率,这个数字比任何信号强度指示都更能说明问题。
6. 安全标准的双轨制:一次教科书级的兼容性取舍
WEP、WPA、WPA2 这三代名字背后,其实藏着两套并行的标准体系。IEEE 802.11 制定的是技术性标准,Wi-Fi 联盟制定的是商业化标准,后者基本都符合前者。WEP 在 1999 年就进了 802.11 标准,用的是 RC4 加密;它有好几个明显弱点,2003 年被 WPA 淘汰。WPA 是联盟推出的商业标准,存在的目的就是为了支撑 IEEE 802.11i 这个以技术为导向的安全标准。它采用 TKIP 算法,而 TKIP 保留了 RC4,所以弱点也一并继承——当时的处境是,更强的 CCMP 还没做完,只能先用 TKIP 顶上。WPA2 是 WPA 的第二版,完整实现了 802.11i,采用 CCMP(很多设备界面上直接用 AES 这个词替代)。所以 WPA2 配 AES 是当前最稳妥的组合。
取舍的代价在一个地方暴露得特别明显:WEP 是旧加密方式,工作在 802.11b/g 模式下,802.11n 草案不支持它。也就是说,一台支持 600Mbps 的 N 设备,一旦开了 WEP 加密,会整体退回 b/g 模式,N 的性能完全发挥不出来。这是兼容旧设备的代价被固化进了协议——为了不抛弃老终端,新协议宁可放弃自己的全部增益。
实际设备的管理界面往往不那么严格,会出现选了 WPA 却还能挑 AES 这种混搭,大体上是对的,但不能当作规范来依赖。要验证一个网络真正协商了什么,别信下拉框,去看 Beacon 里携带的安全信息元素,里面能读出认证套件、单播和组播的加密套件,以及到底是预共享密钥还是走 802.1X/EAP 的集中认证。顺带一提,预共享密钥模式不需要专门的认证服务器,所以特别适合家用和小型办公;企业模式才需要那套集中认证的设备。地区参数也藏在这些广播帧里,终端据此调整发射功率以符合当地规定,配错了虽然能连,但可能在用不该用的频段发射。
从那以后,我每次配置一个无线网络,都会先把加密套件、频段宽度、信道这几项对着 Beacon 里的实际字段核一遍,再决定要不要相信管理界面上那个默认勾选。希望帮到你。
本文还有配套的精品资源,点击获取