现代智能汽车中的无线技术20——Wi-Fi(8)

本文介绍 CSMA/CA和RTS/CTS 握手机制

CSMA/CA (载波监听多路访问/冲突避免) 是 Wi-Fi 网络中最底层的"交通规则"。

如果说光纤通信是"专线专用的铁路",那么 Wi-Fi 就是"没有红绿灯的环岛"。CSMA/CA 就是为了保证大家在乱糟糟的空气中不撞车而设计的一套礼貌原则。

它的核心逻辑可以概括为四个字:"先听后说"。

一、 名字拆解

CS (Carrier Sense 载波监听):

  • 意思就是**"听"**。在想说话之前,先竖起耳朵听听空气里有没有电波的声音。

MA (Multiple Access 多路访问):

  • 意思就是**"很多人"**。很多人共用这一个信道。

CA (Collision Avoidance 冲突避免):

  • 意思就是**"尽量不撞"**。

  • 对比: 有线以太网用的是 CSMA/CD (冲突检测)。以太网是"边说边听,撞了就停";Wi-Fi 是"因为我说话时听不见别人,所以我必须确保万无一失再开口"。

二、 CSMA/CA 的工作流程(礼貌的绅士)

假设你的手机(A)想给路由器发一张照片:

第一步:监听 (Listen)

  • A 监测信道。

  • 如果有人在发数据(信道忙),A 就闭嘴,继续监听。

  • 如果信道空闲了,A 也不能马上发(怕别人也刚等到空闲,大家一起冲出去会撞)。

第二步:等待 (DIFS & Backoff)

  • DIFS (固定等待时间): 这是一个必须等待的"冷静期"。

  • 随机退避 (Random Backoff): 这是 Wi-Fi 的精髓。

  • A 会在心里随机选一个数字(比如 5)。

  • B 也想发,随机选了个数字(比如 8)。

  • 大家开始倒数:信道每空闲一个时隙,数字减 1。

  • A 数到 0 了(比 B 快),A 抢到了信道!

第三步:发送 (Transmit)

  • A 开始发送数据帧。

第四步:确认 (ACK)

  • 路由器收到数据后,必须回一个 ACK (确认帧) 给 A。

  • A 收到 ACK →→ 发送成功。

  • A 没收到 ACK →→ 判定刚才肯定撞车了,数据丢了。A 会把刚才的随机范围扩大(比如从 0-15 变成 0-31),重新排队重发。

三、 它的局限性:隐藏节点问题

CSMA/CA 虽然很礼貌,但有个死穴。

场景: 路由器在中间,你(A)在左边,老王(B)在右边。A 和 B 离得太远,互相听不见。

  1. A 听了一下(CSMA),没听见 B 说话,于是 A 开始发数据给路由。

  2. 同时,B 听了一下,没听见 A 说话,B 也开始发数据给路由。

  3. 结果: 路由器同时收到了 A 和 B 的信号,信号在路由器那里撞车了,全废了。

这就是隐藏节点问题。为了解决这个,Wi-Fi 引入了 RTS/CTS (请求发送/清除发送) 机制:

RTS/CTS 的工作流程(预约机制)

为了防止这种"虽然听不见对方,但还是撞车"的惨剧,Wi-Fi 引入了一个中间人协调机制。

第一步:A 发起请求 (RTS)

  • A 给路由器发一个很短的 RTS (Request To Send) 帧。

  • 意思: "老大,我要发一个大文件,大约占用 5 毫秒,请批准!"

  • 此时,老王听不见这个 RTS。

第二步:路由器全场广播 (CTS)

  • 路由器收到请求,如果信道空闲,它会立刻广播一个 CTS (Clear To Send) 帧。

  • 意思: "收到了!批准 A 发送!其他人(包括老王)全部闭嘴 5 毫秒!"

  • 关键点:虽然老王听不见 A,但他一定能听见路由器。

第三步:老王闭嘴 (NAV 设置)

  • 老王听到了路由器的 CTS,虽然不是发给他的,但他解析出了"闭嘴 5 毫秒"的指令。

  • 于是老王启动 NAV (网络分配矢量) 计时器,把自己锁住,暂停发送。

第四步:A 发送数据

  • A 收到 CTS 后,开始放心地发送真正的长数据包,不用担心有人插嘴了。

RTS/CTS 的代价与阈值

既然这个机制这么好,为什么不默认开启? 因为太啰嗦了。

  • 代价: 本来直接发数据就行,现在非要先发一个 RTS,再等一个 CTS,这增加了额外的开销 (Overhead) 和时延。如果是发微信这种小包,握手的时间比发数据的时间还长,得不偿失。

  • RTS 阈值 (Threshold):

  • 因此,路由器里通常有一个设置叫 RTS Threshold(默认通常是 2347 字节)。

  • 小于阈值的小包: 直接发,不握手(赌一把,撞了重发)。

  • 大于阈值的大包: 必须握手(因为大包一旦撞了,重发成本太高,不如先花点时间预约)。

总结

CSMA/CA 是一套**"牺牲效率换取公平和稳定"**的机制。 因为它太谨慎了(又要听,又要等随机数,还要等 ACK),所以 Wi-Fi 的实际吞吐量往往只有理论速率的 50%~60%(被称为"半双工效率损耗")。

RTS/CTS 就像是举手发言制度。在人少的时候(无隐藏节点),直接说话效率最高;但在人多且互相看不见的时候,必须先举手,老师点名允许后才能说,否则课堂就乱套了。

相关推荐
qq_254674412 小时前
HTTP/3
网络
状元岐2 小时前
C#上位机通信故障排查步骤手l
网络·c#
北海速度网络2 小时前
广东IP持续刷量攻击难根治?深度剖析PCDN流量劫持与JA3/JA4精准防护方案
服务器·网络·tcp/ip
NewCarRen2 小时前
汽车安全威胁分析与风险评估技术及缓解方法
网络·安全·web安全
oioihoii2 小时前
TCP心跳机制:看不见的“生命线”
网络·网络协议·tcp/ip
molaifeng10 小时前
Go 语言如何实现高性能网络 I/O:Netpoller 模型揭秘
开发语言·网络·golang
知乎的哥廷根数学学派12 小时前
基于多模态特征融合和可解释性深度学习的工业压缩机异常分类与预测性维护智能诊断(Python)
网络·人工智能·pytorch·python·深度学习·机器学习·分类
网络工程师_ling12 小时前
【 Elastiflow (ELK) 网络流量分析系统 部署教程】
网络·elk
2301_7807896612 小时前
高防 IP 的选择与配置确保业务稳定性
网络·网络协议·tcp/ip