- 有两种类型的 “链路”:
- 点对点:专用的两两通信链路
- 例如:长途光纤链路
- 例如:以太网交换机与主机之间的点对点链路
- 广播:共享线路或介质
- 传统以太网(约 2000 年前)
- 802.11 无线局域网
多路访问控制(MAC)(和之前那个不一样)
- 多路访问链路的特性
- 单一共享广播信道
- 节点同时进行两次或多次传输:干扰
- 冲突:节点在同一时间接收到两个或多个信号
- 多路访问协议
- 用于确定节点如何共享信道的分布式算法,即确定节点何时可以传输
- 关于信道共享的通信必须使用信道本身!
- 没有用于协调的带外信道
- 理想的多路访问协议
- 给定一个速率为 R 比特 / 秒的广播信道,我们希望:
- 当一个节点想要传输时,它能以速率 R 发送数据。
- 当 M 个节点想要传输时,每个节点的平均传输速率为 R/M。
- 完全去中心化:
- 没有专门的节点来协调传输
- 无需时钟或时隙同步
- 协议实现简单
-
多路访问控制(MAC)
- 确定节点何时能在共享介质上传输
-
分为三类:
-
信道划分
- 将信道划分为更小的 “部分”(时隙、频率、码)
- 为节点分配专属使用的部分
-
轮流传输
- 节点轮流传输,需发送更多数据的节点可获得更长的传输时间
-
随机访问
- 信道不划分,允许冲突发生
- 对冲突进行协调或恢复
- TDMA:时分多址访问
- 以 “时隙和轮次” 的方式访问信道
- 每个站点在每一轮中获得固定长度的时隙(数据包传输时间)
- 未使用的时隙处于空闲状态
- 示例:一个 6 站点的局域网中,站点 1、3、4 有数据包要传输,时隙 2、5、6 处于空闲状态
基于频分多址(FDMA)的信道划分
- FDMA:频分多址访问
- 信道频谱被划分为多个频段
- 为每个站点分配固定频段
- 频段中未使用的传输时间处于空闲状态
- 示例:一个 6 站点的局域网中,站点 1、3、4 有数据包要传输,频段 2、5、6 处于空闲状态
- CDMA:码分多址访问
- 应用于无线广播信道(蜂窝网络、卫星等)
- 所有节点共享相同频率,但每个节点拥有专属 “码片序列”(即码集)对数据进行编码
- 编码信号 = (原始数据)×(码片序列)
- 解码 = 编码信号与码片序列的内积
- 若码序列 “正交”
- 多个节点可同时传输且干扰极小
轮询:
-
主节点 “邀请” 从节点依次传输
-
通常用于 “哑” 从设备
需关注的问题:
-
轮询开销
-
延迟
-
单点故障(主节点)
-
例如:蓝牙
令牌传递:
-
控制令牌按顺序从一个节点传递至下一个节点
-
令牌用于传输消息
需关注的问题:
-
令牌开销
-
延迟
-
单点故障(令牌)
-
例如:IBM 令牌环、光纤分布式数据接口(FDDI)
- 当节点有数据包需要发送时
- 以全信道数据速率 R 传输
- 节点之间无需预先协调
- 两个或多个节点同时传输会导致冲突
- 随机访问 MAC 协议规定:
- 如何检测 / 避免冲突
- 如何从冲突中恢复(例如通过延迟重传)
- 随机访问 MAC 协议的示例:
- ALOHA、时隙 ALOHA
- CSMA、CSMA/CD、CSMA/CA
-
附加链路在线夏威夷系统
-
由夏威夷大学为分组无线电网络开发
-
发送方
- 当站点有帧时,直接发送
- 若收到确认(ACK),则正常
- 若未收到,以概率 p 重传,以概率 (1-p) 等待
-
若多次重传后仍无确认,则放弃
-
接收方
- 使用帧校验序列(如 HDLC 协议)
- 若帧正确且地址匹配接收方,发送 ACK
-
帧可能因噪声或冲突损坏
- 其他站点同时传输
- 任何帧重叠都会导致冲突
- 所有帧大小相同
- 时间划分为与帧传输时间(T0)相等的统一时隙
- 节点需同步(需中央时钟或其他同步机制)
- 传输在时隙边界开始
- 帧要么完全不重叠,要么完全重叠
工作机制: ❖ 当节点获取新帧时,在下一个时隙传输 ▪ 若无冲突:节点可在下一个时隙发送新帧 ▪ 若发生冲突:节点以概率 p 在后续每个时隙重传该帧,直至成功
节点在后续每个时隙以概率 p 重传该帧,直至成功
- Carrier sense multiple access(载波侦听多路访问)
- CSMA:先听后发
- 若检测到信道空闲:传输整个帧
- 若检测到信道繁忙:推迟传输
- 人类类比:不要打断别人!
- 无法消除所有冲突
- 为什么?
- 提示:传播延迟
- 传播延迟:两个节点在发送前可能无法听到对方的信号
- CSMA 减少但不会消除冲突
- 冲突会导致整个数据包传输时间被浪费
- 距离和传播延迟会影响冲突发生的概率
-
希望传输的站点执行以下操作:
-
若介质空闲,立即传输;否则,进入步骤 2
-
若介质繁忙,等待一段随机时间(延迟)后重复步骤 1
-
-
随机延迟可降低冲突概率
- 两个等待的站点会选择不同的时间开始传输
-
容量会被浪费,因为传输结束后介质可能保持空闲
- 即使有一个或多个站点在等待
-
非持续站点具有谦让性
-
为避免信道空闲时间,采用 1 - 坚持协议
-
希望传输的站点执行以下操作:
-
若介质空闲,立即传输;否则,进入步骤 2
-
若介质繁忙,持续监听直至空闲,然后立即传输
-
-
1 - 坚持站点具有 “自私性”
- 若两个或多个站点同时等待,必然发生冲突
- 尝试做出折中
- 既如非持续 CSMA 般降低冲突概率
- 又似 1 - 坚持 CSMA 般减少空闲时间
- 规则
- 若介质空闲,以概率 p 传输,以概率 (1–p) 延迟一个时间单位 通常,时间单位 = 最大传播延迟
- 若介质繁忙,持续监听直至空闲,然后重复步骤 1
- 若传输延迟了一个时间单位,重复步骤 1 p 的有效值是什么?
- 目标:在高负载下避免不稳定性
- 假设:有 N 个站点等待发送
- 理论上 p 的最佳取值为 1/N
- 若预期负载较高,p 的取值应较小
- 然而,p 的取值越小,站点等待的时间越长
- 总体而言,这会导致延迟时间变得很长
- 采用 CSMA 时,冲突会占用介质整个传输时长
- 一旦检测到冲突,冲突的传输会被中止
- 站点在传输时同时监听
- 若介质空闲,立即传输;否则,进入步骤 2
- 若介质繁忙,监听至空闲,然后立即传输
- 若检测到冲突,发送阻塞信号,然后中止传输
- 阻塞信号(jam)发送后,等待随机时间,再从步骤 1 开始
- Jam信号是连续几个字节全1的信号,旨在加强冲突,使其他设备易于检测
- 在基带总线中,冲突产生的信号电压远高于单个信号
- 若电缆信号强度大于单个站点的信号,则检测到冲突
- 信号会随距离衰减
- 因此需要发送阻塞信号(Jam)
- (例如)将距离限制为 500 米(10Base5)或 200 米(10Base2)
- 对于双绞线(星型拓扑),多个端口同时活跃即视为冲突
- 存在专门的冲突存在信号
为使此机制有效,需要对最小帧长度和最大距离进行限制。
-
B:带宽
-
L:链路长度
-
V:传播速度
-
Size:帧的大小
-
传播时间:Ta = L /v
-
一帧的传输时间:Tb = Size / B
-
冲突检测机制:
-
在最坏情况下,冲突检测需耗时 2Ta。
- 最小竞争间隔 = 2Ta
-
最小帧长度推导:
-
若帧的传输时间小于 2Ta,则冲突发生时可能无法检测到冲突。
-
为确保冲突检测,必须满足 Tb ≥ 2Ta
-
因此 Size / B ≥ 2L /v,最小帧长度为:Size ≥ 2 × L × B /v
-
载波侦听
- 先听后说,不打断
- 检查是否有其他节点已在发送数据
- … 并等待其他节点完成发送
-
冲突检测
- 若其他节点同时开始传输,立即停止
- 确保所有节点知晓冲突发生!
- 通过检测线路上数据是否乱码,判断是否存在两节点同时传输的情况
-
随机性
- 不立即重传数据
- 重试前等待一段随机时间
-
你应该等待多久?
- 是应该立即(重传)吗?
- 还是应该采用服从固定分布的随机数(作为等待时间)?
- IEEE 802.3 采用 1 - 坚持算法
- 非坚持和 p - 坚持算法均存在性能问题
- 1- 坚持算法的冲突处理机制:
- 冲突导致的时间浪费较短
- 结合随机退避机制,下次尝试时再次冲突的概率较低
- 采用二进制指数退避算法
-
若多次发生冲突,则尝试重复传输
-
前 10 次尝试中,随机延迟的平均值翻倍
-
随后的 6 次尝试中,该值保持不变
-
16 次尝试均未成功后,站点放弃并报告错误
-
采用二进制指数退避的 1 - 坚持算法可在大范围负载下保持高效
- 低负载时,1 - 坚持特性确保效率
- 高负载时,至少与其他技术一样稳定
-
退避算法会产生 “后进先出” 效应
- 冲突较少的站点优先传输
-
网卡从网络层接收数据报,创建帧
-
若网卡检测到信道空闲,开始传输帧;若检测到信道繁忙,等待至信道空闲后再传输
-
若网卡传输完整帧且未检测到其他传输,帧传输完成
-
若传输过程中检测到其他传输,中止传输并发送阻塞信号
-
中止后,网卡进入二进制(指数)退避机制:
-
第 m 次冲突后,网卡从 {0,1,2,…,2ᵐ-1} 中随机选择 K
-
等待 K・512 比特时间后,返回步骤 2
-
冲突次数越多,退避间隔越长
-











