📡 第六章 高速普及的无线LAN及其基础知识
📄 一句话概括

以太网能「边发边听」,无线不能——因为自己发的信号会盖住别人的。 所以无线改成「先听后发、发完等确认」,这就是 CSMA/CA。

📝 本节和前面几节的关系

上一节讲无线怎么来的,这一节讲它「怎么抢信道」。 这是无线与有线最本质的差别,也是「无线为什么只有一半效率」的根源。

一、为什么不能边发边听

以太网用 CSMA/CD:一边发一边听,听到「和自己发的不一样」就说明撞了,立刻停。 这套机制要求「发送时能听见别人」。

无线做不到: 自己发射的功率比远处别人的信号强几个数量级,接收机被自己的信号淹没,根本听不出有没有撞。 这叫「近远效应」。

而且还有「隐藏终端」问题:A 和 C 都能听见中间的 B,但 A 听不见 C。 于是 A 以为信道空闲就发,C 也这么想,两个一起撞在 B 那里。

这两条加起来,决定了无线只能「事先避免」,不能「事后检测」——所以是 CA(Collision Avoidance),不是 CD(Collision Detection)。

二、三个避免冲突的机制

一、先听后发(载波侦听):发之前先听一段时间,听到「忙」就等。 问题是「听不到不代表没人」(隐藏终端)。

二、随机退避:想发的时候不立刻发,先随机等若干个时隙。 两个同时想发的设备,等的时间大概率不同,于是错开。 这解决的是「大家一起等完、又一起发」的二次冲突。

三、确认与重传:收到之后必须回一个 ACK。 没收到 ACK 就认为撞了,退避更长时间再试。 这一条同时解决了「隐藏终端」——因为 B 不回 ACK,A 就知道没成。

RTS/CTS 是给第三条打的补丁: A 先发一个 RTS,B 回一个 CTS(C 也能听见这个 CTS),于是 C 在这段时间自觉闭嘴。 它有效但开销大,所以只在「大包」或「隐藏终端严重」时才开。

三、这套机制的效率代价

每次发送都要付四笔「等待」: 帧间隙(DIFS)、随机退避、前导与帧头、以及等 ACK 的间隔(SIFS)。

按 54 Mbps、1500 字节算:数据本身 222 微秒,四笔等待加起来约 168 微秒。 效率只有 57%。

而小包更惨:100 字节的数据只占 15 微秒,而等待还是 168 微秒——效率掉到 8%。 这就是「无线网上跑小包业务特别费」的定量原因。

所以无线的容量规划不能按「兆比特每秒」算,要按「每秒能发多少个包」算: 因为每个包都要付一次固定开销,而固定开销与包大小无关。 这也是「语音走无线要单独算」的原因。

四、动手 Demo:一次传输里,真正的数据占多久

这段把一次传输的六个环节逐个列出耗时,算出「数据占总时间的比例」,再看包变小之后效率掉到多少。

total = 34 + 68 + 20 + 222 + 16 + 30
P(u"  合计 %d 微秒,其中数据 %d 微秒。" % (total, 222))
P(u"  效率 = %d ÷ %d = %.1f%%。" % (222, total, 222 * 100.0 / total))

实跑输出:

--------------------------------------------------------------------
一次传输里,真正的数据占多久
--------------------------------------------------------------------
**无线不是「发出去就完了」,每次发送都要抢信道、等确认。**
**这些「等」的时间,就是效率损失。**

  环节         典型耗时       说明
  --------------------------------------------------------
  DIFS         34 微秒        发之前必须静默这么久
  随机退避     约 68 微秒     平均 7.5 个时隙 × 9 微秒
  前导与头     20 微秒        同步与速率信息
  数据         222 微秒       1500 字节 @ 54 Mbps
  SIFS         16 微秒        等 ACK 的固定间隔
  ACK          30 微秒        确认收到

  合计 390 微秒,其中数据 222 微秒。
  效率 = 222 ÷ 390 = 56.9%。

**换小包会怎样**(同样 54 Mbps):

   100 字节:数据   14.8 微秒,合计  182.8 微秒,效率  8.1%。
   500 字节:数据   74.1 微秒,合计  242.1 微秒,效率 30.6%。
  1500 字节:数据  222.2 微秒,合计  390.2 微秒,效率 56.9%。

**100 字节的小包效率只有 25%**——**这就是为什么 VoIP 在无线网上特别费「空口时间」。**
**而「空口时间」才是无线真正的稀缺资源,不是带宽。**

57% 这个效率是「单用户、无干扰、大包」的理想值: 真实环境有竞争、有重传、有管理帧,能到四成就很不错。 所以「标称 54 Mbps 实测 20 Mbps」不是设备虚标,是机制决定的。

注意 100 字节那一行「效率 25%」:它说明「包越小,固定开销占比越高」。 而固定开销里最大的一项是「随机退避」,这是「避免冲突」必须付的代价。

最后那句「稀缺资源是空口时间」要反复用: 算容量时问「每秒能发多少个包」,而不是「能跑多少兆」。 这个视角一换,很多「无线怎么这么慢」的问题就有答案了。

30 秒实验

  1. 算一下:如果你每个包平均 300 字节,一次传输的效率大约多少?
  2. 在手机上看「Wi-Fi 速率」,看它是不是经常在 54 到 300 之间跳。
  3. 想一想:为什么「关掉 802.11b 速率」能提升整体吞吐?

常见误区

  1. 以为无线也能「边发边听」。自己发的信号盖住一切,做不到。
  2. 以为听不到就是没人。隐藏终端就是这个盲区。
  3. 以为效率损失是设备不行。它是 CSMA/CA 机制的必要开销。
自测三问(点开对答案) 1. 无线为什么用 CA 而不是 CD? —— 自己发射的信号会淹没别人的信号,无法边发边听检测冲突,加上隐藏终端问题。 2. 随机退避解决的是什么问题? —— 两个设备同时等待结束后又同时发送造成的二次冲突。 3. 为什么无线容量要按「每秒包数」而不是「比特率」规划? —— 每个包都要付一次与包大小无关的固定开销,小包时开销占比极高。

下一节:一个 AP 管一片,多片怎么组成一个大网——架构。

相关笔记