单一共享广播信道,如果两个或者两个以上结点同时传输,会互相干扰(interference)
冲突(collision):结点同时接收到两个或者多个信号→接收失败!
MAC协议采用分布式算法决定结点如何共享信道,即决策结点何时可以传输数据。
其必须基于信道本身,通信信道共享协调信息。无带外信道用于协调。
  • 信道划分(channel partitioning)MAC协议
TDMA: time division multiple access
TDM 将时间划分为时间帧(timeframe),并进一步划分每个时间帧为N个时隙(slot)
每个站点在每个时间帧,占用固定长度的时隙(长度=分组传输时间);未用时隙空闲(idle)
如图:6站点LAN,134传输分组,256空闲
FDMA: frequency division multiple access
信道频谱划分为若干频带(frequency bands)
每个站点分配一个固定的频带,不会冲突但信道利用率可能不高;无传输频带空闲
如图:6站点LAN, 134频带传输数据,256频带空闲。
CDMA: code division multiple access
每个用户分配一个唯一的m bit码片序列(chipping sequence),其中“0”用“-1”表示、“1”用“+1”表示。
各用户码片序列相互正交(orthogonal)
各用户使用相同频率载波,利用各自码片序列编码数据,编码信号= (原始数据) × (码片序列)
如发送比特 1(+1),则发送自己的m bit 码片序列
如发送比特 0(-1),则发送该码片序列的m bit 码片序列的反码
接收端收到的是各用户的叠加向量,用发送端的码片序列与收到的编码信号求内积则可解码
  • 随机访问(random access)MAC协议
当结点要发送分组时,利用信道全部数据速率R发送分组,没有事先的结点间协调
两个或多个结点同时传输时会发生冲突,因此需要定义:如何检测冲突、如何从冲突中恢复 (如通过延迟重传)
时隙ALOHA协议
所有帧大小相同
时间被划分为等长的时隙(每个时隙可以传输1个帧),结点间时钟同步
结点只能在时隙开始时刻发送帧,当结点有新的帧时在下一个时隙(slot)发送
如果2个或2个以上结点在同一时隙发送帧,结点即检测到冲突
如果无冲突:该结点可以在下一个时隙继续发送新的帧
如果冲突:该结点在下一个时隙以概率p重传该帧,直至成功
优点:
(1)单个结点活动时,可以连续以信道全部速率传输数据
(2)高度分散化:只需同步时隙
(3)简单
缺点:
(2)冲突时会浪费时隙
(2)存在空闲时隙
(3)结点也许能以远小于分组传输时间检测到冲突,不过检测到冲突也没有意义,因为时隙ALOHA协议只允许在时隙开始时发送数据帧
(4)需要时钟同步
假设: N个结点有很多帧待传输,每个结点在每个时隙均以概率p发送数据
对于给定的一个结点,在一个时隙将帧发送成功的概率= p(1-p)N-1
对于任意结点成功发送帧的概率= Np(1-p)N-1
最大效率: 求得使Np(1-p)N-1最大的p*
对于很多结点,求Np*(1-p*)N-1当N趋近无穷时的极限,可得最大效率=1/e≈0.37
非时隙ALOHA协议
无需时钟同步,更加简单
当有新的帧产生时,立刻发送
冲突可能性增大:在t0时刻发送帧,会与在[t0-1, t0+1]期间其他结点发送的帧冲突
易损时间区为[t0-1, t0+1],是时隙ALOHA协议的两倍
P(给定结点成功发送帧) = P(该结点发送)*P(无其他结点在[t0-1, t0]期间发送帧)*P(无其他结点在[t0, t0+1]期间发送帧)
= p·(1-p)N-1·(1-p)N-1
= p·(1-p)2(N-1)
选取最优的p,当N趋近无穷时的极限=1/(2e)≈0.18,比时隙ALOHA更差
载波侦听多路访问协议 CSMA(carrier sense multiple access)协议
载波侦听:发送帧之前,监听信道(载波):
    信道空闲:发送完整帧
    信道忙:推迟发送
        1-坚持CSMA:以概率p=1一直坚持监听信道
        非坚持CSMA:不坚持监听信号,等待一段时间再监听
        P-坚持CSMA
冲突可能仍然发生:信号传播延迟,或者同时发送了数据帧
广播信道的端到端信道传播时延越长,载波侦听结点不能侦听到网络中另一个结点巳经开始传输的机会就越大
如图:B已经开始传输,但由于信号传输延迟,D不能侦听到,因此也开始了传输。但即使出现冲突也必须将数据帧发送完,会浪费信道资源。
具有碰撞检测的载波侦听多路访问协议 CSMA/CD (CSMA with CollisionDetection)协议
应用于以太网
碰撞检测:当一个传输结点在传输时一直在侦听此信道。如果它检测到另一个结点正在传输干扰帧,它就停止传输
有线局域网易于实现:测量信号强度,比较发射信号与接收信号
无线局域网很难实现:接收信号强度淹没在本地发射信号强度下
如图:短时间内可以检测到冲突(检测到叠加信号),冲突后传输中止,减少信道浪费
网络带宽:R bps
数据帧最小长度:Lmin(bits)
信号传播速度:V(m/s)
数据帧发送完成前,A必须收到B处传来的冲突L / R ≥ 2dmax/ V
Lmin/ R = 2dmax/ V
可能还有一些延迟时间,RTT > d / V ,得Lmin/ R= RTTmax
Tprop= LAN中2个结点间的最大传播延迟
ttrans= 最长帧传输延迟,对于10Mbps,传输最大长度的以太网帧的时间近似为1.2ms
Tprop趋近于0或者ttrans趋近于∞时,效率趋近于1
远优于ALOHA,并且简单、分散!
避免冲突的载波侦听多路访问协议  CSMA/CA(CSMAwith Collision Avoidance)协议
802.11无线局域网中,不能像CSMA/CD那样,边发送、边检测冲突,原因为:
(1)检测碰撞的能力要求站点具有同时发送(站点自己的信号)和接收(检测其他站点是否也在发送)的能力。因为在802. 11适配器上,接收信号的强度通常远远小于发送信号的强度,制造具有检测碰撞能力的硬件代价较大。
(2)无法侦听到所有可能的冲突:隐藏站、信号衰落
802.11发送端:
(1)如果监听到信道空闲了分布式帧间间隔DIFS后,则在发送整个帧(发送的同时不检测冲突)
发送端首先利用CSMA向BS发送一个很短的请求发送(request-to-send,RTS)控制帧预约信道,而不是随机发送数据帧,利用小预约帧避免长数据帧的冲突。RTS帧仍然可能彼此冲突(但RTS帧很短)
AP广播一个很短的允许发送(clear-to-send,CTS)控制帧作为对RTS的响应,CTS帧可以被所有结点接收,以消除隐藏站影响
发送端可以发送数据帧,其他结点推迟发送
(2)如果监听到信道忙,则选取随机回退值
            当信道空闲时,计时器倒计时
            当计时器超时时,发送帧
(3)如果没有收到ACK,则增加随机退避间隔时间,重复(2)
802.11接收端:
如果正确接收帧,则在延迟短帧间间隔SIFS后,向发送端发送ACK(由于存在隐藏站问题)
  • 轮流访问MAC协议
轮询协议
主结点以循环的方式轮询每个结点(向结点发送一个报文,告诉它能够传输的桢的最多数掀)
从属结点发送数据(被邀请且有数据才会发送数据)
缺点:
(1)轮询数据帧存在轮询开销
(2)主结点必须依次轮询每一个非活跃结点,活跃结点等待轮询存在等待延迟
(2)单点故障问题
令牌传递协议
控制令牌(小的特殊帧)依次从一个结点传递到下一个结点。
当一个结点收到令牌且它有一些帧要发送时,它持有令牌并发送最大数目的帧数;否则,它立即向下一个结点转发该令牌。
缺点:
(1)令牌开销
(2)令牌丢失,则必须调用某些恢复步骤使令牌返回到循环中来
(3)令牌依次传递,结点必须等待令牌存在等待延迟
(4)单点故障问题

计算机网络-链路层(2)多路访问控制协议(multiple access control protocol)的更多相关文章

  1. 介质访问控制子层-Medium Access Control Sublayer:多路访问协议、以太网、无线局域网

    第四章 介质访问控制子层-Medium Access Control Sub-layer 4.1介质访问控制子层概述 MAC子层不属于之前提到的OSI或TCP/IP架构的任何一层,这也是为什么这一层被 ...

  2. Azure ARM (16) 基于角色的访问控制 (Role Based Access Control, RBAC) - 使用默认的Role

    <Windows Azure Platform 系列文章目录> 今天上午刚刚和客户沟通过,趁热打铁写一篇Blog. 熟悉Microsoft Azure平台的读者都知道,在老的Classic ...

  3. Linux访问控制列表(Access Control List,简称ACL)

    Linux访问控制列表(Access Control List,简称ACL) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ACL概述 ACL:Access Control L ...

  4. 计算机网络——链路层协议

    一. 链路层的功能 可靠交付:在高差错的链路,如无线链路,可以进行可靠交付:对于其它的有线,可以是多余的: 流量控制:防止接收方的缓存区溢出,帧丢失: 差错检测与差错纠正:在硬件上实现了: 二.多路访 ...

  5. 计算机网络-链路层(4)WiFi:802. 11无线LAN

    有几套有关无线LAN 的802. 11标准,包括802.11b.802.11a和802.11g. 802.11g是至今为止最为流行的技术.一些双模式(802.11a/g)和三模式(802.11a/b/ ...

  6. windows访问控制列表 --ACL(Access Control List)

    1.定义 ACL是一个windows中的表示用户(组)权限的列表. Access Control List(ACL) Access Control Entry(ACE) ... 2.分类 ACL分为两 ...

  7. Azure ARM (17) 基于角色的访问控制 (Role Based Access Control, RBAC) - 自定义Role

    <Windows Azure Platform 系列文章目录> 在上面一篇博客中,笔者介绍了如何在RBAC里面,设置默认的Role. 这里笔者将介绍如何使用自定的Role. 主要内容有: ...

  8. java基础 UDP通信 user datagram protocol 用户数据豆协议 TCP transmission control protocol 传输控制协议 多线程TCP

    无连接通信 UDP 客户端 package com.swift.test; import java.io.IOException; import java.net.DatagramPacket; im ...

  9. 计算机网络七层协议模型 “开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)

    计算机网络七层协议模型 作者:Ryan    时间:2013年10月7日 一.物理层(Physical Layer) OSI模型的最低层或第一层,规定了激活.维持.关闭通信端点之间的机械特性.电气特性 ...

随机推荐

  1. Bug--时区问题导致IDEA连接数据库失败

    打开cmd进入mysql,设置 set global time_zone='+8:00';

  2. layui常用插件(二) 时间插件

    日期和时间 html <div class="layui-inline"> <!-- 注意:这一层元素并不是必须的 --> <input type=& ...

  3. SpringCloud系列使用Eureka进行服务治理

    1. 什么是微服务? "微服务"一词来自国外的一篇博文,网站:https://martinfowler.com/articles/microservices.html 如果您不能看 ...

  4. mybatis之if判断

    今天使用mybatis开发公司中台项目踩的一个坑,分享并记录一下 踩坑前因:因项目中比较多状态字段,用了大量的Integer 0和1进行判断 在功能做完后只是粗略的点了下觉得没多大问题(来自程序员强大 ...

  5. ref以及传值传址的理解

    ref(也包括out)关键字肯定都会用,传值调用和传址调用也是初学写代码时都已经历过的话题,与这相关的还有一些话题,比如值类型和引用类型有什么区别等,但是如果不仔细,可能有一些概念的混淆或者理解不够清 ...

  6. 7.12 NOI模拟赛 积性函数求和 数论基础变换 莫比乌斯反演

    神题! 一眼powerful number 复习了一下+推半天. 可以发现G函数只能为\(\sum_{d}[d|x]d\) 不断的推 可以发现最后需要求很多块G函数的前缀和 发现只有\(\sqrt(n ...

  7. Pintech品致—示波器探头技术标准倡导者

     Pintech品致是仪器仪表的品牌,全球示波器探头第一品牌,示波器探头技术标准倡导者:“两点浮动”电压测试创始人:世界知名品牌,泰克(Tektronix),罗德与施瓦茨R&S,是德(Keys ...

  8. Java动态代理(AOP)

    目录 一.代理 1. 什么是代理? 2. 使用代理模式的作用 3. 实现代理的方式 二.静态代理 1. 模拟用户购买u盘 2. 静态代理的缺点 三.动态代理 四. JDK 动态代理 1. Invoca ...

  9. 曲线生成与求交—Bezier曲线

    Bezier曲线生成 法国工程师Pierre Bezier在雷诺公司使用该方法来设计汽车.一条Bezier曲线可以拟合任何数目的控制点. 公式 设\(n+1\)个控制点\(P_0,P_1--P_n\) ...

  10. 构造函数原型constructor

    对象原型(__proto__)和构造函数原型对象(prototype)里面都有一个属性constructor,constructor我们称为构造函数,因为它指向的是构造函数本身. constructo ...