网络 | 04. 媒体接入控制

/image/%E6%95%B0%E6%8D%AE%E9%93%BE%E8%B7%AF%E5%B1%82MindMap2.png
数据链路层框架之媒体接入控制

问题导入与概念

  • 在同轴电缆上,多台计算机接入这根总线,他们共享这根传输媒体,形成总线型的局域网,各主机竞争这根总线,随机地在信道上发送数据
  • 此时,如果两个计算机同时在这根媒体上发送数据,就会产生冲突,使得这些数据都发送失败
  • 共享信道要着重考虑的一个问题就是,如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control)
  • 此类技术主要分为两类:静态划分信道 和 动态划分信道
  • 静态划分信道:即预先分配好信道,这类方法非常不灵活,对于突发性的数据传输,信道利用率会很低;通常在无线网络的物理层中使用,而不是在数据链路层,主要可以分为三类:频分多址、时分多址、码分多址

  • 信道复用

    • 复用(Multiplexing)是通信技术中的一个概念,指通过一条物理线路同时传输多路用户的信号
    • 当网络中传输媒体的传输容量大于多条单一信道的传输总量时,可以利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽
    • /image/image-20250622215429-olgs394.png
    • 常用的信道复用技术有四类:频分复用 FDM、时分复用 TDM、波分复用 WDM、码分复用 CDM
  • 复用和多址的区别:

    • 复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰
    • 从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分
    • 多址(更确切地应该称为多点接入)处理的是动态分配信道给用户
    • 这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况
    • 相反,在信道永久性地分配给用户的应用中,多址是不需要的(无线广播或电视广播站)
    • 在一定程度上,多址可以看作是复用的应用
  • 将传输线路的频带资源划分为多个子频带,形成多个子信道,各子信道之间需要留出隔离频带,以免造成子信道间的干扰
  • 当多路信号输入一个多路复用器时,这个复用器将每一路信号调制到不同频率的载波上,接受端由相应的分用器通过滤波将各路信号分开,将合成的复用信号恢复为原始的多路信号
  • /image/image-20250624012548-cda5nt5.png
  • 频分复用的所有用户同时占用不同的频带资源,并行通信
  • 横坐标为时间,将时间划分为一个个的时隙
  • 时分复用技术将传输线路的带宽资源,按时隙轮流分配给不同的用户,每对用户只在所分配的时隙里使用线路传输数据
  • /image/image-20250624012801-gx49hlb.png
  • 时分复用技术将时间划分成了一段段等长的时分复用帧(TDM帧)
  • 每一个时分复用的用户,在每一个时分复用帧中占用固定序号的时隙
  • 每一个用户所占用的时隙是周期性出现的,其周期就是时分复用帧的长度
  • 时分复用的所有用户在不同的时间占用相同的频带宽度
  • 类似地,频分复用和时分复用也可以用于多址接入,称为频分多址FDMA、时分多址TDMA
  • 波分复用其实就是光的频分复用
  • /image/image-20250624013115-0yc9r1j.png
  • 这是8路传输速率均为2.5Gbit/s的光载波,其波长均为1310nm
  • 经光调制后,分别将波长变换到1550~1561.2 nm,每个光载波相隔1.6nm
  • 这八个波长很接近的光载波竞购光复用器(合波器),可以在一根光纤中传输,因此在一根光纤上数据传输的总速率就达到了2.5Gbit/s x 8 = 20 Gbit/s
  • 光每传输一段距离之后会衰减,需要进行放大后才能继续传输;现在已经有了很好的掺铒光纤放大器,两个光纤放大器之间的光缆线路长度可大120km
  • 光复用器和光分用器(分波器)之间可以放入4个掺铒光纤放大器,使得光复用器和光分用器之间的、无光电转换距离,可达600km
  • 另一种共享信道的方法,实际上由于该技术主要用于多址接入,其更常见的名字是码分多址CMDA(Code Division Multiple Access)

  • 与FDM和TDM不同,CDM的每一个用户可以在相同的时间使用同样的频带进行通信

  • 由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰

  • CDM最初是用于军事通信的,因为这种系统所发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现

  • 随着技术的发展,CDMA设备的价格和体积都大幅度下降,因而现在已广泛用于民用的运动通信中

  • 在CDMA中,每一个比特时间再划分为m个短的间隔,称为码片(chip)(通常取64或128,这里以8举例画图)

  • 使用CDMA的每一个站被指派一个唯一的m bit码片序列(chip sequence)

    • 一个站如果要发送比特1,则发送它自己的m bit码片序列
    • 一个站如果要发送比特0,则发送它自己的m bit码片序列的二进制反码
    • /image/image-20250624233128-mwqmvdx.png
    • 这种通信方式称为直接序列扩频DSSS(读作D Triple S)
    • 码片序列的挑选原则如下
      • 分配给每个站的码片序列必须各不相同,实际常采用伪随机码序列
      • 分配给每个站的码片序列必须相互正交(规格化内积为0)
      • 令向量S表示站S的码片序列,向量T表示其他任何站的码片序列
      • 两个不同站S和T的码片序列正交,就是向量S和T的规划化内积为0
      • $$ S\cdot T \equiv \frac1m \sum_{i=1}^m S_i T_i = 0 $$
      • 向量的对应分量相乘后相加,再除以向量中分量的数量,其结果为0
      • $$ S\cdot S \equiv \frac1m \sum_{i=1}^m S_i S_i = \frac1m \sum_{i=1}^m S_i^2 = \frac1m \sum_{i=1}^m (\pm1)^2 = 1 $$
      • $$ S\cdot \bar T \equiv 0 $$
      • $$ S\cdot \bar S \equiv -1 $$
  • CDMA应用举例

    • /image/image-20250624235018-sdfg9xj.png
  • 练习

    • /image/image-20250624234507-8npbbmx.png
    • /image/image-20250624235032-74j4yt5.png
      • 收到的数据与各站进行内积运算,得到1则发送比特1,得到-1则发送比特0,得到0则未发送数据
      • 答案:A发送比特1,B发送比特0,C未发送数据,D发送比特1
    • /image/image-20250624235656-sfe8v78.png
      • 选项B
  • 受控接入

    • 集中控制:有一个主站以循环方式轮询每个站点有无数据发送,只有被轮询到的站点才能发送数据,其最大缺点是存在单点故障问题
    • 分散控制:各站点是平等的,并连接成一个唤醒网络,令牌(一个特殊的控制帧)沿环逐站传递,接收到令牌的站点才有权发送数据,并在发送完成后将令牌传递给下一个站点
    • 使用此类令牌传递协议的典型网络有IEEE 802.5令牌环网,IEEE 802.4令牌总线网,光线分布式数据接口FDDI
    • 这一类协议已由于市场竞争,现已逐步退出历史舞台
  • 随机接入

    • 所有站点通过竞争,随机地在信道上发送数据,如果恰巧有两个或更多的站点在同一时刻发送数据,则信号在共享媒体上就要产生碰撞(即发生冲突),使得这些站点都发送失败
    • 因此,此类协议要解决的关键问题是如何尽量避免冲突,以及在发生冲突后如何尽快恢复通信
    • 著名的共享式以太网采用的就是随机接入(载波监听 多址接入/碰撞检测 CSMA/CD协议
  • 多址接入MA:多个站连接在一条总线上,竞争使用总线
  • 载波监听CS
    • 每一个站在发送帧之前要先检测一下总线上是否有其他站点在发送帧(先听后说)
    • 若检测到总线空闲96比特时间,则发送这个帧
    • 若检测到总线忙,则继续检测并等待总线转为空闲96比特时间,然后发送这个帧
    • 96比特时间是帧间最小间隔,其作用是可以检测出一个帧的结束,同时也使得所有其他站点都能有机会平等竞争信道并发送帧
  • 碰撞检测CD
    • 每一个正在发送帧的站,边发送边检测碰撞(边听边说)
    • 一单发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次发送(一单冲突,立即停说,等待时机,重新再说)
  • 其逻辑可以总结如下
    • /image/image-20250625000935-afcxub4.png
    • 帧发送流程图
    • /image/image-20250625010035-29bsqpg.png
    • 帧接收流程图
    • /image/image-20250625010112-8l4ebwd.png
  • 以太网还采取一种叫做强化碰撞的措施,就是当发送帧的站点一旦检测到碰撞,除了立即停止发送帧外,还要继续发送32比特或48比特的人为干扰信号(Jamming Signal),以便有足够多的碰撞信号使所有站点都能检测出碰撞
  • /image/image-20250625001329-9zeih6j.png
  • 主机最多经过2$\tau$($\delta \to 0$)的时长就可以检测到本次发送是否遭受到了碰撞,因此以太网端到端往返传播时延$2\tau$称为争用期碰撞窗口

  • 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞

  • 每一个主机在自己发送帧之后的一小段时间内,存在着遭遇碰撞的可能性

  • 这一小段时间是不确定的,它取决于另一个发送帧的主机到本机的距离,但不会超过总线的端到端往返传播时延,即不会超过一个争用期时间

  • 显然,在以太网中发送帧的主机越多,端到端往返传播时延越大,发送碰撞的概率就越大

  • 因此,共享式以太网不能连接太多的主机,使用的总线也不能太长

  • 10Mb/s以太网吧争用期定位512比特发送时间,即51.2μs,因此总线长度不能超过5120m,但考虑到其他一些因素,如信号衰减等,以太网规定总线的长度不能超过2500m

  • 问题场景
    • 主机A在给主机D发送一个很短的帧,主机A边发送边检测碰撞,主机A很快完成了发送,之后就不再针对该帧检测碰撞
    • 但在该帧的传输过程中,主机C也要发送帧,主机C检测到总线空闲96比特时间后就立即发送帧
    • 尽管总线可能并不空闲,这会导致碰撞,主机D最终会收到主机A发送的、并遭遇碰撞的帧
    • 主机D会将该帧丢弃,但对于主机A而言,它并不知道自己发送完成的该帧遭遇了碰撞,不会重发该帧
    • 由此可知,使用CSMA/CD协议的以太网的帧长不能太短
  • 以太网规定,最小帧长为64字节,即512比特(512比特时间为争用期)
  • 如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节
  • 以太网的最小帧长,确保了主机可在帧发送完成前之前就检测到该帧的发送过程中是否遭遇了碰撞
    • 如果在争用期(共发送64字节)没有检测到碰撞,那么后续发送的数据一定就不会发生碰撞
    • 如果在争用期内检测到碰撞,就立即中止发送,这时已经发送出去的数据一定小于64字节
    • 因此,凡长度小于64字节的帧都是由于碰撞,而异常中止的无效帧
  • 问题场景
    • 如果某主机始终发送一个很长的帧,会长时间占用总线,而总线上的其他主机迟迟拿不到总线的使用权
    • 另外,由于帧很长,还可能使接收方的缓冲区无法装下该帧而产生溢出
    • 故,以太网的帧应该有长度上限
  • 对于以太网V2的MAC帧,其数据载荷长度最小46字节,最大1500字节(加上帧首部和尾部的18字节,最大总长度为64字节,最大总长度为1518字节)
  • 对于插入VLAN标记后的802.1Q帧,数据载荷为42-1500字节,算上首部和尾部的22字节,其总长度为64-1522字节
  • /image/image-20250625004629-at7jgrx.png
  • 若连续多次发生碰撞,就表明可能有较多的主机参与竞争信道
  • 使用上述退避算法,可使重传需要推迟的平均时间随重传次数而增大,以减小再次发生碰撞的概率,有利于整个系统的稳定
  • 这一类策略也称为动态退避
  • 当重传达16次仍不能成功时,表明同时打算发送帧的主机太多,以至于连续发生碰撞,则丢弃该帧,并向高层报告
  • /image/image-20250625005211-pkhaewo.png
  • 考虑理想情况
    • 个主机发送帧都不会产生碰撞
    • 总线一旦空闲就有某个主机立即发送帧
  • 此时,发送一帧占用总线的时间为$T_0+\tau$,而帧本身发生的时间只有$T_0$
  • 因而,信道的极限利用率为$S_{max} = \frac{T_0}{T_0+\tau} \stackrel{a= \frac{\tau}{T_0}}= \frac{1}{1+a},$
  • 为提高信道利用,参数a的值应该尽量小,即$\tau$的值应该尽量小,这意味着以太网端到端的举例应收到限制,不应太长;$T_0$应该尽可能大,说明以太网帧的长度应该尽量长些
  • /image/image-20250625010216-sqkbwc7.png
    • 无线网络使用CSMA/CA协议
  • /image/image-20250625010311-jead9a9.png
    • 选项D
    • /image/image-20250625011007-wjure8l.png
  • /image/image-20250625011208-t9dm0vn.png
  • /image/image-20250625011320-6d32eou.png

  • CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中;现在的以太网基于交换机和全双攻连接,不会有碰撞,因此没有必要再使用CSMA/CD协议
  • 无线局域网络中,CSMA/CA协议(载波监听、多址接入/碰撞避免 Carrier Sense, Multiple Access/Collision Avoidance)
  • 广播信道的无限局域网中是否也可以使用CSMA/CD呢?
    • 可以使用载波监听、多址接入(CSMA),即在发送帧之前先对传输媒体进行载波监听,若发现有其他站在发送帧,就推迟发送,以免发生碰撞
    • 但是在无线网络中,不能使用碰撞检测(CD),因为
    • 无线信道的信号强度动态范围非常大,无线网卡上接受到的信号强度往往会远远小于发送信号的强度(可能相差百万倍),如果要在无限网卡上实现碰撞检测,对硬件的要求非常高
    • 隐蔽站问题:由于无线网传播的特殊性,进行碰撞检测的意义也不大
      • /image/image-20250709235715-be6v7yq.png
      • 在一条总线上连接的互联网,只是存在时延,不存在该问题
    • 因而,在802.11无限局域网中,使用了CSMA/CA协议,是在CSMA的基础上增加了一个碰撞避免CA功能,而不在实现碰撞检测功能
    • 由于不可能避免所有的碰撞,并且无线信道误码率较高,802.11标准还使用了数据链路层确认机制(停止-等待协议)来确保数据被正确接收
  • 802.11的MAC层标准定义了两种不同的媒体接入方式
    • 分布式协调功能DCF(Distributed Coordination Function),在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权,这是802.11定义的默认方式
    • 点协调功能PCF(Point Coordination Function),PCF方式使用集中控制的接入算法(一般在接入点AP实现集中控制),是802.11定义的可选方式,在实际中较少使用
  • 802.11标准规定,所有的站点必须在持续检测到信道空闲一段指定时间后才能发送帧,这段时间称为帧间间隔
  • 帧间间隔的长短取决于该站点要发送的帧的类型
    • 高优先级帧需要等待的时间较短,因此可以优先获得发送权
    • 低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已经发送到信道上,则信号变为忙态,因而低优先级帧就只能在推迟发送了
    • 从而减少了碰撞发生的机会
    • 常用的帧间间隔如下:
      • 短帧间间隔SIFS(28μs),是最短的帧间间隔,用来分隔开属于一次对话各帧
      • 一个站点应该能够在这段时间内,从发送方式切换到接收方式
      • 使用SIFS的帧类型有ACK帧、CTS帧、由过长的MAC帧分片后的数据帧、所有回答AP探寻的帧、和在PCF方式中接入点AP发送出的任何帧
      • DCF帧间间隔DIFS(128μs),比SIFS长得多,在DCF方式中用来发送数据帧和管理帧
  • /image/image-20250710001408-389dtho.png
  • 当源站有帧要发送,需要先检测到信道空闲,则在DIFS时间后发送数据
    • DIFS时间的存在,保证了其他站高优先级帧的发送
  • 目的站收到该数据帧,则在SIFS时间后,向源站发送数据确认帧ACK
    • SIFS的存在,是用来分隔开属于一次对话的各帧,在这段时间里,一个站点应该能够从发送方式切换到接收方式
  • 若源站在规定时间内没有收到确认帧ACK,则由重传计时器控制这段时间,重传该帧,直到收到确认为止,或者经过若干次重传失败后放弃发送
  • /image/image-20250710002058-xnwkote.png
  • 其他无线站点若需要发送数据,则需要先等待信道由忙状态转变为空闲状态,等待一段DIFS时间后,还需要退避一段随机时间之后,才可以发送下一帧
    • 这个随机时间的存在,可以防止多个站点同时发送数据,而产生碰撞
  • 当站点检测到信道是空闲的,并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧,则不使用退避算法
  • 以下情况必须使用退避算法
    • 在发送数据帧之前检测到信道处于忙状态时
    • 在每一次重传一个数据帧时
    • 在每一次成功发送后要连续发送下一个帧时(为了避免一个站点长时间占用信道)
  • 在执行退避算法时,站点为退避计时器设置一个随机的退避时间
    • 当退避计时器的时间减小到零时,就开始发送数据
    • 当退避计时器的时间还未减小到零时,而信道又转变为了忙状态,这是就冻结退避计时器的数值,重新等待信道变为空闲,在经过时间DIFS之后,继续启动退避计时器
  • 在进行第i次退避时,退避时间在时隙编号(0,1,…,$2^{2+i}-1$)中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间
    • 这样做是为了使不同站点选择相同退避时间的概率减小
    • 当时隙编号达到255时(对应于第6次退避)就不再增加了
    • /image/image-20250710003538-mp8qa89.png

  • 为了尽可能减少碰撞的概率和降低碰撞的影响,802.11标准允许要发送数据的站点对信道进行预约

    • /image/image-20250710004824-z65wyen.png
    • 源站在发送数据帧之前,先发送一个短的控制帧,称为请求发送RTS(Request To Send),它包括源地址、目的地址以及这次通信所需的持续时间(包括确认帧)
    • 若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS(Clear To Send),它也包括这次通信所需要的持续时间(从RTS帧中将此持续时间复制到CTS帧中)
    • 源站收到CTS帧后,在等待一段SIFS时间后,就可以发送其数据帧
    • 若目的站正确收到了源站发来的数据帧,在等待SIFS时间后,就像源站发送确认帧ACK
    • 除源站和目的站意外的其他各站,在接收到CTS帧(或数据帧)后就推迟接入到无线局域网中
    • 这样就保证了源站和目的站之间的通信不会受到其他站的干扰
    • 若RTS帧发送碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧
    • 由于RTS帧和CTS帧很短,发送碰撞的概率、碰撞产生的开销以及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的
    • 802.11标准规定了3种情况供用户进行选择
      • 使用RTS帧和CTS帧
      • 不使用RTS帧和CTS帧
      • 只有当数据帧的长度超过某一数值时才使用RTS帧和CTS帧
  • 除RTS帧和CTS帧会携带通信持续的时间,数据帧也能携带通信所需要持续的时间,,这称为802.11的虚拟载波监听机制
  • 由于利用虚拟载波监听机制,站点只要监听到RTS帧、CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号
  • 因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题
    • /image/image-20250710005208-tktwxb4.png
    • 如图所示,A和C互为隐蔽站,当其都需要向B发送数据时
    • 尽管C收不到A发送的RTS帧,但可以收到B返回的CTS帧,这个时候就可以知道信道需要被占用多长时间,在这段时间内C不会再征用信道

  • 随着交换技术的发展和成本的降低,具有更高性能的,使用 点对点链路和链路层交换机 的交换式局域网,在有线领域已经完全取代了共享式局域网,但由于无线信道的广播天性,无线局域网仍然使用的是共享媒体技术