介质访问控制

介质访问控制概述

当多个站点共享同一条广播信道时(如传统以太网的总线拓扑、无线局域网),就会出现”谁可以使用信道”的问题。介质访问控制(Medium Access Control, MAC)就是解决这个问题的机制。

介质访问控制

介质访问控制是数据链路层的一个子层,负责在共享信道的多个站点之间协调信道的使用权,避免或解决冲突,使多个站点能够高效、公平地共享信道资源。

介质访问控制协议分为三大类:

  1. 信道划分协议:将信道资源划分为固定的小块分配给各站点(FDM、TDM、WDM、CDM)
  2. 随机访问协议:站点随机访问信道,可能发生冲突,通过冲突检测或避免来解决(ALOHA、CSMA/CD、CSMA/CA)
  3. 轮询访问协议:通过中心控制或令牌传递来协调访问(令牌环、轮询)

信道划分协议

频分多路复用(FDM)

将信道的总带宽划分为若干个互不重叠的子频段,每个站点固定占用一个子频段进行通信。各站点可以同时传输,互不干扰。

  • 优点:无冲突,各站点可同时通信
  • 缺点:信道利用率低(站点不发送时其频段也空闲),不灵活(新站点需要分配新频段)
  • 应用:广播电台、有线电视、ADSL

时分多路复用(TDM)

将时间划分为固定长度的帧,每个帧再划分为若干个时隙,每个站点固定占用一个时隙。各站点按时间顺序轮流使用信道的全部带宽。

  • 优点:无冲突,各站点公平
  • 缺点:站点不发送时其时隙也浪费,不灵活
  • 应用:E1/T1 数字载波、ISDN

波分多路复用(WDM)

在光纤通信中,使用不同波长(颜色)的光载波承载不同的信号,通过棱镜或衍射光栅进行合波和分波。本质上是光域的频分复用。

  • 应用:光纤通信主干网,单根光纤可同时传输几十甚至上百个波长

码分多路复用(CDM)

每个站点使用一个唯一的码片序列(Chip Sequence),各站点可以同时使用相同的频率发送数据。发送方将数据比特与码片序列进行异或运算,接收方通过码片序列的正交性恢复出原始数据。

  • 优点:各站点可同时通信,抗干扰能力强
  • 缺点:需要码片同步,实现复杂
  • 应用:3G 移动通信(CDMA)

随机访问协议

ALOHA 协议

ALOHA 是最早的随机访问协议,由夏威夷大学 Norman Abramson 于 1970 年提出。

纯 ALOHA(Pure ALOHA)

  • 站点有数据就立即发送,不监听信道
  • 如果发生冲突(两个或多个站点同时发送),所有冲突帧都损坏
  • 发送方在一段时间内未收到确认,则等待一段随机时间后重传
  • 信道利用率(吞吐量)S=Ge2GS = G \cdot e^{-2G},最大值约为 18.4%(当 G=0.5G=0.5 时)

其中 GG 是单位时间内所有站点发送的总帧数(包括新帧和重传帧)。

时隙 ALOHA(Slotted ALOHA)

  • 将时间划分为固定长度的时隙,站点只能在时隙的开始时刻发送
  • 冲突只可能发生在同一个时隙内,冲突窗口缩小了一半
  • 信道利用率S=GeGS = G \cdot e^{-G},最大值约为 36.8%(当 G=1G=1 时)

时隙 ALOHA 的吞吐量是纯 ALOHA 的两倍。

CSMA 协议

CSMA(Carrier Sense Multiple Access,载波监听多路访问)的核心思想是:发送前先监听信道,如果信道空闲才发送。

根据信道忙时的处理策略和发送后的冲突处理方式,CSMA 分为:

1-坚持 CSMA

  • 信道空闲:立即发送
  • 信道忙:继续监听,一旦空闲立即发送(坚持发送)
  • 冲突概率高(多个站点同时等待,信道一空闲就同时发送)

非坚持 CSMA

  • 信道空闲:立即发送
  • 信道忙:等待一段随机时间后再监听(不坚持)
  • 冲突概率低,但信道利用率可能较低(等待期间信道可能空闲)

p-坚持 CSMA

  • 信道空闲:以概率 pp 发送,以概率 1p1-p 延迟到下一个时隙
  • 信道忙:继续监听
  • 平衡了冲突概率和信道利用率

CSMA/CD 协议

CSMA/CD(Carrier Sense Multiple Access with Collision Detection,载波监听多路访问/冲突检测)是传统以太网使用的介质访问控制协议。

工作原理

CSMA/CD 的工作过程可以概括为”先听后发,边发边听,冲突停发,随机重发”:

  1. 载波监听:发送前先监听信道,如果信道忙则等待
  2. 发送数据:信道空闲时开始发送
  3. 冲突检测:发送过程中继续监听信道,检测是否发生冲突
  4. 冲突处理:如果检测到冲突,立即停止发送,并发送一个阻塞信号(Jamming Signal),通知所有站点发生了冲突
  5. 随机重传:等待一段随机时间后,重新尝试发送

争用期与最小帧长

冲突检测的关键问题是:发送方需要多长时间才能检测到冲突?

设信号在信道上的单程传播时延为 τ\tau。最坏情况下,发送方在发送后经过 2τ2\tau(往返传播时延)才能检测到冲突。这个 2τ2\tau 称为争用期(Contention Period)冲突窗口

因此,最小帧长必须满足:

Lmin=R×2τL_{\min} = R \times 2\tau

其中 RR 是数据率,2τ2\tau 是争用期。

对于传统以太网(10 Mbps,最大电缆长度 2500 m,信号传播速度约 2×1082 \times 10^8 m/s):

  • τ=25002×108=12.5μs\tau = \frac{2500}{2 \times 10^8} = 12.5 \mu s
  • 争用期 2τ=25.6μs2\tau = 25.6 \mu s
  • 最小帧长 Lmin=10×106×25.6×106=256L_{\min} = 10 \times 10^6 \times 25.6 \times 10^{-6} = 256 bit = 64 字节

这就是以太网最小帧长为 64 字节的由来。

二进制指数退避算法

发生冲突后,发送方需要等待一段随机时间再重传。CSMA/CD 使用二进制指数退避算法(Binary Exponential Backoff)

  1. 确定基本退避时间 T0=2τT_0 = 2\tau(争用期)
  2. kk 次冲突后,从整数集合 {0,1,2,,2k1}\{0, 1, 2, \ldots, 2^k - 1\} 中随机选取一个数 rr,等待时间为 r×T0r \times T_0
  3. k=min(重传次数,10)k = \min(\text{重传次数}, 10),即最多到 2101=10232^{10}-1 = 1023 个争用期
  4. 重传 16 次仍失败,则放弃并报告错误

这个算法的特点是:冲突次数越多,等待时间的范围越大(退避),从而减少再次冲突的概率。这是一种自适应的退避策略。

CSMA/CA 协议

CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance,载波监听多路访问/冲突避免)是无线局域网(IEEE 802.11/WiFi)使用的介质访问控制协议。

为什么无线网络不能用 CSMA/CD?

  1. 隐藏终端问题(Hidden Terminal Problem):A 和 C 都在 B 的通信范围内,但 A 和 C 互相听不到。A 向 B 发送时,C 监听信道以为空闲,也向 B 发送,导致冲突。A 和 C 都无法检测到这个冲突。
  2. 信号强度差异大:无线信号衰减快,发送方的信号强度远大于接收方的,发送方无法在发送的同时监听冲突(“远-近”问题)。
  3. 无线信道误码率高:冲突检测的成本高,不如尽量避免冲突。

因此,无线网络使用 CSMA/CA——在发送前尽量避免冲突,而不是发送后检测冲突。

工作原理

CSMA/CA 的核心机制包括:

  1. 载波监听:发送前监听信道,如果信道忙则等待
  2. IFS(InterFrame Space,帧间间隔)
    • DIFS(DCF IFS):最长,用于数据帧和管理帧。信道空闲后需等待 DIFS 才能发送
    • SIFS(Short IFS):最短,用于 ACK、CTS 等响应帧。接收方收到数据后等待 SIFS 就回复 ACK,确保响应帧优先级高
  3. 随机退避:如果信道在 DIFS 后仍忙,或多个站点同时等待,站点选择一个随机退避时间(时隙数),在退避时间内信道保持空闲才发送。退避计时器递减,信道忙时暂停
  4. RTS/CTS 机制(可选)
    • 发送方先发送一个短的 **RTS(Request To Send,请求发送)**帧,包含数据帧的长度信息
    • 接收方回复 **CTS(Clear To Send,清除发送)**帧,也包含长度信息
    • 所有听到 RTS 或 CTS 的站点都知道即将有数据传输,在指定时间内(NAV,网络分配向量)不发送
    • RTS/CTS 有效解决了隐藏终端问题

轮询访问协议

令牌环协议(Token Ring)

  • 一个特殊的帧(令牌,Token)在环形拓扑中循环传递
  • 只有持有令牌的站点才能发送数据
  • 发送方发送数据后,数据帧在环中传递,接收方复制数据并设置响应位,数据帧最终回到发送方被清除
  • 发送方释放令牌,传递给下一个站点
  • 优点:无冲突,公平,确定性好(可计算最大等待时间)
  • 缺点:令牌丢失或损坏会导致网络瘫痪,需要复杂的令牌管理;环形拓扑可靠性差
  • 应用:IEEE 802.5 令牌环(已基本淘汰)

轮询协议(Polling)

  • 一个主站(Primary)轮流询问各个从站(Secondary)是否有数据要发送
  • 从站只能在被询问时才能发送
  • 优点:无冲突,控制简单
  • 缺点:轮询开销大,延迟高(从站必须等待被轮询),主站故障导致全网瘫痪
  • 应用:IBM 大型机的 3270 终端网络、蓝牙(主从模式)

典型例题

例题1:以太网最小帧长计算

一个 100 Mbps 的以太网,最大电缆长度为 200 m,信号在电缆中的传播速度为 2×1082 \times 10^8 m/s。求该网络的争用期和最小帧长。

参考答案(4 个标签)
CSMA/CD争用期最小帧长以太网
  1. 单程传播时延:τ=2002×108=1μs\tau = \frac{200}{2 \times 10^8} = 1 \mu s
  2. 争用期:2τ=2μs2\tau = 2 \mu s
  3. 最小帧长:Lmin=R×2τ=100×106×2×106=200L_{\min} = R \times 2\tau = 100 \times 10^6 \times 2 \times 10^{-6} = 200 bit = 25 字节

但实际以太网标准规定最小帧长为 64 字节(基于 10 Mbps 以太网 2500 m 电缆的参数),100 Mbps 以太网保持了相同的最小帧长,但最大电缆长度缩短到了 100 m(争用期仍为 2×1002×108=1μs2 \times \frac{100}{2 \times 10^8} = 1 \mu s64×8/(100×106)=5.12μs>1μs64 \times 8 / (100 \times 10^6) = 5.12 \mu s > 1 \mu s,满足要求)。

答案:争用期为 2μs2 \mu s,理论最小帧长为 25 字节(实际标准为 64 字节)。

例题2:CSMA/CD 冲突检测时间

在一个 CSMA/CD 网络中,A 和 B 两个站点相距 1 km,信号传播速度为 2×1082 \times 10^8 m/s。A 在时刻 t=0t=0 开始发送一帧,B 在时刻 t=2μst=2 \mu s 也开始发送一帧。请问: (1) A 在什么时刻检测到冲突? (2) B 在什么时刻检测到冲突?

参考答案(4 个标签)
CSMA/CD冲突检测传播时延争用期
  1. 单程传播时延:τ=10002×108=5μs\tau = \frac{1000}{2 \times 10^8} = 5 \mu s
  2. A 在 t=0t=0 开始发送,B 在 t=2μst=2 \mu s 开始发送。
  3. A 的信号到达 B 的时间:t=0+5=5μst = 0 + 5 = 5 \mu s。但 B 在 t=2μst=2 \mu s 就已经开始发送了,所以 B 在 t=5μst=5 \mu s 检测到冲突(A 的信号到达 B,与 B 自己的信号叠加)。
  4. B 的信号到达 A 的时间:t=2+5=7μst = 2 + 5 = 7 \mu s。A 在 t=7μst=7 \mu s 检测到冲突(B 的信号到达 A,与 A 自己的信号叠加)。

答案:(1) A 在 t=7μst=7 \mu s 检测到冲突;(2) B 在 t=5μst=5 \mu s 检测到冲突。

注意:A 检测到冲突的时间(7μs7 \mu s)小于争用期 2τ=10μs2\tau = 10 \mu s,符合 CSMA/CD 的设计要求。

例题3:ALOHA 吞吐量

在一个纯 ALOHA 网络中,单位时间内所有站点发送的总帧数(包括新帧和重传帧)为 G=1G=1。求该网络的吞吐量。如果改用时隙 ALOHA,吞吐量是多少?

参考答案(4 个标签)
ALOHA吞吐量纯ALOHA时隙ALOHA
  1. 纯 ALOHA 吞吐量公式:S=Ge2GS = G \cdot e^{-2G}G=1G=1 时:S=1e2=e20.135=13.5%S = 1 \cdot e^{-2} = e^{-2} \approx 0.135 = 13.5\%

  2. 时隙 ALOHA 吞吐量公式:S=GeGS = G \cdot e^{-G}G=1G=1 时:S=1e1=e10.368=36.8%S = 1 \cdot e^{-1} = e^{-1} \approx 0.368 = 36.8\%

注意:纯 ALOHA 的最大吞吐量为 1/(2e)18.4%1/(2e) \approx 18.4\%(当 G=0.5G=0.5 时),时隙 ALOHA 的最大吞吐量为 1/e36.8%1/e \approx 36.8\%(当 G=1G=1 时)。当 G=1G=1 时,纯 ALOHA 不在最优工作点。

答案:纯 ALOHA 吞吐量约为 13.5%;时隙 ALOHA 吞吐量约为 36.8%。


练习题

练习1

CSMA/CD 和 CSMA/CA 的主要区别是什么?为什么无线网络使用 CSMA/CA 而不是 CSMA/CD?

参考答案(5 个标签)
CSMA/CDCSMA/CA冲突检测冲突避免隐藏终端

主要区别:

  1. 冲突处理方式

    • CSMA/CD:发送过程中检测冲突,检测到冲突后停止发送并重传
    • CSMA/CA:发送前通过各种机制尽量避免冲突,不检测冲突
  2. 适用环境

    • CSMA/CD:有线网络(传统以太网),信号强度稳定,可同时发送和监听
    • CSMA/CA:无线网络(WiFi),信号衰减大,存在隐藏终端问题
  3. 关键机制

    • CSMA/CD:边发边听、阻塞信号、二进制指数退避
    • CSMA/CA:IFS等待、随机退避、RTS/CTS、NAV

无线网络不能用 CSMA/CD 的原因:

  1. 隐藏终端问题:两个站点互相听不到,但都能听到接收方,可能同时发送导致冲突,且都无法检测到
  2. 信号强度差异:无线信号衰减快,发送方的信号远强于接收方的,无法在发送的同时监听冲突(远-近问题)
  3. 无线信道误码率高:冲突检测成本高,不如尽量避免冲突

练习2

简述二进制指数退避算法的工作过程,并说明为什么要使用指数退避而不是固定时间退避。

参考答案(4 个标签)
二进制指数退避CSMA/CD重传退避算法

工作过程:

  1. 发生冲突后,确定基本退避时间 T0=2τT_0 = 2\tau(争用期)
  2. kk 次冲突后,从 {0,1,,2k1}\{0, 1, \ldots, 2^k-1\} 中随机选一个数 rr,等待 r×T0r \times T_0
  3. k=min(重传次数,10)k = \min(\text{重传次数}, 10),重传16次失败则放弃

为什么用指数退避:

  1. 自适应网络负载:冲突次数多说明网络负载重,需要更大的等待范围来减少再次冲突的概率;冲突少说明负载轻,可以快速重传
  2. 避免持续冲突:如果使用固定时间退避,多个冲突站点可能选择相同的等待时间,导致再次冲突。指数退避随着冲突次数增加而扩大随机范围,大大降低了再次冲突的概率
  3. 公平性:多次冲突的站点等待时间更长,让新站点有更多机会发送,避免”饥饿”

术语对照表

中文术语英文术语缩写说明
介质访问控制Medium Access ControlMAC共享信道的访问协调
载波监听多路访问Carrier Sense Multiple AccessCSMA发送前监听信道
冲突检测Collision DetectionCD发送中检测冲突
冲突避免Collision AvoidanceCA发送前避免冲突
争用期Contention Period-往返传播时延2τ
二进制指数退避Binary Exponential BackoffBEB冲突后随机等待算法
请求发送Request To SendRTSCSMA/CA控制帧
清除发送Clear To SendCTSCSMA/CA控制帧
网络分配向量Network Allocation VectorNAV预约信道时间
帧间间隔InterFrame SpaceIFS帧之间的等待时间
隐藏终端Hidden Terminal-互相听不到的站点
频分多路复用Frequency Division MultiplexingFDM按频率划分信道
时分多路复用Time Division MultiplexingTDM按时隙划分信道
码分多路复用Code Division MultiplexingCDM按码片划分信道
令牌环Token Ring-令牌传递的环形网络
阻塞信号Jamming Signal-冲突后通知所有站点