首页 > 其他分享 >数据链路层-MAC多点访问控制协议

数据链路层-MAC多点访问控制协议

时间:2023-12-06 09:55:04浏览次数:23  
标签:令牌 访问控制 信道 发送 MAC 冲突 发送数据 节点 链路层

解决的问题

对于一个共享性介质(总线型局域网的总线),各个节点如何协调对它的访问和使用?通过各种途径来控制对共享介质访问的方式,在数据链路层称为多点访问控制协议。

多点访问控制协议按照访问方式分为三种类型:信道划分方式、随机方式、轮流方式。

信道划分方式

频分复用: FDM(Frequency Division Multiplexing)将信道划分为不同的频段给不同节点使用

波分复用:WDM(Wavelength Division Multiplexing),将信道划分为不同的波段给不同的节点使用

码分复用:CDM(Code Division Multiplexing),将信道划分为不同的编码给不同的节点使用

时分复用:TDM(Time Division Multiplexing),将信道划分为不同的时间段给不同的节点使用

使用信道划分方式,信道在高负载情况下,信道利用率很高,这是该方式的突出优点。但在低负载情况下,信道利用率偏低,例如在时分复用情况下,某个节点有数据要传送,却只能使用特定的时间段,不能一直使用信道,导致信道利用率比较低。

随机方式

CSMA/CD

CSMA/CD(Carrier Sense Multiple Access/collision detection):载波监听多点接入、冲突检测方式。这种访问控制方式在802.11 WLAN中使用(无线局域网)。

1. 节点在发送之前先监测信道是否空闲,如果空闲则发送。如果忙,则持续监测信道,等待闲时再发送。

2. 节点在发送过程中也要持续的监测信道,检测是否有冲突。如果有冲突,则立即停止发送,以避免更进一步的信道浪费。停止发送后,发送方需要做两件事:

    1. 发送一个Jamming Signal,冲突增强信号,告知所有节点发送了冲突

    2. 选择一个随机时间(二进制指数退避算法),等待该时间后,再检测信道闲忙,尝试重发。

如何检测信道闲忙

发送前,检测信道中是否有信号传送即可得知信道状态

如何检测冲突?

发送过程中,可以对比发送信号和接收信号的强度 ,或者 过零点检测  得知是否有冲突。

随机时间的确定

在第m次失败后,适配器随机从{0,1,2,3 ,... ,2^m-1}中选择一个数字K,等待K*512位时再检测信道。
该二进制指数退避算法的精妙之处在于,在信道负载很低时,退避时间很小,从而有利于节点尽快发送数据。

在信道负载很高时,退避窗口变大,节点的平均退避时间也变大,有利于减少冲突,从而提高信道利用率。

CSMA/CA

CSMA/CA(Carrier Sense Multiple Access with Collision Avoid):载波监听多点接入、冲突避免方式。这种访问控制方式在802.3 Ethernet中使用(有线局域网)。以太网协议在无线局域网(WLAN)中使用该方式做各节点的访问控制。

1. 节点在发送之前先监测信道,信道空闲持续DIFS时间后,才能发送,一旦启动发送,不再检测信号是否冲突,持续将帧发送完毕。

2. 如果检测到信道忙,则选择一个随机值K,随后持续周期性的检测信道,如果信道忙,则K不变,如果信道空闲则将K减1,直到K减为0,才能发送。

3. 如果发送方发送后,接收到ACK则发送成功。如果没有接收到ACK则重复步骤2.

4. 对于接收方,收到帧后,如果帧没有出错,则等待SIFS时间后发送ACK。SIFS要小于DIFS

                                                  

 

1. 为什么在无线局域网中不使用冲突检测方式?

  a. 无法进行冲突检测,无线信道上,无线电磁波在开放空间中衰减很快,不同的节点发送的电磁波相互串扰,使得冲突检测在技术上实现起来较为麻烦。

  b. 在无线局域网中,冲突 与 发送是否成功没有关系。在有线信道上,信号发生冲突时,几乎可以认为发送失败,信号未发生冲突,几乎可以认为发送成功。但是在无线信道上,由于节点隐藏问题未发生冲突时,也有可能发送失败,由于节点暴露问题,发生冲突时,也有可能发送成功。因此发送成功与否与信号冲突没有必然关系。

2. 什么是节点暴露问题?

A----------------B--------------------C------------------D

ABCD四个节点,A能收到B的信号,但无法收到C和D的信号。D能收到C的信号,但无法收到B和A的信号。B和C能相互收到信号。如果在t时刻,B需要向A发送数据,C需要向D发送数据,如果C成功发送数据帧,则会导致B收到C发送给D的信号,导致B认为信道忙,无法发送数据。但事实C向D发送数据时,不会导致B向A发送数据的冲突,这就是节点暴露问题。节点暴露问题会导致信道利用率降低。

3. 什么是节点隐藏问题?

 如图,A和B之前由于距离、地形(隔着山脉)等问题,A的信号无法到达B,B的信号也无法到达A,此时A和B两个节点相互看不见,也就是A和B两个节点相互隐藏。在此情况下,如果在t时刻,A检测到信道闲,向C发送数据,B也检测到信道闲(A和B无法接收到对方的信号,因此会误认为信道闲),向C发送数据,两者的信号会在C点形成冲突,导致发送不成功。

4. 为什么SIFS要小于DIFS?

这样设计的目的是使得ACK帧等待时间要比普通帧少,使得ACK帧更容易在冲突中获胜,使得ACK帧的优先级更高,从而避免数据接收成功后因为无法收到ack导致重发造成的信道浪费。

5. 在发送方监测到信号忙(发送冲突时),随后再监测信道,为什么不再信道闲时立即发送,而是等到计时器减为0后再发送?

这样设计的目的是尽可能的减少冲突的概率。无线信道中,一旦发送必须把整个帧发送出去,中间无法取消。在此期间,一旦发生冲突,整个帧的发送时间上信道就被浪费掉了,因此冲突的代价非常大。为了避免冲突,使得节点尽可能的谦让,以减少冲突的概率。在检测到信道忙时,就冻结计时器,信道闲时才将计时器减1.

 冲突避免(RTS-CTS交换)

允许发送方“预约”信道,避免长数据帧的冲突。RTS-CTS交换是一个可选项。

1. 发送方要发送数据时,首先向BS(Base Station,基站)发送一个小的RTS(Request To Send)帧(RTS帧的发送也可能会发生冲突,但是RTS帧很小,信道浪费比较少)

2. BS广播CTS(Clear To Send)帧来作为RTS的响应

3. 所有节点都能收到CTS,这时发送方能够发送数据,其他节点不能发送数据(节点被抑制)

 

轮流方式

轮询方式

1. 主节点依次轮训从节点是否有数据要传送

2. 从节点一般比较dump

 缺点

  • 轮询的开销:轮询本身消耗信道带宽
  • 延迟:每个节点需要等到主节点轮询后才能开始传输,及时只有一个节点要发送数据,也要轮询一遍到该节点时,该节点才能发送数据
  • 单点故障:主节点发生故障,整个系统将无法工作

令牌传递(令牌环)

令牌环是基于轮询的介质访问控制方法。令牌沿着环网单向流动,依次通过各站点。一个站点若想要发送数据,必须持有令牌,否则只能等待空令牌的到达。因其受控接入特点,所以避免了冲突的发生。

(1).获取空令牌并发送数据:一个站点需要发送数据时,首先等待空令牌的到达,并取得令牌,将其状态设置为“忙”,并紧接着在令牌帧后添加数据,传至环网上。

(2).接收与转发:数据沿环网传输时,所经过的每个站点都会将本机的MAC地址与数据帧的目的地址进行比对,若匹配则接收,若不匹配则转发给下一个站点。

(3).撤销数据并释放令牌:数据帧在网上流动一圈后回到发送端,由发送站点将数据取下,并释放令牌。将令牌发送给下游站点,使下游站点获取发送数据的权利。

令牌(token)是一种特殊的数据帧,从一个节点到下一个节点在网络中循环传递。

 缺点

  • 令牌的开销:令牌本身消耗信道带宽
  • 延迟:每个节点只有抓住令牌后才能传输
  • 单点故障:令牌丢失则整个系统故障,需要有复杂的机制重新生成令牌

 

 对比分析

信道划分MAC协议

    • 共享信道在高负载时是有效和公平的
    • 在低负载时效率低下
      • 只能等到自己的时隙开始发送或者利用1/N的信道频率发送
      • 当只有一个节点有帧传时,也只能够得到1/N个带宽分配

随机访问MAC协议

    • 在低负载时效率高:单个节点可以完全利用信道全部
    • 高负载时:冲突开销较大,效率极低,时间很多浪费在冲突中

轮流协议

有2者的优点!

标签:令牌,访问控制,信道,发送,MAC,冲突,发送数据,节点,链路层
From: https://www.cnblogs.com/lucidar/p/17878400.html

相关文章

  • mac安装nginx
     ~%brewinstallnginx==>Downloadinghttps://formulae.brew.sh/api/formula.jws.json#=#=-###=O#-##-#O=-########################################################################################################################......
  • Macbook磁盘系统结构/文件/目录介绍分析
    1.系统磁盘根目录详解:1.1磁盘根目录结构/(根目录)|--Applications#存放应用程序|--Users#存放用户文件和设置|--cores#存放核心转储文件,通常用于调试|--home#用户家目录的根目录|--sbin......
  • 在 macOS 上搭建 Flutter 开发环境
    目录下载FlutterSDK配置Flutter环境变量及镜像检查开发环境参考下载FlutterSDKflutter官网下载:https://flutter.io/sdk-archive/#macos若上述链接无法访问,可通过GitHub下载https://github.com/flutter/flutter/releases将下载的fluttersdk解压到一个地方(这里解压......
  • [Mac软件]HitPaw Video Converter 功能强大的视频格式转换编辑软件激活版
    软件介绍:以令人难以置信的速度将无损视频和音乐转换为1000多种格式:MP4、MOV、AVI、VOB、MKV等。不仅适用于普通编解码器,也适用于高级VP9、ProRes和Opus编码器。这解决了您不支持格式的所有问题,并允许您在任何平台和设备上播放视频。从10,000多个网站下载和保存视频,包括YouTube、Bil......
  • 如何在mac上安装ffmpeg
    有三种方法在mac上安装ffmpeg使用包管理工具Homebrew或MacPorts来安装ffmpeg。这种安装方式可以自动保持最新版本。详细步骤见下文下载编译好的二进制可执行文件。这种安装方式最容易。直接下载就可用。缺点是必须手动更新。并且它可能没有包含所有你需要的编码器和滤镜。自己......
  • 文字处理软件Word mac特点介绍
    MicrosoftWordmac是一款文字处理软件。它是Microsoft office 套件的一部分,已广泛用于创建、编辑和格式化文本文档。Wordmac软件特点改进的协作工具:使用MicrosoftWord2021,多个用户可以同时处理一个文档,从而更轻松地与同事或同学协作。增强的人工智能写作辅助:新版Word配备......
  • 在 Sublime Text 4 for macOS 中使用多个光标
    在SublimeText4formacOS中使用多个光标在SublimeText4formacOS中使用多个光标(也称为多点编辑)是一项非常强大的功能,允许您在多个地方同时进行编辑。以下是一些常用的方法来使用多个光标:1.添加额外的光标按住Command键并点击:您可以在需要添加新光标的每个位置按......
  • Qt - macOS上实现Qt应用程序做文件关联打开
    一、背景介绍  用Qt开发的应用程序要实现文件关联,双击时用默认关联的程序打开文件,在Windows上这个功能非常容易实现。Windows应用程序在安装的时候可以在注册表中写入相关的键值对。打开文件的时候,WindowsExplorer会将文件完整的路径作为参数传递给关联的应用程序。这样就可......
  • 文字识别和阅读软件OmniReader Pro mac功能介绍
    OmniReaderPromac是一款文字识别和阅读软件,它可以将印刷体和手写体的文字转换为数字文本,并将其朗读出来。该软件适用于视力受损、阅读困难、语言障碍等用户,可以帮助他们更加轻松地获取信息和阅读文本。OmniReaderPro具有简洁直观的用户界面,支持多种文件格式的导入和导出,如PDF、......
  • 图像批量设计软件 Retrobatch Pro mac功能介绍
    RetrobatchMac是一款灵活的批量图像处理工具。用户可以自由创建Workflow来实现相应的功能,这些Workflow能取代大量的重复劳动,提高生产力。RetrobatchMac的一般操作是从左边栏拖动相应动作到工作区形成节点(Nodes),节点连接起来形成一个Workflow,最后运行这个Workflow即可。Retrobatch......