单一共享广播信道,如果两个或者两个以上结点同时传输,会互相干扰(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. 各版本arm-gcc区别与安装【转】

    转自:https://www.jianshu.com/p/fd0103d59d8e arm-linux-gcc.arm-none-eabi-gcc.arm-eabi-gcc.arm-none-linu ...

  2. SAP四代增强实现:销售订单复制项目文本时不需要显示文本框和回车

    最近接收到一个业务需求,在SAP依据销售订单复制时,如果订单里面的项目有多个文本,系统就会显示复制的文本框处理,让用户选择是否复制,这个就让销售很不舒服,如果有几十个项目,每个项目有几个文本,那就就要 ...

  3. 使用Spring Validation优雅地校验参数

    写得好的没我写得全,写得全的没我写得好 引言 不知道大家平时的业务开发过程中 controller 层的参数校验都是怎么写的?是否也存在下面这样的直接判断? public String add(Use ...

  4. The Google File System(论文阅读笔记)

    概述 ​ GFS:一个可扩展的分布式文件系统,用于大型分布式数据相关应用,TB级的数据,成千上万的并发请求. 设计概览 假设 组件的失效比异常更加常见 多数的文件修改操作是追加数据而不是重写原来的数据 ...

  5. nonlocal 访问变量

    def counter(start = 0): def incr(): nonlocal start #分别保存每一个变量的临时值.类似yield start += 1 return start re ...

  6. Numpy修改数组中的元素值

    import numpy as np x = np.arange(8) # [0 1 2 3 4 5 6 7] # 在数组尾部追加一个元素 np.append(x,10) # array([ 0, 1 ...

  7. charles抓取HTTPS设置,详细踩坑版

    写这篇文章的背景就是,每次我在一台新电脑上用charles抓包时,总是因为各种原因无法抓到https请求,每个百度出来的回答又不是那么详细,需要通过几篇回答才能解决过程中的各种问题,所以把自己的安装经 ...

  8. python的单下划线和双下划线

    python 类中的单下划线开头的变量表示:该方法为类的私有方法,原则上外部不能访问,但是用._XX是可以访问到的 双下划线开头则是强制外部不能直接访问的用.__XX是访问不到的,它内部其实是将变量名 ...

  9. C语言学习笔记之一个程序弄清&&、||、i++、++i

     由此程序可以看出, ++a是先执行自加,再把值赋值给c,所以c就是a+1=10+1=11 b++是先做赋值运算,也就是先d=b,再b自加,所以d=b(原先)=5 a和b都执行自加,所以a=11,b= ...

  10. java Format

    DecimalFormat函数语法: DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字. DecimalFormat 包含一个模式 和一组符号 符号含义: ...