信道划分介质访问控制就是将使用介质的每个设备与来自同一信道上的其他设备的通信隔离开,把时域和频域资源合理地分配给网络上的设备,如下图所示:
每条信道只传输一个信号,信道利用率低,所以可以采用多路复用技术
多路复用技术
把多个信号组合在一条物理信道上进行传输,使得多个计算机或终端设备共享信道资源,提高信道利用率。复用器将多个信号在同一个信道传输,分用器则是将多个信号分别送到对应的终点
把一条广播信道,逻辑上分成几条用于两个节点之间通信的互不干扰的子信道,实际就是把广播信道转变为点对点信道。
介质访问控制分类如下:
一.静态划分信道 (信道划分 介质访问控制)
1.频分多路复用FDM
用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。频分复用的所有用户在同样的时间占用不同的带宽(率带宽源)资源。
优点:充分利用传输介质带宽,系统效率较高;由于技术比较成熟,实现也比较容易。
缺点:所需设备随输入路数增加而增多,频谱资源占用多,设备不易小型化。
2.时分多路复用TDM
也叫同步时分复用技术(Synchronous Time Division Multiplexing, STDM),将时间划分为一段段等长的时分复用帧 (TDM帧)。每一个时分复用的用户在每一个TDM帧中占用固定序号的时隙,所有用户轮流占用信道。
TDM帧就是在物理层传送的比特流所划分的帧,标志一个周期。
这样传有一个问题,如果只有D在传输信号,那么D还是需要等A,B,C的时间片完,轮到自己的时间片再传输信号,这样信道利用率是极低的。
所以可以用统计时分复用(Statistical Time Division Multiplexing,STDM),也叫异步时分复用技术(Asynchronous Time Division Multiplexing, ATDM):
每一个STDM帧中的时隙数小于连接在集中器上的用户数。各用户有了数据就随时发往集中器的输入缓存,然后集中器按顺序依次扫描输入缓存,把缓存中的输入数据放入STDM帧中,一个STDM帧满了就发出。STDM帧不是固定分配时隙,而是按需动态分配时隙。
这里一定要区分:
同步时分复用技术(Synchronous Time Division Multiplexing, STDM)
统计时分复用(Statistical Time Division Multiplexing,STDM)
两者是不一样的
缺点:由于需要对每个数据流进行精确的时间控制,所以实现起来相对复杂。同时每个数据流必须等待其分配的时间片到来才能发送数据,这可能导致一定的延迟。
看到这我们可以总结:频分多路复用可以共享时间,但不共享空间(同时发送,占用不同带宽)
时分多路复用是同一空间,不同时间(轮到自己的时间片才能发送信号)
3.波分多路复用WDM
波分多路复用就是光的频分多路复用,在一根光纤中传输多种不同波长(频率)的光信号,由于波长(频
率)不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。
4.码分多路复用CDM
码分多址 (CDMA)是码分复用的一种方式。
1个比特分为多个码片/芯片 (chip),每一个站点被指定一个唯一的m位的芯片序列,发送1时发送芯片序列 (通常把0写成-1),例如:
A的1比特分为m位的芯片序列00011011,在发送过程中0,通常会写为-1,所以A站点的芯片序列就可以写为S:-1 -1 -1 +1 +1 -1 +1 +1
同理B的1比特分为m位的芯片序列00101110,发送时则变为T:-1 -1 +1 -1 +1 +1 +1 -1
如何从C中分离A,B两个站点:
1.多个站点同时发送数据的时候,要求各个站点芯片序列相互正交,规格化内积为0。若内积为0,两个原站就可以发送数据了。
2.这里说的都是比特1,如果发送比特0,就发送芯片序列反码,也就是发送1时站点发送芯片序列,发送0时发送芯片序列反码(将0变为1,将1变为0),例如:
3.两个向量到了公共信道上,线性相加
S-T=(0,0,-2,2,0,-2,0,2)
4.数据分离:合并的数据和源站规格化内积
内积后可知道A站点的数据就为比特1,B站点的数据就为-1,-1表示的是0,因此站点B,发送的就是比特0
5.总结:
基于多路复用技术划分资源
网络负载重:共享信道效率高,且公平
网络负载轻:共享信道效率低
二.动态分配信道
也叫做动态媒体接入控制/多点接入:信道并非在用户通信时固定分配给用户。
1.随机访问 介质访问控制
这里的随机是指所有用户可随机发送信息,发送信息时占用全部带宽。这样随机访问会导致不协调,
从而导致冲突,需要用到以下协议解决这一问题:
ALOHA协议 CSMA协议 CSMA/CD协议 CSMA/CA协议
(1)ALOHA协议
纯ALOHA协议
纯ALOHA协议的思想就是不监听信道,不按时间槽发送,随机重发。想发就发
如果发生冲突,接收方在就会检测出差错,然后不予确认,发送方在一定时间内收不到就判断发生冲突。超时后等一随机时间再重传。直至收到确认帧为止
时隙ALOHA协议
时隙ALOHA协议的思想: 把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到一个时隙(T0)之后,即等到下一个时间片开始时刻再发送。
这样控制了纯ALOHA协议的随机性,发生碰撞的几率就小很多
总结:
1.纯ALOHA比时隙ALOHA吞吐量更低,效率更低。
2.纯ALOHA想发就发,时隙ALOHA只有在时间片段开始时才能发。
(2)CSMA协议
也就是载波监听多路访问协议CSMA,其中:
CS:载波侦听/监听,每一个站在发送数据前要检测一下总线上是否有其他计算机在发送数据。
注:当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大 (互相叠加)。当一个站检测到的信号电压摆动值超过一定门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞,即发生了冲突。
MA:多点接入,表示许多计算机以多点接入的方式连接再一根总线上。(总线型网络)
CSMA协议相对于ALOHA协议的区别在于:其发送帧之间会监听信道。
若信道空闲:发送完整帧
1-坚持CSMA:如果一个主机要发送消息,那么它先监听信道。
•空闲则直接传输,不必等待。
•忙则一直监听,直到空闲马上传输。
•如果有冲突(一段时间内未收到肯定回复),则等待一个随机长的时间再监听,重复上述过程。
优点:只要媒体空闲,站点就马上发送,避免了媒体利用率的损失。
缺点:假如有两个或两个以上的站点有数据要发送,冲突就不可避免。
非坚持CSMA:如果一个主机要发送消息,那么它先监听信道。
•空闲则直接传输,不必等待。
•忙则等待一个随机的时间之后再进行监听。
优点:采用随机的重发延迟时间可以减少冲突发生的可能性。
缺点:可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低。
P-坚持CSMA:如果一个主机要发送消息,那么它先监听信道。
•空闲则以p概率直接传输,不必等待;概率1-p等待到下一个时间槽再传输。
•忙则持续监听直到信道空闲再以p概率发送。
•若冲突则等到下一个时间槽开始再监听并重复上述过程。
优点:既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的这种方案。
三种算法总结如下:
但是发生冲突后还是要坚持把数据帧发送完,也会造成信道浪费。也就是说如果信道上发生冲突,但是上述3种算法,并没有检测冲突的过程,不知道此刻信道发生冲突,会继续发送数据,这样就会使发送的数据浪费掉。这样就需要CSMA/CD协议
3)CSMA/CD协议
也就是载波监听多点接入/碰撞检测CSMA/CD,其中:
CS:载波侦听/监听,每一个站在发送数据之前以及发送数据时都要检测一下总线上是否有其他计算机在发送数据
MA:多点接入,表示许多计算机以多点接入的方式连接在一根总线上。(总线型网络)
CD:碰撞检测(冲突检测),"边发送边监听"适配器边发送数据边检测信道上信号电压的变化情况,以便判断自己在发送数据时其他站是否也在发送数据。(只能应用于半双工网络:只有一方发送数据,另一方接收数据。因为如果是全双工通信,那么主机在发送数据的同时也在接收数据,也就是说网络中有另一台主机也在发送数据,这样会增加冲突的可能性)
这个协议与CSMA协议的区别在于:它会监听信道,再发送数据,发送数据时也会监听信道,若信道发送冲突,则立即停止发送。
先听后发为什么还会冲突:
因为电磁波在总线上总是以有限的速率传播的。例如:
A在给B发送数据时,数据还没有到达B,对于B而言,信道就是空闲的,因为没有数据进入B站点,这时B也要给A发送数据的话,则就会发生冲突。
两个信号碰撞后,信号相互干扰,接收端就会收到错误信号,通过差错控制,A,B检测到发生碰撞,就会停发。
所以最迟(两倍的总线端到端的传播时延2t,这里也叫总线端到端往返传播时延:争用期/冲突窗口/碰撞窗口)才能知道自己发送的数据没和别人发生碰撞,也就是A即将传输数据到B,B检测信道空闲,发送数据到A这一极限过程。
只要经过2t时间还没有检测到碰撞,就能肯定这次发送不会发生碰撞
如何确定碰撞后的重传时机:截断二进制指数规避算法
若连续多次发生冲突,就表明可能有较多的站参与争用信道。使用此算法可使重传需要推迟的平均时间随重传次数的增大而增大,因而减小发生碰撞的概率,有利于整个系统的稳定。
例:在以太网的二进制回退算法中,在11次碰撞之后,站点会在0~(?)之间选择一个随机数
k=min{11,10}=10
站点就会在0~(2^10)-1之间随机选择一个随机数
最小帧长问题:
假如A站发了一个很短的帧,但发生了碰撞,不过在帧发送完毕后才检测到发生碰撞,这时就没法停止发送了,因为已经发完了。这样CSMA/CD协议的设置就没有意义了
最迟在2t可以检测到碰撞,所以帧的传输时延至少要两倍于信号在总线中的传播时延。
不知道传输时延和传播时延的概念的,可以看我的另一篇:
得到最小帧长:
注:以太网规定最短帧长为64B,凡是长度小于64B的都是由于冲突而异常终止的无效帧。所以对于以太网而言,如果帧长小于64B,则会填充到64B。
4)CSMA/CA协议
也就是载波监听多点接入/碰撞避免CSMA/CA
CSMA/CA协议与CSMA/CD协议一样,也是会先监听,若无冲突,再发送数据,并且发送数据时,继续监听信道,若有冲突,立即停止重发。与CSMA/CD的区别在于
1.CSMA/CA协议是针对冲突的避免,而CSMA/CD则是针对冲突的检测
2. CSMA/CA协议用于无线局域网中,CSMA/CD用于以太网
为什么无线局域网要用CSMA/CA,而不是CSMA/CD
•无法做到360度全面检测碰撞
•隐蔽站:当A和C都检测不到信号,认为信道空闲时,同时向终端B发送数据帧,就会导致冲突。这里A要给B发送数据,那么C对于A而言就是隐蔽站。
3.载波检测的方式不同:因传输介质不同,CSMA/CD与CSMA/CA的检测方式也不同。CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用能量检测(ED)、载波检测 (CS)和能量载波混合检测三种检测信道空闲的方式。
工作原理:
•发送数据前,先检测信道是否空闲。
•空闲则发出RTS (request to send),RTS包括发射端的地址、接收端的地址、下一份数据将持续发送的时间等信息;信道忙则等待。
•接收端收到RTS后,将响应CTS (clear to send)
例如这里B站响应A站,那么C站再给B站发送请求,B站不会响应,只有接收完A发送的数据后,才会响应C
•发送端收到CTS后,开始发送数据帧(同时预约信道: 发送方告知其他站点自己要传多久数据)
例如A会告诉C发送时间
•接收端收到数据帧后,将用CRC来检验数据是否正确,正确则响应ACK帧
•发送方收到ACK就可以进行下一个数据帧的发送,若没有则一直重传至规定重发次数为止(采用二进制指数退避算法来确定随机的推迟时间)。
注:这里的RTS/CTS帧是成对出现的,也可以不用,这两个帧的用途就是解决隐蔽站的问题。
(5)总结
用户根据意愿随机发送信息,发送信息时可独占信道带宽。
网络负载重:产生冲突开销
网络负载轻:共享信道效率高,单个结点可利用信道全部带宽
2.轮询访问 介质访问控制
轮询访问介质访问控制结合了信道划分介质访问控制的优点以及随机访问介质访问控制的优点,也就是既可以不产生冲突,也可以在发送时占全部带宽。
(1)轮询协议
主结点轮流“邀请”从属结点发送数据。
存在的问题:
•轮询开销:如果从属结点较多,那么就会存在比较大的开销
•等待延迟:这是靠后的从属结点面临的问题,例如第四台主机需要发送数据,而前3台主机不需要发送数据,但是主结点还是要轮流询问前3台主机,才能询问第四台主机
•单点故障:若主结点故障了,那么从属结点就不能发送数据了。这里可以设置一些备用主结点就可以解决问题。
(2)令牌传递协议
TCU:可以传递所有帧,并且为主机接收和发送数据提供接口
令牌:一个特殊格式的MAC控制帧,不含任何信息。控制信道的使用,确保同一时刻只有一个结点独占信道。只有得到令牌的主机,才能发送数据。所以令牌环网不会发生碰撞
工作流程:
1.若网络空闲,没有任何主机发送数据,那么令牌就会在主机间进行传递
2.如果有一个主机需要发送数据,那么令牌就传送给该主机,这个主机会改变令牌的标志位,也就是将令牌从空闲改为忙,并且在令牌的控制帧后面加上需要传递的数据,这样令牌就成为了数据帧
3.令牌在主机间进行传递,若到达的主机不是需要传递数据的主机,就不会复制,到达目的主机后,目的主机复制数据
4.令牌最后会传回发送主机,主机收到自己发的数据帧后会先检查数据帧有无出错,若出错了,就进行重传,如果没有出错,就会回收数据帧,不再对帧转发,这时令牌又空闲下来了
注:每个结点都可以在一定的时间内 (令牌持有时间)获得发送数据的权利,并不是无限制地持有令牌,如果某主机发送的数据特别长,那么只能在持有时间发送数据,剩余数据需要等令牌再次轮转到该主机,再继续发送。
存在的问题:
•令牌开销:源站点传送完数据后会产生新的令牌
•等待延迟:例如主机A想发送数据,但是现在主机D在发送数据,那么就需要等待令牌循环完D,C,B,才能到主机A发送数据。
•单点故障:如果其中一台主机故障了,那么环路就断了,这里我们可以设置一些替代机解决问题。
令牌传递协议应用于令牌环网(物理上星型拓扑,逻辑上环形拓扑)
采用令牌传送方式的网络常用于负载较重、通信量较大的网络中,因为每个主机轮到令牌后使用令牌的概率增大。
所以我们可以看到,只有随机访问介质访问控制中会产生冲突