【随机访问介质访问控制-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) " 的过程,核心都是 "在自由发送和有序传输间找平衡"。

相关推荐
CodeLongBear7 小时前
计算机网络Day01
网络·学习笔记·计算机网路
jenchoi4137 小时前
【2025-10-31】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
网络·安全·web安全·网络安全
星创易联8 小时前
CAN总线网关到底是什么:双5g车载网关案例
网络
夜听莺儿鸣8 小时前
803-001_WIFI通信之基础知识
网络·无线通信
打不了嗝 ᥬ᭄10 小时前
传输层协议UDP
linux·网络·网络协议·udp
_殊途10 小时前
计算机网络-网络层
网络·计算机网络·智能路由器
七七七七0710 小时前
【计算机网络】深入理解网络层:IP地址划分、CIDR与路由机制详解
linux·服务器·计算机网络·智能路由器
敲上瘾10 小时前
Linux系统C++开发工具(四)—— jsoncpp 使用指南
linux·服务器·网络·c++·json
chalmers_1513 小时前
服务器启动的时候就一个对外的端口,如何同时连接多个客户端?
运维·服务器·网络