当前位置: 首页 > news >正文

【随机访问介质访问控制-1】为什么纯 ALOHA 效率不到 20%?3 大随机访问 MAC 协议拆解

        纯 ALOHA 和时隙 ALOHA 明明就差个 “时间段”,怎么利用率差了快一倍?CSMA 的 “先听后说” 和 CSMA/CD 的 “边听边说” 到底多了啥功能?甚至不知道 CSMA 的三种类型(1 - 坚持、非坚持、p - 坚持)该怎么区分?这篇文章会用 “会议室抢话筒” 的比喻,帮你吃透 ALOHA、CSMA、CSMA/CD 的核心逻辑,还能直接拿捏最短帧长、退避算法等必考计算题。        

一、先搞懂:随机访问协议的本质 ——“抢资源,但有规矩”

        在广播信道(比如早期以太网)里,多个设备共享同一条传输线路,就像一群人挤在会议室抢一个话筒 —— 谁都想说话,但 “同时开口”(信号冲突)会让所有声音都失效。

随机访问协议的核心逻辑很简单:

  1. 自由发送:设备有数据就发,不用等 “调度”(没有集中控制)。
  2. 冲突补救:一旦发现冲突,按规则重传,直到成功为止。
  3. 本质目标:把 “乱哄哄的广播信道”,变成 “能有序传数据的点到点信道”。


二、ALOHA 协议:最 “野蛮” 的 “抢话筒”—— 想插就插

        ALOHA 是随机访问协议的 “鼻祖”,逻辑像 “没主持人的会议室”,完全靠 “自觉”,效率极低但实现最简单。

1. 纯 ALOHA(Pure ALOHA):“不管别人,我先插”

  • 核心思想:设备有数据要发,不做任何检测,直接发送(相当于 “不管有没有人说话,直接插话”)。
  • 冲突怎么判断:发送后等确认,没收到确认就认定冲突。
  • 冲突后怎么办:随机等一段时间(比如 1 秒或 3 秒),再重发
  • 致命缺点:冲突窗口大(两个帧的时间),比如 A 刚发完一帧,B 在 A 发完前或发完后一帧内插话,都会冲突,导致信道利用率最高仅 18.4%(10 个人抢话筒,8 个都在撞车)。 -- 信道利用率极低。

2. 时隙 ALOHA(Slotted ALOHA):“按时间段插,别乱抢”

  • 核心改进:把时间切成等长的 “时间段(时隙)”,规定设备只能在每个时隙的开始时刻发送(相当于 “主持人说‘现在到 1 号时段,要说话的现在说’,其他时间不能插”); -- 轮流说
  • 冲突变化:冲突窗口缩小到 “一个帧的时间”—— 只有两个设备在同一个时隙插话才会冲突;
  • 冲突处理:发生冲突后,等待随机个时隙后重传。
  • 优点:通过限制发送时机,将冲突窗口缩小到一个帧时,提高了信道利用率(最高可达36.8%),但需要全网时间同步。
  • 缺点:需要全网 “对表”(时间同步),少一个设备同步就会乱套。
一张表分清两种 ALOHA
协议类型发送规则冲突窗口最高信道利用率核心优缺点
纯 ALOHA随时发送,无需同步2 个帧时18.4%实现简单,利用率极低
时隙 ALOHA仅时隙开始时发送,需同步1 个帧时36.8%利用率更高,依赖时间同步


三、CSMA 协议:“先听再说”—— 减少冲突的 “聪明抢法”

        ALOHA 的问题是 “不看场合乱插话”,CSMA(载波监听多路访问)加了 “先听后说” 的机制 —— 就像 “说话前先听有没有人在讲,没人讲再插”,大幅降低冲突概率。

CSMA 分三种类型,核心区别在 “信道忙时怎么等”:

1 - 坚持 CSMA:“等也要等,一有空就插”

  • 流程:监听信道→空闲?立刻发(概率 100%)→忙?一直听,直到空闲再立刻发。
  • 比喻:盯着话筒,只要没人说,马上抢过来开口。
  • 特点:信道不浪费(几乎没空着的时候),但多个人同时盯的话,一有空就集体抢,必然会发生冲突。

2. 非坚持 CSMA:“忙就走,过会儿再来听”

  • 流程:监听信道→空闲?立刻发→忙?放弃监听,随机等一会儿再回来听。
  • 比喻:听着有人说话,不等了,过 5 分钟再回来看看话筒空没。
  • 特点:冲突少(没人抢着等),但信道容易空着(比如话筒空了,没人及时来用),数据延迟变长。

3. p - 坚持 CSMA:“折中一下,看概率插”

  • 适用场景时分信道(时间切成时隙,和时隙 ALOHA 类似)。
  • 流程:监听信道→忙?等下一个时隙再听→空闲?以概率 p 发,概率 1-p 等下一个时隙。
  • 比喻:话筒空了,扔硬币决定(p=0.5 就是 50% 概率开口,50% 等下一轮)。
  • 特点:平衡冲突和延迟 —— 比 1 - 坚持冲突少,比非坚持信道利用率高,是 “中间方案”。
CSMA 三种类型对比表
类型信道忙时策略冲突概率信道利用率延迟大小
1 - 坚持 CSMA持续监听,空闲即发
非坚持 CSMA随机等待后重听
p - 坚持 CSMA按概率发送 / 等下一时隙


四、CSMA/CD 协议:以太网的 “边说边听,撞了就停”—— 解决冲突的终极方案

        CSMA 的问题是 “发了之后不知道有没有冲突”,CSMA/CD(载波监听多路访问 / 冲突检测)加了 “冲突检测”,相当于 “边说话边听自己的声音,一旦发现和别人撞了,立刻闭嘴”—— 这是传统半双工以太网的核心协议。

1. 核心思想:4 句话记住

先听后发,边听边发,冲突停发,随机重发

2. 关键机制(必考!)

(1)冲突检测:怎么知道 “撞车” 了?

        发送前和发送中持续检测信道 —— 如果有两个信号同时传输,电压会叠加变高,一旦检测到这种变化,就认定 “冲突了”,立刻做两件事:

  • 停止发送数据(别再浪费信道);
  • 发一个 “强化干扰信号”(让所有设备都知道 “冲突了,别发了”)。
(2)争用期(冲突窗口):多久能发现冲突?
  • 定义:设备从开始发送,到确定 “没冲突” 的最长时间,值为(τ 是信号从信道一端传到另一端的单程时间)。
  • 为什么是 2τ:比如 A 在信道一端发数据,B 在另一端同时发,信号要经过 τ 时间相遇(冲突),冲突信号再经过 τ 时间传回 A,所以 A 最多等 2τ 就能知道有没有冲突。
  • 重要性只要 2τ 内没有检测到冲突,就说明 “这次发送肯定没冲突”。
(3)最短帧长:别 “没听完就说完了”
  • 要求:数据帧的发送时间,必须≥2τ(争用期);
  • 原因:如果帧太短,发送时间<2τ,设备发完了还没等到冲突信号,就不知道 “撞车” 了,数据白发。
  • 公式:最短帧长 = 2τ × 信道带宽。
  • 例子:10Mbps 以太网,τ=25.6μs,最短帧长 = 2×25.6μs×10Mbps=512bit(即 64 字节)—— 这就是以太网帧最小 64 字节的由来!
(4)截断二进制指数退避算法:冲突后 “等多久再发”?

        用途:确定冲突后重传的等待时间。

冲突后不能立刻重发(不然会再次冲突),要随机等一段时间,规则如下:

  • 上限:如果重传 16 次还没成功,就丢弃数据,向高层报错(别再浪费资源)。

3. 完整流程:一步不差

  1. 设备准备好数据,开始监听信道;
  2. 若信道忙,持续监听;若信道空闲且保持 9.6μs(帧间最小间隔,防止连发包冲突),就发送数据。
  3. 发送时持续检测信道:
    • 若 2τ 内没冲突,发送成功。
    • 若检测到冲突,立刻停发 + 发干扰信号,执行退避算法,等随机时间后回到步骤 2。
  4. 若重传 16 次都失败,丢弃数据并报错。


五、总结:3 个必拿分要点

  1. 公式类

    • 时隙 ALOHA 最高利用率 36.8%,纯 ALOHA18.4%。
    • 最短帧长 = 2τ× 信道带宽(记住例子:10Mbps 以太网 64 字节)。
  2. 概念类

    • CSMA/CD 的核心是 “冲突检测”,只用于有线以太网。
    • 争用期 = 2τ,是判断冲突的关键时间。
    • 退避算法的 k 值 = min(重传次数,10),最多重传 16 次。
  3. 对比类

    • ALOHA→无监听,效率低。
    • CSMA→有监听(先听后发),无检测。
    • CSMA/CD→有监听 + 检测(边听边发),效率最高。


六、一句话总结

        随机访问协议的进化史,就是 “从不管冲突(ALOHA)→减少冲突(CSMA)→解决冲突(CSMA/CD)” 的过程,核心都是 “在自由发送和有序传输间找平衡”。

http://www.dtcms.com/a/557056.html

相关文章:

  • 有关电子商务网站建设与维护的书籍具有价值的响应式网站
  • C++笔记(面向对象)定义虚函数规则 运行时多态原理
  • 自然语言处理(NLP)之文本预处理:词元化——以《时间机器》文本数据集为例
  • Java-165 Neo4j 图论详解 欧拉路径与欧拉回路 10 分钟跑通:Python NetworkX 判定实战
  • WindowsRE文件夹不显示
  • 【PID】非标准PID控制是否影响控制目标 chapter1(补充)思考
  • 数码和easy
  • 做网站跟app的区别做网站的要求
  • 酷维网站模版wordpress 分类页id
  • MySQL查询一行数据为何变慢?深度排查与优化指南
  • Crashpad介绍
  • 博兴县建设局网站襄阳云平台网站建设
  • 若依分离版前端部署在tomcat刷新404的问题解决方法
  • qcustomplot 显示坐标轴
  • Java Web 项目打包部署全解析:从 IDEA 配置到 Tomcat 运行
  • 如何让网站收录公司名免费网络空间搜索引擎
  • 上海门户网站建设方案河源网络公司
  • WebSocket实战:构建Spring Boot实时聊天应用
  • Go高并发在企业级项目中的实战应用:数据库访问与GIN+GORM深度实践
  • 在网站写小说怎么做封面产品宣传册设计与制作
  • AI学习和研究——环境部署
  • ubuntu中ssh连接root用户
  • (146页PPT)某大型汽车集团企业数字化转型数智化战略规划设计方案(附下载方式)
  • 【Koa.js】 第十课:RESTful API 设计
  • 网站想换个风格怎么做打开网站建设中是什么意思
  • 【26】OpenCV C++实战篇——opencv中 .at<uchar>() 和.ptr<uchar>() 使用方法的区别
  • 2025年10月AGI月评|OmniNWM/X-VLA/DreamOmni2等6大开源项目:自动驾驶、机器人、文档智能的“技术底座”全解析
  • AI训练新纪元:强化学习与LLM深度融合,ChatGPT背后的革命性突破
  • Hudi、Iceberg、Delta Lake、Paimon四种数据湖的建表核心语法
  • 【高阶数据结构】红黑树