CSMA/CA 的完整时序=先听(信道忙就等)→ 空闲后付一段 DIFS → 抽随机倒计时、边等边让(信道忙就把表按停)→ 计到 0 才发 → SIFS 内等 ACK,没等到就当丢了、加倍重来;RTS/CTS 再加一道"先申请发言权",专治隐蔽站。
5.16 给了 CSMA/CA 的四步框架和三条物理理由(半双工、假空闲、隐蔽站);5.8 的 CSMA/CD 一直作为对照组出现。本节把无线这套规矩展开到帧级细节:帧间隔的礼仪分级(SIFS/DIFS)、退避计数器的冻结机制、"没撞也先让"与 CD 的根本区别、RTS/CTS 怎么替隐蔽站点名。5.19 说的"实际速率永远低于标称",本节给出第一笔明细账——每帧固定付出的听、等、退避、等回执。
一、从"检测冲突"到"避免冲突":前提就不同
5.8 讲过 CSMA/CD 的三步:先听、边说边听、撞了就停。无线把"边说边听"废了——自己发射的信号盖住接收(半双工),听到的空闲可能是假的(信号衰减),隐蔽站互相听不见(撞车发生在接收方,发送方全程不知)。检测的前提塌了,策略只能反过来:既然撞了也发现不了,就在撞之前把撞车概率压下去——这就是"避免(Avoidance)"的全部含义。
一句话记住分工:CD 是"事后止血",CA 是"事前排队"。
二、帧间隔:空气里的礼仪分级
无线里的"先听后说"不是听到空闲就立刻说,还得按帧的类型先付一段静默时间:
- SIFS(Short Interframe Space,最短):留给 ACK、CTS 这类回执/控制帧——它们最急,AP 一收完数据必须尽快回话,不给别人插嘴的空当;
- DIFS(DCF Interframe Space,较长):留给普通数据帧——你比回执多等一小段,正好保证"上一轮的回执永远优先于下一轮的发言"。
这套分级的妙处:谁等得短谁先说,优先级不是靠喊,是靠"付的静默时间短"。ACK 永远赢过新数据,所以回执链不会被打断。
三、随机退避的完整细节:没撞也先让,忙就把表按停
空闲并付完 DIFS 之后,还不能直接发——先在 0~CW(竞争窗口)里抽一个随机数当倒计时,信道每空闲一个时隙就减 1,计到 0 才发送。两个关键细节:
- 冻结:倒计时数到一半,别人开口了——把表按停;等信道空闲、再付一个 DIFS,从断点继续数。抽到的数字小就能插进去,数字大的继续排队——一次抽签决定一段时间的先后,而不是靠反应速度硬挤;
- 失败加重:SIFS 内没等到 ACK = 当作丢了,竞争窗口翻倍,在更大的范围里重新抽签(撞得越多、让得越久,和 5.8 指数退避同思想),重传有次数上限。
这是与 CD 退避最深的区别:CD 是撞了才退(赌输了赔钱),CA 是每帧都先退(进场先买保险)。代价也随之转移:CD 亏在撞车浪费的帧,CA 亏在每帧固定付出的听、DIFS、退避、等 ACK——人少时这笔开销白白付,人多时它换来秩序。
四、等 ACK:无线唯一的送达凭据
有线以太网发完就算成功(冲突检测就是凭证);无线每帧都必须等 ACK,没回执就当丢了。三个推论:
- 丢了不通知上层、不重传到天荒地老——重传次数超限就放弃,可靠性补课是 TCP 的事(3.18);
- "信号好"不等于"能送达"——干扰导致的坏帧同样等不到 ACK,表现就是重传率高、速度自动降档(呼应 5.19 的调制降档);
- 多设备同信道时,这份开销被平方放大——你要排队、你的帧又变慢占线更久,别人也跟着排,延迟抖动就是这么来的。
五、RTS/CTS:给隐蔽站点名
5.16 留的问题:A、B 互相听不见但都能到 AP,同时开口就在 AP 处撞,双方还都以为信道空闲。解法是让 AP 当裁判:
A 先发一个很小的 RTS(申请发言,附"我要占线多久")→ AP 回 CTS 广播("批准,全场闭嘴这一段时间")→ B 听不见 A,但听得见 AP 的 CTS,于是闭嘴 → A 放心发数据、等 ACK。隐蔽站被 CTS 点名,撞车从机制上消失。
代价:每次通信多付 RTS + CTS 两回合。所以它默认关闭,只在长帧、高干扰、隐蔽站确实存在的场合启用——用两回合小帧的确定性开销,换一整帧大数据的零冲突。
六、动手 Demo(Demo69:亲手量出"排队税")
- 只留一台设备联网,
ping 192.168.1.1 -n 20,记下平均延迟和抖动(Windows 会给你"最长/最短/平均")。 - 让第二台设备(家人手机)连同一个 2.4G 信道,开始刷视频,再跑一遍同样的 ping。观察点:平均延迟和抖动明显上涨——这就是退避排队在被实时支付。
- 两台设备同时下载大文件,看各自速度加起来还不如一台独跑——同信道就是一条空气总线(5.19),排队税人人要交。
- 把你的设备切到 5G 同名网络(或另一个信道),再对比延迟——同信道排队被换成了另一块地。
- 对比"信号格数":此时你信号可能仍满格,但延迟翻倍——满格衡量的是①扫描能听见,排队发生在后面的机制里(收 5.18 分诊)。
- (条件允许)打开微波炉,2.4G 延迟立刻飙升——2.4G 频段里微波炉也是"抢话的",它不遵守 Wi-Fi 的礼仪。
- 收尾:把第 1 步和第 2 步的延迟差÷2,估算"每台设备的排队税",写进 30 秒实验。
七、30 秒实验
ping 网关看"平均延迟"这一个数字就够了:单设备时的延迟 ≈ 无线机制本身的固定开销;人多时延迟的涨幅 ≈ 排队税。记住这两个基线,以后判断"卡是人多还是信号差"就有了尺子。
八、常见误区
- "退避=撞了才退"。那是 CD。CA 没撞也先抽签排队,撞车被压在发生之前。
- "听到空闲就该立刻发"。要再付一段 DIFS,回执类帧(SIFS)永远优先——这不是浪费,是回执链不被打断的保证。
- "RTS/CTS 默认开着"。默认关,只有长帧/高干扰场景手动启用,代价是每帧多两回合。
- "没收到 ACK 会一直重传"。有次数上限,超限放弃;上层可靠性是 TCP 的事(3.18)。
- "延迟高=信号差"。同信道人多是延迟高的最常见原因,信号满格也照卡(5.19 排队、本节机制)。
九、折叠自测
- 无线为什么只能"避免"不能"检测"冲突?三条物理理由各是什么?
- SIFS 和 DIFS 各留给谁?这套分级保证了什么?
- 退避"冻结"是什么?它与 CD 退避的根本区别一句话?
- SIFS 内没等到 ACK 的处理流程?重传无限次吗?
- RTS/CTS 治隐蔽站的关键一环是什么?为什么默认关闭?
- 实际速率低于标称的第一笔账是哪笔?
答案:① 半双工(自发自收盖住接收)·假空闲(衰减)·隐蔽站(撞在接收方)。② SIFS 给 ACK/CTS,DIFS 给普通数据帧;回执永远优先于新发言。③ 别人开口就按停倒计时、空闲后从断点继续;CD 撞了才退、CA 没撞也先让。④ 当作丢了 → CW 翻倍重新抽签重传;有次数上限。⑤ B 听不见 A 但听得见 AP 的 CTS(被点名闭嘴);多两回合控制帧,只在长帧/高干扰启用。⑥ 每帧固定付的"先听 + DIFS + 退避 + 等 ACK"。
十、下一步学什么
- ☑ 5.21 无线局域网的安全性(WPA2) ✅ 已完成 —— 无线局域网的安全性(WPA2):空气共享逼出来的安全设计;5.18 点了位置的"四步握手"在本节正式落地
相关笔记
- 无线局域网的安全性(WPA2) —— 上一节:它管"谁先说话",本节管"说的话能不能被听见的人看懂"
- 无线电波的重复利用(通信速度) —— 上一节:本节讲的"排队税"就是它说的实际速率第一笔账
- 不用网线也可轻松创建网络(无线局域网) —— 四步框架与三条物理理由的出处,本节逐帧展开
- 控制发送数据的时间(CSMA/CD) —— 全程对照组:Jam、指数退避、"撞了才退"vs"没撞先让"
- 连接无线局域网(联网) —— 信号格数只管"听得见",排队发生在连接之后的机制里
- 对应用程序的数据进行可靠传输(TCP) —— 无线层放弃后的可靠性补课在 TCP
- 网络的具体结构(接口(端口)、链路) —— "介质是否共用"决定要不要这套秩序