CSMA/CA(载波侦听多路访问/冲突避免)

CSMA/CA 的全称是 载波侦听多路访问/冲突避免 。它是Wi-Fi(IEEE 802.11标准)所使用的媒体访问控制协议。你可以把它理解为无线网络中,所有设备为了"公平、有序"地使用共享的无线信道而必须遵守的一套"交通规则"。

它的核心思想是:先听后说,避免冲突


为什么需要CA(冲突避免),而不是CD(冲突检测)?

这是理解CSMA/CA的关键。在有线以太网中,使用的是 CSMA/CD

  • 有线网络:设备可以一边发送数据,一边侦听线路上是否有其他信号(冲突)。一旦检测到冲突,就立即停止发送,等待一个随机时间后重试。这就像在一个安静的房间里,你说话时能立刻听到是否有人同时也在说话。
  • 无线网络
    1. 无法边听边说:同一个Wi-Fi设备的天线很难在发送强信号的同时,去侦听微弱的其他信号(这被称为"远近问题")。
    2. 隐藏节点问题:设备A和设备C可能都在设备B的通信范围内,但它们彼此之间却"听不到"对方。如果A和C同时向B发送数据,就会在B处发生冲突,而A和C自己却不知道。

由于无线环境存在这些天然缺陷,无法可靠地"检测"冲突 ,所以Wi-Fi的策略转变为尽最大努力"避免"冲突。这就是CA的由来。


CSMA/CA 的工作流程(简化版)

当一个设备(比如你的手机)想要发送数据时,它会遵循以下步骤:

1. 载波侦听

  • 物理侦听:设备用无线电天线检查信道是否空闲(是否有其他Wi-Fi信号)。
  • 虚拟侦听 :通过一种叫做 NAV 的机制。每个数据帧中都包含一个"持续时间"字段,告诉其他设备:"我要占用信道这么久"。其他设备听到后,会把自己的NAV计时器设为这个值,在计时器归零前,即使物理上信道空闲,它们也认为信道是"忙"的。这就像预约了会议室的使用时段。

2. 等待DIFS

  • 如果信道从"忙"变为"空闲",设备不会立即发送,而是先等待一个固定的时间间隔,称为 DIFS。这给高优先级的帧(如ACK确认帧)一个优先发送的机会。

3. 随机退避

  • 这是CA的精髓所在,用于解决"多个设备同时等待DIFS结束"可能引发的冲突。
  • 在DIFS结束后,设备会启动一个 退避计时器 。计时器的值是一个在 竞争窗口 内随机选择的时隙数。
  • 只要信道保持空闲,计时器就会逐时隙递减。
  • 如果信道变忙,计时器会暂停,直到信道再次空闲并度过一个DIFS后,才继续递减。
  • 谁的计时器最先减到零,谁就获得发送权
  • 如果发生发送失败(没收到ACK),竞争窗口会加倍,然后重新选择随机值,这降低了再次冲突的概率,称为"二进制指数退避"。

4. 发送与确认

  • 获得发送权的设备开始传输数据帧。
  • 接收方成功收到帧后,会等待一个很短的 SIFS 间隔,然后回复一个 ACK 确认帧。
  • 发送方收到ACK,才算本次传输成功。如果没收到ACK,则认为发生了冲突或错误,将进入重传流程。

一个生动的比喻:会议室讨论

想象一个没有主持人的会议室(共享无线信道),大家(无线设备)想发言(发送数据):

  1. 先听 :你想说话时,先听听有没有人在说(载波侦听)。
  2. 等安静 :如果刚才有人在说,等他说完后,你不马上开口,而是礼貌地等一小会儿(DIFS),看看有没有更重要的人(比如主席)要插话。
  3. 抽号等待 :在等待结束后,你和所有也想发言的人,每个人心里默默随机抽一个数字(随机退避值)。数字最小的人可以先发言。
  4. 准备发言 :大家从大数往小数默念,念到你抽到的数字时,如果还没人开口,你就开始发言(发送数据 )。如果有人在你念到数字前开口了,你就暂停计数,等他讲完再继续(信道忙则暂停计时器)。
  5. 确认听懂 :你讲完后,必须等待听众的点头确认(ACK),你才知道他们听清楚了。如果没看到点头,你可能需要稍后重说一遍。

可选的增强机制:RTS/CTS

为了解决严重的"隐藏节点问题",CSMA/CA还有一个可选握手协议:RTS/CTS

  • 发送方 在发送正式数据前,先广播一个很短小的 RTS 帧。
  • 接收方 收到RTS后,回复一个 CTS 帧。
  • 这个RTS/CTS交换过程也包含了NAV信息,能通知发送方和接收方周围的所有设备:"我们两个要通话了,请保持安静预定的一段时间"。
  • 这样,即使隐藏的节点听不到发送方,也能听到接收方发出的CTS,从而避免冲突。这就像在开会前大声说:"我和小王要讨论一下,大概需要5分钟"。

总结

CSMA/CA(载波侦听多路访问/冲突避免)机制是Wi-Fi设备访问共享无线信道的**基础规则和核心机制。设备在发送数据前必须先监听信道是否空闲。它用一套复杂的"礼貌守则"和"随机排队"机制,取代了有线网络中简单的"冲突后重试"机制,从而克服了无线介质固有的挑战。

RTS/CTS是建立在CSMA/CA之上,用于解决特定问题(主要是隐藏节点)的一个可选增强协议。

核心区别对比表

特性 CSMA/CA (载波侦听多路访问/冲突避免) RTS/CTS (请求发送/清除发送)
工作原理 1. 物理载波侦听 :检测信道是否有射频信号。 2. 虚拟载波侦听 :检查NAV计时器。 3. 随机退避 :如果信道忙,则等待一个随机时间再试。 4. ACK确认:接收方必须为每个单播数据帧回复ACK。 1. 发送方在发送实际数据前,先发送一个短RTS 帧。 2. 接收方回复一个短CTS 帧。 3. RTS/CTS帧中都包含"传输所需总时间",用于设置其他站点的NAV。
作用层面 作用于单个数据帧的发送过程。每一次发送(即使是RTS帧本身)都必须遵循CSMA/CA流程。 作用于一次完整的数据传输会话。它在CSMA/CA流程之后、长数据帧发送之前插入,为该长帧"开辟绿色通道"。
启用方式 始终启用,无法关闭。是Wi-Fi协议的基石。 可选启用,通过设置"RTS阈值"来控制。只有数据帧大小超过该阈值时,才会触发RTS/CTS流程
  1. CSMA/CA冲突避让:类似于红绿灯🚥的交通规则,所有WiFi帧都需要遵守。
  2. 在发送报文前先等待DIFS,等待结束后启动一个随机退避计时器NAV,如果信道忙,NAV计时器会暂停。
  3. 接收方收到帧后,会等待SIFS间隔才回复ACK了。
  4. 如果开启RTS/CTS,会改变NAV计时器。

问题一:为什么在发送前都要等待DIFS/SIFS,不能直接启动随机退避吗?

1. DIFS 的作用:区分"新对话"和"对话中的确认"

  • SIFS 是协议中最短 的间隔。高优先级的帧(如 ACK、CTS,以及分片数据包的后续帧)在SIFS结束后就可以立即发送。
  • DIFS 比SIFS长。它用于想发起新传输的普通数据帧。
  • 这样设计的结果是 :当一个数据帧发送完毕,信道空闲后,接收方只需要等待SIFS就可以抢在任何人之前发送ACK。而其他想发送新数据的设备,必须等待更长的DIFS。这就保证了ACK永远拥有最高优先级,不会被新的数据帧冲撞。
  • 如果取消DIFS,直接退避:想象一下,数据帧刚发完,发送方和一堆竞争设备同时开始随机退避。那么ACK帧(也需要参与退避)很可能无法立即发送,导致发送方误以为冲突或丢失而重传,极大降低效率。
  • SIFS的时长被设计得足够短(通常为10μs或16μs),确保在这些序列中,除了预期的下一帧发送者,其他任何设备都没有机会获得信道(因为它们还在等待DIFS或退避中)。

简单比喻:

把无线信道比作一个对所有人开放的演讲台。

  • SIFS 就像当前演讲者和他的对话伙伴之间的极短停顿,只允许他们快速问答("你明白了吗?""明白了!")。
  • DIFS 则像是当前对话完全结束 后,留给想发起全新话题 的人的一个礼貌等待时间。在这个等待时间之后,所有想发言的人再进行"抽号"(随机退避)来决定谁先讲。
  • 如果没有DIFS这个"礼貌等待时间",在老话题刚结束的瞬间,想提问的人(发ACK)和想讲新话题的人就会混在一起"抽号",导致提问经常被耽搁,整个对话效率低下。

问题二:如果开启RTS/CTS,NAV计时器在已有的随机时间上增加?
  • 收到RTS或CTS的任何设备,无论它之前正在做什么(包括正在退避) ,都会立刻用新收到的"持续时间"值覆盖自己当前的NAV
  • 这个NAV值是一个绝对的时间长度,而不是在原有随机退避值上的增加。
  • 对于正在退避的设备,它的退避计时器会在NAV期间被暂停。等NAV结束且信道物理空闲后,再经过一个DIFS,才会继续递减之前暂停的退避计时器。
  1. 都是信道空闲时的等待时间,SIFS的时长足够短(通常为10μs或16μs),DIFS是为了让使用SIFS间隔的ACK等报文优先发送。
  2. RTS/CTS的NAV定时器,会覆盖让所有帧等待某个具体时间,完成后重新开始等待DIFS.
相关推荐
X7x51 小时前
ACL访问控制列表:网络安全的守护神
网络协议·网络安全·信息与通信·acl
minji...2 小时前
Linux 网络套接字编程(六)TCP的通信是全双工的,自定义协议的定制,序列化和反序列化
linux·运维·服务器·网络·c++
(Charon)2 小时前
【C++/Qt】Qt 实现 TCP Client:从功能构思到消息收发与日志保存
qt·网络协议·tcp/ip
hhb_6182 小时前
Tcl脚本自动化运维实操落地案例详解
运维·网络·自动化
老王谈企服2 小时前
流程型制造业生产优化,未来将如何被大模型技术重构?2026智造深研:实在Agent驱动端到端生产闭环
大数据·网络·人工智能·ai·重构
YaBingSec2 小时前
玄机网络安全靶场:GeoServer XXE 任意文件读取(CVE-2025-58360)
java·运维·网络·安全·web安全·tomcat·ssh
VBsemi-专注于MOSFET研发定制3 小时前
面向高可靠与快速响应需求的高端报警系统功率MOSFET选型策略与器件适配手册
网络·人工智能
默 语3 小时前
AI Agent 数据感知层实战:网络端点定位在跨境电商、金融风控、自动化营销中的技术实现
网络·人工智能·自动化
科技牛牛3 小时前
IP数据成新商业资源:如何合理利用IP地址进行精准营销
网络·运营·查询ip所在地·ip广告营销·ip数据