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

计算机网络•自顶向下方法:多址接入协议

多址接入协议

链路的两种类型

点到点链路:

  • 仅连接了一个发送方和一个接收方的链路
  • 一条全双工链路可以看成是由两条单工链路组成

广播链路:

  • 连接了许多节点的单一共享链路,任何一个节点发送的数据可被链路上的其它节点接收到

多址接入(Multiple Access)

冲突(collision)

  • 在广播链路上,若两个或多个节点同时发送,发送的信号会发生干扰,导致接收失败

多址接入协议

  • 规定节点共享信道(谁可以发送)的方法
  • 多址接入协议也称媒体接入控制(Medium Access Control,MAC)协议

理想的多址接入协议

在速率为R bps的广播信道上

  • 当只有一个节点发送时,它应能以速率R发送(信道利用率高)
  • 当有M个节点发送时,每个节点应能以 R/M的平均速率发送(公平性好、信道利用率高)
  • 协议是无中心的(分散式):
    • 不需要一个特殊的节点来协调发送(健壮性好)
    • 不需要时钟或时隙同步(不需要额外的机制)
  • 简单(实现和运行开销小)

MAC协议的分类

信道划分

  • 将信道划分为若干子信道,每个节点固定分配一个子信道,不会发生冲突

  • 关注公平性,轻负载时信道利用率不高

随机接入(竞争)

  • 不划分信道,每个节点自行决定何时发送,出现冲突后设法解决
  • 轻负载时信道利用率高,重负载时冲突严重

轮流使用信道

  • 不划分信道,有数据的节点轮流发送,不会出现冲突
  • 信道利用率高,公平性好,但需引入额外机制

信道划分的MAC协议

TDMA: 时分多址
  • 将信道的使用时间划分成帧,每个节点在帧中被分配一个固定长度的时间片,每个时间片可以发送一个分组
  • 节点只能在分配给自己的时间片内发送
  • 若节点不发送,其时间片轮空
    在这里插入图片描述
FDMA: 频分多址
  • 将信道频谱划分为若干子频带
  • 每个节点被分配一个固定的子频带
  • 若节点不发送,其子频带空闲

在这里插入图片描述

CDMA: 码分多址
  • 将每个比特时间进一步划分为m个微时隙(称chip)
  • 每个节点被分配一个惟一的m比特码序列(称chip code)
  • 发送方编码:发送“1”=发送chip code;发送“0”=发送chip code的反码
  • 信号叠加:多个节点发送的信号在信道中线性相加
  • 接收方解码:用发送方的chip code与信道中收到的混合信号计算内积,恢复出原数据
  • 前提条件:任意两个chip code必须是相互正交的

CDMA允许所有节点同时使用整个信道!

随机接入的MAC协议

随机接入的基本思想:

  • 当节点有数据要发送时,以信道速率R发送,发送前不需要协调
  • 随机接入MAC协议规定如何检测冲突,以及如何从冲突中恢复

随机接入MAC协议的例子:

  • 发送前不监听信道:ALOHA家族
  • 发送前监听信道:CSMA家族
时分(Slotted) ALOHA

假设:

  • 所有帧长度相同
  • 时间被划分为等长的时隙,每个时隙传一帧
  • 节点只能在时隙开始时发送
  • 节点是时钟同步的(知道时隙何时开始)
  • 所有节点可在时隙结束前检测到是否有冲突发生

操作:

  • 节点从上层收到数据后,在下一个时隙发送
  • 若时隙结束前未检测到冲突,节点可在下一个时隙发送新的帧
  • 若检测到冲突,节点在随后的每一个时隙中以概率P重传,直至发送成功
    在这里插入图片描述

优点

  • 单个活跃节点可以信道速率连续发送
  • 分散式:节点自行决定什么时候发送
  • 简单

缺点

  • 发生冲突的时隙被浪费了
  • 由于概率重传,有些时隙被闲置
  • 需要时钟同步

时分Aloha的效率

效率:当网络中存在大量活跃节点时,长期运行过程中成功时隙所占的比例

假设: 有N个活跃节点,每个节点在每个时隙开始时以概率P发送

给定节点在一个时隙中发送成功的概率 = p ( 1 − p ) N − 1 p(1-p)^{N-1} p(1p)N1

给定时隙中有节点发送成功的概率 = N p ( 1 − p ) N − 1 Np(1-p)^{N-1} Np(1p)N1

最大效率:

找到令 N p ( 1 − p ) N − 1 Np(1-p)^{N-1} Np(1p)N1最大的概率 p ∗ p^* p

代入 N p ∗ ( 1 − p ∗ ) N − 1 Np^*(1-p^*)^{N-1} Np(1p)N1,并令N趋向于无穷,得到:

最大效率 = 1/e = 0.37

纯ALOHA

基本思想

  • 不需时钟同步,任何节点有数据发送就可以立即发送
  • 节点通过监听信道判断本次传输是否成功
  • 若不成功,立即以概率P重传,以概率(1-P)等待一个帧时后再决定。(帧时:发送一帧的时间,假设帧长度相同)

发生冲突的情形:

在时刻 t 0 t_0 t0发送的帧与在 ( t 0 − 1 , t 0 + 1 ) (t_0-1,t_0+1) (t01,t0+1) 时段内发送的其它帧冲突

在这里插入图片描述

纯Aloha的效率

P(给定节点发送成功) = P(节点发送) .

​ P(无其它节点在 ( t 0 − 1 , t 0 ] (t_0-1,t_0] (t01,t0]内发送) .

​ P(无其它节点在 [ t 0 , t 0 + 1 ) [t_0, t_0+1) [t0,t0+1)内发送)

​ = p ( 1 − p ) N − 1 ( 1 − p ) N − 1 p(1-p)^{N-1}(1-p)^{N-1} p(1p)N1(1p)N1

​ = p ( 1 − p ) 2 ( N − 1 ) p(1-p)^{2(N-1)} p(1p)2(N1)

求导得到 :最大效率 = 1/(2e) = 0.18

载波侦听多址接入(CSMA)

发送前监听信道(carrier sensing):

  • 信道空闲:发送整个帧
  • 信道忙:推迟发送

冲突仍可能发生:

  • 由于存在传输延迟,节点可能没有监听到其它节点正在发送
  • 即使忽略传输延迟,当两个(或多个)节点同时发现信道由忙变为空闲、并都决定立即发送时,仍会发生冲突
CSMA/CD(Carrier Sense Multiple Access with Collision Detection,载波侦听多路访问/冲突检测)

为了提高CSMA协议的效率,CSMA/CD在其基础上增加了冲突检测机制。该协议主要用于有线网络(如以太网)中,设备在发送数据的同时也监听信道,能够实时检测是否发生碰撞。具体步骤如下:

  • 监听信道:设备发送数据前,首先监听信道。如果信道空闲,设备开始发送数据;如果信道繁忙,则等待。
  • 数据发送:当信道空闲时,设备开始发送数据。在发送过程中,设备继续监听信道,以便检测是否发生碰撞。
  • 碰撞检测
    • 如果在发送数据时发生碰撞(即两个设备同时发送数据),设备立即停止发送,并通过冲突检测机制发现碰撞。
    • 停止发送:设备会立即停止数据发送。
  • :退避机制:设备会等待一个随机的退避时间后,再重新尝试发送数据。退避时间是随机生成的,以避免重复的碰撞。

退避算法

  • 退避时间通常使用二进制指数退避算法,即在每次碰撞后,设备随机选择一个退避时间,且退避时间的范围随着碰撞次数的增加而增大。通过随机选择,避免多个设备总是同时重试,导致持续碰撞。负载越重(冲突次数越多),等待时间的选择范围越大,再次发生冲突的可能性越小
CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance,载波侦听多路访问/冲突避免)

CSMA/CA是专门为无线网络(如Wi-Fi)设计的协议。与CSMA/CD不同,由于无线信道的特点,设备在发送过程中无法直接检测碰撞,因此CSMA/CA采用了冲突避免策略来降低碰撞发生的概率。

具体步骤如下:

  • 监听信道:设备在发送数据前首先监听信道,检查信道是否空闲。
  • 等待随机时间
    • 如果信道空闲,设备不立即发送数据,而是等待一个随机的时间段。这一时间段通常称为退避时间
    • 退避时间是为了避免多个设备几乎同时开始发送数据,导致碰撞。每个设备会等待一个随机的时间段,减少多设备同时发送的概率。
  • 数据发送
    • 如果信道在退避时间结束时仍然空闲,设备就开始发送数据。
  • ACK(确认)机制
    • 在无线网络中,设备通常在数据发送完成后等待接收方的确认(ACK)。如果在一定时间内没有收到确认,设备会认为数据发送失败,并重新尝试发送数据。

CSMA/CA的特点

  • 冲突避免:通过随机退避时间来避免多个设备同时发送,从而降低碰撞的发生概率。
  • 确认机制:设备发送数据后需要等待接收方的确认,增加了可靠性。

轮流MAC协议

轮询

在轮询协议中,通信系统或网络中的一个设备(通常称为主设备轮询器)负责主动轮询每个节点,询问它是否有数据需要发送。该协议通过避免多个节点同时发送数据来减少冲突。

  • 主设备轮询:主设备(通常是接入点或中央控制器)依次轮询每个从设备。

  • 从设备回应

    • 当从设备收到轮询信号时,如果它有数据要发送,它会响应并开始发送数据。
    • 如果没有数据要发送,从设备就会跳过这次轮询,不发送任何信号,主设备继续轮询下一个从设备。
  • 数据传输:主设备通过轮询控制数据传输的顺序,确保每个设备在自己的时刻占用信道,从而避免了碰撞。

在这里插入图片描述

缺点

  • 依赖主设备:该协议依赖于主设备的存在,主设备故障会导致整个系统无法工作
  • 主设备负担重:主设备需要管理所有设备的轮询请求,可能导致主设备的负担较重
  • 延迟:如果设备数量多,轮询一次需要的时间就很长,可能导致较大的延迟,尤其是在高负载情况下
令牌传递

令牌传递协议是一种通过在网络中传递一个特殊的“令牌”来控制信道访问的协议。令牌是一个特殊的数据包或控制信号,网络中的设备必须获取令牌才能发送数据。令牌在设备之间轮流传递,保证了每个设备在某一时刻具有发送数据的权限。

  • 令牌初始化:网络中的设备形成一个环形结构,最初有一个设备持有令牌。
  • 令牌传递:
    • 设备只有在收到令牌后,才能开始发送数据。如果设备没有数据要发送,它会将令牌传递给下一个设备。
    • 令牌在网络中按顺序传递,确保每个设备都有机会发送数据。
  • 数据传输:持有令牌的设备可以开始发送数据。发送完成后,它将令牌传递给下一个设备。
  • 循环进行:令牌不断在设备之间传递,直到所有设备完成数据传输。

缺点

  • 令牌丢失问题:如果令牌丢失,网络中的设备就无法发送数据,因此需要特殊机制来恢复丢失的令牌。
  • 传递延迟:令牌传递可能带来一定的延迟,尤其是在设备数量很多时,令牌传递的周期可能较长。
  • 复杂性:令牌传递协议的实现相对较复杂,尤其是在大规模网络中,需要有效管理令牌的传递和丢失恢复。
MAC协议小结

按照时间、频率、编码划分信道:

  • 时分多址、频分多址、码分多址

随机接入:

  • 纯ALOHA, S-ALOHA(ALOHA网络)
  • CSMA/CD(早期以太网)
  • CSMA/CA(802.11)

轮流访问:

  • 中心节点轮询(蓝牙)
  • 令牌传递(FDDI、IBM令牌环、令牌总线)
MAC协议比较

信道划分MAC协议:

  • 重负载下高效:没有冲突,节点公平使用信道
  • 轻负载下低效:即使只有一个活跃节点也只能使用1/N的带宽

随机接入MAC协议:

  • 轻负载时高效:单个活跃节点可以使用整个信道
  • 重负载时低效:频繁发生冲突,信道使用效率低

轮流协议(试图权衡以上两者):

  • 按需使用信道(避免轻负载下固定分配信道的低效)
  • 消除竞争(避免重负载下的发送冲突)

http://www.kler.cn/a/470905.html

相关文章:

  • C++ 中如何优雅地返回一个递归闭包函数?
  • 历代iPhone运行内存大小和电池容量信息
  • ARM发布Armv9.5架构:迈向更强性能与灵活性的新时代
  • 【简博士统计学习方法】3. 统计学习方法的三要素
  • Ant Design Pro写项目的总结经验(react)
  • 容器技术思想 Docker K8S
  • 【AI数学基础】线性代数:向量空间
  • reactor的Hooks.enableAutomaticContextPropagation();不生效解决方案
  • 基于32单片机的智能语音家居
  • pytest日志显示
  • gesp(C++一级)(18)洛谷:B4063:[GESP202412 一级] 奇数和偶数
  • 某制造集团灯塔工厂解决方案(36页PPT)
  • 安装vue脚手架出现的一系列问题
  • 计算机网络——网络层—路由算法和路由协议
  • 感知器的那些事
  • springboot适配mybatis+guassdb与Mysql兼容性问题处理
  • 升级 Spring Boot 3 配置讲解 —— Spring Boot 3 核心源码专讲
  • 如何在 Ubuntu 22.04 上安装 Nagios 服务器教程
  • Flutter:打包apk,安卓版本更新(二)
  • 使用Python构建远程医疗平台:从零开始的实现指南
  • 【错误记录】HarmonyOS 编译报错 ( DevEco Studio 开发环境 与 API 版本 与 HarmonyOS 版本 的配套关系 )
  • 君正T41交叉编译ffmpeg、opencv并做h264软解,利用君正SDK做h264硬件编码
  • Angular由一个bug说起之十三:Cross Origin
  • C++二十三种设计模式之外观模式
  • Nginx不使用域名如何配置证书
  • 谷歌浏览器的高级开发者工具使用指南