小白笔记
本节学习多点访问协议
多路访问协议
·单个共享的广播型链路
·2个或更多站点同时传送:冲突
·多个节点在同一个时刻发送,则会收到2个或多个信号叠加,这样电磁波叠加在一起,它是不能区分这两个哪个是分别谁发的。
多路访问协议(介质访问控制协议:MAC)
·分布式算法-决定节点如何使用共享信道,即:决定节点什么时候可以发送?
·关于共享控制的通信必须用借助信道本身传输!
·没有带外的信道,各节点使用其协调信道使用
·用于传输控制信息
解决谁在什么时候可以使用这个进行发送,是一个分布式的算法,各个节点采用这个分布式的算法来相互协调对于共享性介质的访问跟使用,我们把这个协议称为MAP的协议。共享式的协议本身没有额外的信道,只有这一个信道,发送数据接收数据,同时对这个信道的协调跟使用它要发送一些控制信息,所有这些信息的发送接收都在这个共享式信道当中,站点之间信道的协商也在这个信道上进行,也就是说,多个站点,一个信道,在信道上发数据信息控制信息,我们的问题是如何来设计一个分布式的算法让各个节点协调对这个共享式信道的使用。
理想的多路访问协议
给定:Rbps的广播信道
必要条件:
1.当一个节点要发送时,可以R速率发送
2.当M个节点要发送。每个可以以R/M的平均速率发送
3.完全分布的:
·没有特殊节点协调发送
·没有时钟和时隙的同步
4.简单
MAC(媒体访问控制)协议:分类
3大类:
·信道划分
·把信道划分成小片(时间、频率、编码)
·分配片给每个节点专用
·随机访问
·信道不划分,也许冲突
·冲突后恢复
·依次轮流
·节点依次轮流
·但是有很多数据传输的节点可以获得较长的信道使用权
如果从算法角度来看,它叫MAC,如果从一个协议来看,就所谓的MAP,实际上代表的基本上是一个含义。
a.信道划分MAC协议:TDMA
·轮流使用信道,信道的时间分为周期
·每个站点使用每周期中固定的时隙(长度=帧传输时间)传输帧
·如果站点无帧传输,时隙空间->浪费
·如:6站LAN,1、3、4有数据报,时隙2、5、6空闲
划分时间片,把时间划为周期,每个周期第一个时间片第一个用户用,第二个时间片第二个用户用
a.信道划分MAC协议:FDMA
·信道的有效频率范围被分成一个个小的频段
·每个站点被分配一个固定的频段
·分配给站点的判断如果没有被使用,则空闲
·例如:6站LAN,1、3、4有数据报,频段2、5、6空闲
把信道分成若干个小频道,第一个频道第一个用户用,第二个频道第二个用户用
a.码分多路访问(CDMA)
·CDMA:
·使用站点在整个频段上同时进行传输,采用编码原理加以区分
·完全无冲突
·假定:信号同步很好,线性叠加
·比方:
·TDM:不同的人在不同的时刻讲话
·FDM:不同的组在不同的小房间里通信
·CDMA:不同的人使用不同的语言讲话
b.随机存取协议
·当节点有帧要发送时
·以信道宽带的全部R bps发送
·没有节点间的预先协调
·两个或更多节点同时传输,会发生->冲突
·随机存取协议规定:
·如何检测冲突
·如何从冲突中恢复(如:通过稍后的重传)
·随机MAC协议:
·时隙ALOHA
·ALOHA
·CSMA,CSMA/CD,CSMA/CA
b1.时隙ALOHA
假设
·所有帧是等长的(能够持续一个时隙)
·时间被划分成相等的时隙,每个时隙可发送一帧
·节点只在时隙开始时发送帧(比如某个数据在当前时隙的半路要发送,不行,要等到这个时隙完,如何下一个时隙开始时才能发送)
·节点在时钟上是同步的
·如果两个或多个节点在一个时隙传输,所有的站点都能检测到冲突
运行
·当节点获取新的帧,在下一个时隙传输
·传输时没有检测到冲突,成功
·节点能够在下一时隙发送新帧
·检测时如果检测到冲突,失败
·节点在每一个随后的时隙以概率p重传帧直到成功
C时隙中123都有数据要发,冲突了,到E123都有数据但是大家都不发,此时信道是空闲的,然后又到下一到时隙C,12决定发3决定不发,12又冲突了,再下一个时隙S,2决定发,13不发,此时2没有检测到冲突所以成功了,下一时隙E,13又都不发,再下一时隙C13又都决定发,13冲突,所有13又失败,下以时隙13又都不发,再下一时隙1发3不发,此时1成功,再下一时隙,3发3成功。所以时槽有空闲的,冲突的,成功的。
优点:
·节点可以以信道宽带全速连续传输
·高度分布:仅需要节点之间在时隙上的同步
·简单
缺点:
·存在冲突,浪费时隙
·即使有帧要发送,仍然有可能存在空闲的时隙
·节点检测冲突的时间<帧传输的时间,必须传完(我还没传完2我就知道要冲突了,可是我还是得传完)
·需要时钟上同步
传输成功的时槽占整个时槽的百分比它的上限是什么,这就是它的效率
b2.纯ALOHA(非时隙)
·无时隙ALOHA:简单、无须节点间在时间上同步
·当有帧需要传输:马上传输
·冲突的概率增加:
·帧在t0发送,和其它在[t0-1,t0+1]区间内开始发送的帧冲突
·和当前帧冲突的区间(其它帧在此区间开始传输)增大了一倍
纯ALOHA更任性,我什么时间有数据帧形成了,我就在这个时刻把它放出去,那这样的话它碰撞的概率比时隙ALOHA的概率更大,时隙ALOHA是要么全碰,碰的彻头彻尾,要么都不碰。
纯ALOHA的效率:效率比时隙ALOHA更差了!
那我们有没有什么办法可以提高它的效率呀?可以呀,你要发数据的之前先听一听有没有人在使用这个信道在发,如果有你就先别发了,就避免发生冲突是不是就可以提升效率呀,这种机制我们把它叫做CSMA(载波侦听),载波侦听指的是任何一个站点在发送之前先载波侦听,如果发现信道有人在用就先不发,就推迟到信道空闲再发,即可提高信道利用率。
CSMA冲突
冲突仍然可能发生:
由传播延迟造成:两个节点可能侦听不到正在进行的传输
冲突:
整个冲突帧的传输时间都被浪费了,是无效的传输(红黄区域)
注意:传播延迟(距离)决定了冲突的概率
节点依据本地的信道使用情况来频段圈闭信道的使用情况
采用CSMA虽然可以减少冲突的可能性,但不能完全避免冲突的可能性,而且局域网当中,两个节点间的距离越远时间越长,冲突的可能性就越大。
b.4CSMA/CD(冲突检测)
CSMA/CD:
·载波侦听CSMA:和在CSMA中一样发送前侦听信道
·没有传完一个帧就可以在短时间内检测到冲突
·冲突发生时则传输终止,减少对信道的浪费
CSMA即事前先侦听,CD即指边说边听,CSMA/CD即一种改进,不仅事前侦听信道,同时事中侦听信道来判断有没有冲突,如果有人在跟我同时发送,就立即停止对当前的发送,这样的话能让信道空闲下来再发,提高信道利用率。
·冲突检测CD技术,有线局域网中容易实现:
·检测信号强度,比较传输于接收到的信号是否相同
·通过周期的过零点检测
·人类类比:礼貌的对话人
黄色t0时刻没有检测到信道里有其他的所以黄色发送,t1时刻黄色还没传播到红色那边,因为有传播延时嘛,所以红色还不知道信道里有黄色了,所以它发送红色,黄红相加的那个点,发现冲突,因为要传播回去通知有冲突,有传播延时,左边黑色杆就是红色的传播延时,右边的就是黄色的传播延时,黄红相间即冲突的时间变少了,所以信道利用率得以提升。
CSMA/CD效率:比ALOHA更好的性能,而且简单,廉价,分布式!
以太网CSMA/CD算法
1.适配器获取数据报,创建帧
2.发送前:侦听信道CS
1)闲:开始传送帧
2)忙:一直等到闲再发送
3.发送过程中,冲突检测CD
1)没有冲突:成功
2)检测到冲突:放弃,之后尝试重发
4.发送方适配器检测到冲突,除放弃外,还发送一个Jam信号(强化冲突的电磁波信号),所有听到冲突的适配器也是如此
强化冲突:让所有站点都知道冲突
5.如果放弃,适配器进入指数退避状态
在第m次失败后,适配器随机选择一个{0,1,2,,2的m-1次方}中k,等待k*512位时,然后转到步骤2即重发,重发是用的二进制指数退避算法。
二进制指数退避算法:
·目标:适配器试图适应当前负载,在一个变化的碰撞窗口中随机选择时间点尝试重发
·高负载:重传窗口时间大,减少冲突,但等待时间长
·低负载:使得各站点等待时间少,但冲突概率大
·首次碰撞:在[0,1]选择K,延迟K*512位时
·第2次碰撞:在[0,1,2,3]选择K
·第10次碰撞:在[0,1,2,3,...,1023]选择K
b.5无线局域网CSMA/CA
WLAN构成:·基站:AP ·无限链路 ·移动主机节点
·冲突:2*站点(AP或者站点)在同一个时刻发送
·802.11:CSMA-发送前侦听信道,不会和其它节点正在进行的传输发生冲突
·802.11:没有冲突检测!
·无法检测冲突:自身信号远远大于其它节点信号
·即使能CD:不冲突!=成功
·目标:CSMA/CA
·无法CD,一旦发送一股脑全部发送完毕,不CD
·为了避免无CD带来的信道路由率低的问题,事前进行冲突避免
事前先侦听有没有人在发,有人发了就等信道空闲后再发,另外呢,发的时候就全速把它发出去,而且发的过程当中不做冲突检测(冲突检测有好处呀,冲突检测边发边检测是否有冲突,有冲突了就放弃再发送,就节省对信道的浪费就可以提高信道利用率呀)(为什么不冲突检测了呢?冲突检测在无线网中不可行,因为有衰减你又离自己最近你自身信号就远远大于其它节点信号,而且不冲突也不一定意味着成功(例如隐藏终端问题,A,C之间隔着山或者相隔太远,AC属于隐藏节点,B在它们中间,AC信道是被山隔了若没被隔A发C要是想发那C事前就知道A已在信道就不发,可是现在山隔了,那A发给C,B也发给C,这时候AC都没发现冲突呀,但是实际上B那因为AC都发给它B那已经冲突了呀,所以没发现冲突不一定意味着成功因为如此例实际已经冲突),冲突也不一定意味着不成功。就是无法做CD即冲突检测,能做CD也没用。)发就把它全发完,那有冲突的话不就降低信道利用率吗,那怎么样提高信道利用率呢?我首先听这个信道,如果这个信道是忙的,我不要侦听到信道空闲再发,而是听到信道忙的时候,相当于不管你忙不忙我闭着眼睛发,在窗口随机选择一个值(抛个筛子嘛),然后在信道每空闲的时候减一,减为0的时候来获得信道的访问权使用权。然后对方再给我确认,如果没有确认我再发。
无线局域网:CSMA/CA
发送方
1.如果站点侦测到信道空闲持续DIFS长,则传输整个帧(no CD)
2.如果侦测到信道忙碌,那么选择一个随机回退值,并在信道空闲时递减该值;如果信道忙碌,回退值不会变化。倒数倒到0时(只生在信道闲时)发送整个帧,如果没有收到ACK,增加回退值,重复2
802.11接收方
-如果帧正确,则在SIFS后发送ACK
(无线链路特性,需要每帧确认,例如:由于隐藏终端问题,在接收端形成干扰,接收方没有正确地收到。链路层可靠机制)
·在count down时,侦听到了信道空闲为什么不发送,而是要等到0时再发送?
例子:2个站点有数据需要发送,第三个站点正在发送,那2个节点听到了
LAN CD会怎么做?
让2者听完第三个节点发送完,然后立即发送。如果发生冲突,则放弃当前的发送,避免信道的浪费于无用冲突帧的发送上,代价不昂贵。
WLAN CA会怎么做?
无法冲突检测即无法CD,就不能一发现有冲突就放弃发送,一旦发送就必须发完,这样的话如果一旦发生冲突你还得继续发送完就造成信道浪费严重,代价昂贵。所以要尽量事先避免冲突,而不是在发生冲突时放弃然后重发。所以它会这样,听到发送的站点,分别选择随机值,回退到0发送。不同的随机值,一个站点会胜利。失败站点会冻结计数器,当胜利节点发完再发。
·无法完全避免冲突
·两个站点互相隐藏:AC互相隐藏,B在传输,AC选择了随机回退值,一个节点如A胜利了,发送。而C节点收不到就会顺利count down到0发送,最终AC的发送在B附近形成了干扰。
·选择了非常靠近的随机回退值:AC选择的值非常近,A到0后发送,但是整个信号还没到达B时,B也到0了B也发送,就会冲突。
b.5线缆接入网络
下行就一个用户:CMTS,所以不存在竞争,它往下发所有节点都可以收到谁来提取数据呢,即比较地址,如果地址是我的就把它收下来,所以说下行这块没什么可说的。
上行分成两种互联网访问时隙,一种是竞争式的预约的时隙,另外一种是终端用户设备要在这个时隙上去放数据。
c.轮流MAC协议
信道划分MAC协议:
·共享信道在高负载时是有效和公平的
·在低负载时效率低下
·只能等到自己的时隙开始发送或者利用1/N的信道频率发送
·当只有一个节点有帧传时,也只能够得到1/N个宽带分配
随机访问MAC协议
·在低负载时效率高:单个节点可以完全利用信道全部带宽
·高负载时:冲突开销较大,效率极低,时间很多浪费在冲突中
轮流协议:有2者的优点!
信道划分什么好处呀,它是固定的划分,有频分时分波分码分这几种信道划分的方式,所谓的波分即采用光通信嘛频分使用电磁波分成一个个的频段这个波段频段给你用那个波段频段给它用,安装等长的波段分配给每个用户。信道划分在低负荷的时候利用率高黄还是高负荷的时候利用率高?你是不是只能使用1/N的带宽,假如采用的是时分的,你每个周期把它分成24个石槽,你一个用户是不是就只获得1/24的带宽,低负载的时候只有为数不多的节点在发送,那么很多石槽都是空的,所以低负载的时候信道利用率是低的,而高负载的时候利用率就特别高,为什么?24个石槽几乎每个石槽都在用呀,所以利用率非常高。
随机访问就相反,如果采用CSMA/CD,一听到没人用,啪!一下子发出去,然后发完之后再听一听,又没人用,又啪再发,所以在低负载的时候利用率很高。但是高负载的时候采用CSMA/CD。高负载即很多的节点都有很多的数据要发,就一个共享式的信道,大家都在用。它听一听有人在用等一会吧,所谓空闲一点发发发,其它节点也在发,嘭嘭嘭冲突,然后隔一段时间再访问,再访问的时候可能又碰,随着节点的数量增加,发送数据的载荷的增加,在这种高负载的情况下随机访问的利用率就特别低。
所以你看,是不是各有好处呀,那有没有什么可以低负载高负载的情况下利用率都高呀?有,就是轮流协议,轮流协议有什么问题呢?它高低负载都很好,但是它太复杂,所以基本用的也不多。
MAC协议总结
·多点接入问题:对于一个共享型介质,各个节点如何协调对它的访问和使用?
·信道划分:按时间、频率或者编码
·TDMA , FDMA , CDMA
·随机访问(动态)
·ALOHA,S-ALOHA,CSMA,CSMA/CD
·载波侦听:在有些介质上很容易(wire:有线介质),但在有些介质上比较困难(wireless:无线)
·CSMA/CD:802.3 Ethernet网中使用
·CSMA/CA:802.11WLAN中使用
·依次轮流协议
·集中:由一个中心节点轮询; 分布:通过令牌控制
·蓝牙、FDDI、令牌环
补充:在LAN中,不碰=成功 ,还有条件:帧>=2t (2t即一个往返时间)
比如A发给B,需要t时才能到B,然后在无限接近t时,别的也侦听发现没有就也发就发生碰撞,此时要回去报告说发生冲突了哟,然后再需要t时才能回到家门口,而你的帧小于2t即还没到2t你就已经发完了,那都发完了你就以为成功了,实际上没有成功发生碰撞了,碰撞的通告还没回到家而言。