CSMA/CA精辟总结

1. CSMA/CA

https://blog.csdn.net/qq894040717/article/details/82426965

https://blog.csdn.net/LMM_5201/article/details/81673371

参考了以上链接的内容,然后进行了整理补充

CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)协议只能用于有明确目标地址的帧,不能用于组播报文和光播报文传输。

1.1 前言

 

虽然CSMA/CD协议已成功地应用于使用有线连接的局域网,但无线局域网能不能也使用CSMA/CD协议呢?

 

显然,这个协议的前一部分CSMA能够使用。在无线局域网中,在发送数据之前先对媒体进行载波监听。如发现有其他站在发送数据,就推迟发送以免发生碰撞。这样做是合理的。但问题是“碰撞检测”(CD)在无线环境下却不能使用。理由如下:

 

 (1)碰撞检测”要求一个站点在发送本站数据的同时,还必须不间断地检测信道。一旦检测到碰撞,就立即停止发送。但由于无线信道的传输条件特殊,其信号强度的动态范围非常大,因此在802.11适配器上接收到的信号强度往往会远远小于发送信号的强度(信号强度可能相差百万倍)。如要在无线局域网的适配器上实现检测到碰撞,在硬件上需要的花费就会过大。

 

(2)更重要的是,即使我们能够在硬件上实现无线局域网的碰撞检测功能,我们仍然无法避免碰撞的发生。这就表明,无线局域网不需要进行碰撞检测。

 

 “无线局域网不需要进行碰撞检测”是由无线信道本身的特点决定的。我们知道,无线电波能够向所有的方向传播,且其传播距离受限。当电磁波在传播过程中遇到障碍物时,其传播距离就会受到限制。

1.2 无线传输的两个问题

 

(a)隐藏站(b)暴露站

由此可见,无线局域网可能出现检测错误的情况:检测到信道空闲,其实并不空闲;而检测到信道忙,其实并不忙。

为了解决以上问题,提出了RTS/CTS.

1.2.1 RTS/CTS

 

CSMA/CA协议中的RTS和CTS帧

如果站A要向站B发送数据:

 

1)站A在发送数据帧之前,要先向站B发送一个请求发送帧RTS(Request To Send)。在RTS帧中已说明将要发送的数据帧的长度;

 

2)站B收到RTS帧后就向站A回应一个允许发送帧CTS(Clear To Send)。在CTS帧中也附上A欲发送的数据帧的长度(从RTS帧中将此数据复制到CTS帧中)。站A收到CTS帧后就可发送其数据帧了。

 

现在讨论在A和B两个站附近的一些站将做出什么反应:

 

1)对于站C,站C处于站A的无线传输范围内,但不在站B的无线传输范围内。因此站C能够收听到站A发送的RTS帧,但经过一小段时间后,站C收听不到站B发送的CTS帧。这样,在站A向站B发送数据的同时,站C也可以发送自己的数据而不会干扰站B接收数据(注意:站C收听不到站B的信号表明,站B也收听不到站C的信号)。

 

2)对于站D,站D收听不到站A发送的RTS帧,但能收听到站B发送的CTS帧。因此,站D在收到站B发送的CTS帧后,应在站B随后接收数据帧的时间内关闭数据发送操作,以避免干扰站B接收自A站发来的数据。

 

3)对于站E,它能收到RTS帧和CTS帧,因此,站E在站A发送数据帧的整个过程中不能发送数据。

 

虽然使用RTS和CTS帧会使整个网络的效率有所下降。但这两种控制帧都很短,它们的长度分别为20和14字节。而数据帧则最长可达2346字节,相比之下的开销并不算大。相反,若不使用这种控制帧,则一旦发生冲突而导致数据帧重发,则浪费的时间就更大。

尽管协议经过了精心设计,但冲突仍然会发生

 

例如:站B和站C同时向站A发送RTS帧。这两个RTS帧发生冲突后,使得站A收不到正确的RTS帧因而站A就不会发送后续的CTS帧。这时,站B和站C像以太网发生冲突那样,各自随机地推迟一段时间后重新发送其RTS帧。推迟时间的算法也是使用二进制指数退避

1.3 mac子层

为了尽量减少冲突,802.11标准设计了独特的MAC子层。

它通过协调功能(Coordination Function)来确定在基本服务集BSS中的移动站,在什么时间能发送数据或接收数据。802.1 I的MAC层在物理层的上面,它包括两个子层。

 

(1)分布协调功能DCF (Distributed Coordination Function). DCF不采用任何中心控制,而是在每一个结点使用CSMA机制的分布式接入算法,让各个站通过争用信道来获取发送权。因此DCF向上提供争用服务。802. I 1协议规定,所有的实现都必须有DCF功能。    

 

(2)点协调功能PCF (Point Coordination Function)。PCF是选项,是用接入点AP集中控制整个 BSS内的活动,因此自组网络就没有PCF子层。PCF使用集中控制的接入算法,用类似于探询的方法把发送数据权轮流交给各个站,从而避免了碰撞的产生。对于时间敏感的业务,如分组话音,就应使用提供无争用服务的点协调功能PCF。

 

为了尽量避免碰撞,802. 11规定,所有的站在完成发送后,必须再等待一段很短的时间(继续监听)才能发送下一帧。这段时间通称为帧间间隔IFS (InterFrame Space)。帧间间隔的长短取决于该站要发送的帧的类型。高优先级帧需要等待的时间较短,因此可优先获得发送权,但低优先级帧就必须等待较长的时间。若低优先级帧还没来得及发送而其他站的高优先级帧已发送到媒体,则媒体变为忙态,那么低优先级帧就只能再推迟发送了,这样就减少了发生碰撞的机会。至于各种帧间间隔的具体长度,则取决于所使用的物理层特性。    下面解释最常用的两种帧间间隔的作用(参考图9-6 ):

 

(1) SIFS,即短(Short)帧间间隔,长度为28 us。 SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧。在这段时间内,一个站应当能够从发送方式切换到接收方式。使用SIFS的帧类型有:ACK帧、CTS帧、由过长的MAC帧分片后的数据帧气以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧。

 

(2) DIFS,即分布协调功能帧间间隔,它比SIFS的帧间间隔要长得多,长度为128 }s。在DCF方式中,DIFS用来发送数据帧和管理帧。 

1.3.1 物理层的载波监听

 要发送数据的站先检测信道。在802.11标准中,规定了在物理层的空中接口进行物理层的载波监听。通过收到的相对信号强度是否超过一定的门限数值,就可判断是否有其他的移动站在信道上发送数据。当源站发送它的第一个MAC帧时,若检测到信道空闲,则在等待一段时间DIFS后就可发送。    

 

为什么信道空闲还要再等待一段时间DIFS呢?就是考虑到可能有其他的站有一高优先级的帧要发送。如有,就要让高优先级帧先发送。    

 

现在假定没有高优先级帧要发送,因而源站发送了自己的数据帧。目的站若正确收到此帧,则经过时间间隔SIFS后,向源站发送确认帧ACK。若源站在规定时间内没有收到确认帧ACK(由重传计时器控制这段时间),就必须重传此帧,直到收到确认为止,或者经过若千次的重传失败后放弃发送。    

 

由此可见,802.11无线局域网采用的停止等待协议,是一种可靠传输协议。发送力一必须等待对力一的确认帧。但802.3有线局域网的传输是不可靠的,发送方把数据发送出去就不管了(当然若检测到碰撞是必须重传的),如果需要可靠传输则由高层负责。    

1.3.2 虚拟载波监听

802.11标准还采用了一种叫做虚拟载波监听(Virtual Carrier Sense)的机制,这就是让源站把它要占用信道的时间(包括目的站发回确认帧所需的时间)及时通知给所有其他站,以便使其他所有站在这一段时间都停止发送数据,这样就大大减少了碰撞的机会。“虚拟载波监听”是表示其他站并没有监听信道,而是由于其他站收到了“源站的通知”才不发送数据。这种效果好像是其他站都监听了信道。所谓“源站的通知”就是源站在其MAC帧首部中的第二个字段“持续时间”中,填入了在本帧结束后还将要占用信道多少时间(以微秒为单位),包括目的站发送确认帧所需的时间。  

1.3.3 网络分配向量NAV

 当一个站检测到正在信道中传送的MAC帧首部的“持续时间”字段时,就调整自己的网络分配向量NAV(Network Allocation Vector)。 NAV指出了必须经过多少时间才能完成数据帧的这次传输,才能使信道转入到空闲状态。因此,某个站认为信道处于忙态就有两种可能,一种可能是由于其物理层的载波监听检测到信道忙,另一种可能就是由于MAC层的虚拟载波监听机制指出了信道忙。

 

图9-6指出,当信道从忙态变为空闲时,任何一个站要发送数据帧时一,只要不是要发送的第一个帧,不仅都必须等待一个DIFS的间隔,而且还要进入争用窗口,并计算随机退避时间,以便再次重新试图接入到信道。请读者注意,在以太网的CSMA/CD协议中,要发送数据的站,在监听到信道变为空闲就立即发送数据,同时进行碰撞检测。如果发生了碰撞,就执行退避算法。但在802.11标准的CSMA/CA协议中,因为没有像以太网那样的碰撞检测机制,所以,在信道从忙态转为空闲时,各站就要执行退避算法。这样做就减少了发生碰撞的概率。802.11标准也是使用二进制指数退避算法,但具体做法稍有不同。这就是:第i次退避就在2^2+i个时隙中随机地选择一个。这就是说,第1次退避是在8个时隙(而不是2个)中随机选择一个,而第2次退避是在16个时隙(而不是4个)中随机选择一个。

插入概念:争用窗口

在有众多的终端节点都想发送数据并且信道空闲时:先经过一个DIFS的时长,然后,每一个节点都产生一个随机的争用窗口(计时器),进行倒计时,当先结束计时结束的节点进行数据的发送,其他节点冻结争用窗口,停止计时,并且记住剩余的时间,当该节点的数据发送完成,在经过一个DIFS的时间,其他节点的争用窗口重新启动并且开始计时,依次下去,直到所有的节点发送完毕。若节点在争用窗口计时结束后发送数据与其他节点发生冲突,则发生冲突的节点都随机产生一个争用窗口,继续进行倒计时。

插入概念:时隙(slot time)

时隙

是指一个时间片段,在CSMA/CA中,节点竞争接入信道之前需要经过相应的随机回退(backoff)过程,其中backoff过程就是由很多个时隙所组成的。

 

A Slot Time= a CCA Time(CCA时间)+a Rx/Tx turnaround Time(发送接收天线转换时间)+a Air Propagation Time(传播延迟)+a MAC Processing Delay(MAC层处理延迟)

 

SIFS(最短帧间间隔) Short Interframe Space

在802.11系列无线局域网中SIFS是固定值,SIFS是最小的帧间间隔,因此采用SIFS的节点具有访问无线链路的最高优先级。它等于节点从发送状态切换到接收状态并能正确解码所需要的时间,或者从接收状态转为发送状态所需要的时间,在SIFS过期后可能发送的数据包包括ACK、CTS帧,不同标准中规定的SIFS值不同。

 

A SIFS Time= a RXRF Delay(射频延迟)+a RXPLCP Delay(物理层头部接收延迟)+a MAC Processing Delay(MAC层处理延迟) + a RxTx Turnaround Time(发送接收天线转换时间)

 

DIFS, DCF Interframe Space(DIFS)

PCF方式下节点使用的帧间间隔。在DCF(分布协调功能)协议中,节点在开始发送数据之前需要监测信道是否空闲。如果信道已经空闲,则节点仍需等待DIFS段时间才开始发送数据;而如果在DIFS时间段内任一时刻信道被监测为忙,则节点不得不推迟它的数据发送。DIFS和SIFS间的计算关系如下:

 

PIFS ,PCF Interframe Space

 

DCF(点协调功能)方式下节点使用的帧间间隔,用于发送数据帧和管理帧。PCF使得AP等待PIFS而不是DIFS时间以访问信道,由于DIFS > PIFS > SIFS,因此AP总比普通节点具有更高的访问信道的优先级。

 

PIFS = SIFS + Slot time

 

1.3.4 退避算法

当某个要发送数据的站,使用退避算法选择了争用窗口中的某个时隙后,就根据该时隙的位置设置一个退避计时器(backoff timer)当退避计时器的时间减小到零时,就开始发送数据。也可能当退避计时器的时间还未减小到零时而信道又转变为忙态,这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过时间DIFS后,继续启动退避计时器(从剩下的时间开始)。这种规定有利于继续启动退避计时器的站更早地接入到信道中。    

 

为了更好地了解802. 11的退避机制,下面用个例子来说明(图9-7 ) 。

 

图9-7表示当A正在发送数据时,B, C和D都有数据要发送(用向上的箭头表示)。由于这三个站都检测到信道忙,因此都要执行退避算法,各自随机退避一段时间再发送数据。802. I 1标准规定,退避时间必须是整数倍的时隙时间。    

 

前面己经讲过,第i次退避是在时隙{0, 1, ..., 2 ^2+i}中随机地选择一个。这样做是为了使不同站点选择相同退避时间的概率减少。因此,第1次退避(i=1)要推迟发送的时间是在时隙{0, 1,…,7}中(共8个时隙)随机选择一个,而第2次退避是在时隙{0, 1,…,15}中(共16个时隙)随机选择一个。当时隙编号达到255时(这对应于第6次退避)就不再增加了。这决定退避时间的变量,称为退避变量。    

 

退避时间选定后,就相当于设置了一个退避计时器(backoff timer)。站点每经历一个时隙的时间就检测一次信道。这可能发生两种情况:若检测到信道空闲,退避计时一器就继续倒计时;若检测到信道忙,就冻结退避计时器的剩余时间,重新等待信道变为空闲并再经过时间DIFS后,从剩余时间开始继续倒计时。如果退避计时器的时间减小到零时,就开始发送整个数据帧。  

 

 从图9-7可以看出,C的退避计时器最先减到零,于是C立即把整个数据帧发送出去。请注意,A发送完数据后信道就变为空闲。C的退避计时器一直在倒计时。当C在发送数据的过程中,B和D检测到信道忙,就冻结各自的退避计时器的数值,重新期待信道变为空闲。正在这时E也想发送数据。由于E检测到信道忙,因此E就执行退避算法和设置退避计时器。    

 

当C发送完数据并经过了时间DIFS后,B和D的退避计时器又从各自的剩余时间开始倒计时。现在争用信道的除B和D外,还有Eo D的退避计时器最先减到零,于是D得到了发送权。在D发送数据时,B和E都冻结其退避计时器。

 

 以后E的退避计时器比B先减少到零。当E发送数据时,B再次冻结其退避计时器。等到E发送完数据并经过时间DIFS后,B的退避计时器才继续工作,一直到把最后剩余的时间用完,然后就发送数据。

 

冻结退避计时器剩余时间的做法是为了使协议对所有站点更加公平。    

1.4 CSMA/CA算法总结

根据以上讨论的情况,可把CSMA/CA算法归纳如下:    

 

(1)若站点最初有数据要发送(而不是发送不成功再进行重传),且检测到信道空闲,在等待时间DIFS后,就发送整个数据帧。    

 

(2)否则,站点执行CSMA/CA协议的退避算法。一旦检测到信道忙,就冻结退避计时器。只要信道空闲,退避计时器就进行倒计时。    

 

(3)当退避计时器时间减少到零时(这时信道只可能是空闲的),站点就发送整个的帧并等待确认。  

 

 (4)发送站若收到确认,就知道已发送的帧被目的站正确收到了。这时如果要发送第二帧,就要从上面的步骤(2)开始,执行CSMA/CA协议的退避算法,随机选定一段退避时间。    

 

若源站在规定时间内没有收到确认帧ACK(由重传计时器控制这段时间),就必须重传此帧(再次使用CSMA/CA协议争用接入信道),直到收到确认为止,或者经过若干次的重传失败后放弃发送。    

 

应当指出,当一个站要发送数据帧时,仅在下面的情况下才不使用退避算法:

检测到信道是空闲的,并且这个数据帧是它想发送的第一个数据帧。  

 

 除此以外的所有情况,都必须使用退避算法。具体来说,以下几种情况都必须使用退避算法:

(1)在发送第一个帧之前检测到信道处于忙态。   

 

(2)每一次的重传。   

 

(3)每一次的成功发送后再要发送下一帧。

 

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CSMA/CD和CSMA/CA都是用于网络中的访问控制协议,它们的主要区别在于: 1. CSMA/CD是一种基于冲突检测的协议,它在发送数据前会先检测信道上是否有其他节点正在发送数据,如果有冲突就会停止发送并等待一段时间后再重新发送。而CSMA/CA是一种基于冲突避免的协议,它在发送数据前会先发送一个RTS(请求发送)信号,等待接收方回复CTS(清除发送)信号后再发送数据,从而避免了冲突的发生。 2. CSMA/CD适用于有线网络,如以太网,因为有线网络的信道是共享的,节点之间可以直接检测到冲突。而CSMA/CA适用于无线网络,因为无线信道是广播的,节点之间无法直接检测到冲突,需要通过发送和接收信号来避免冲突的发生。 3. CSMA/CD的效率较低,因为它需要等待一段时间后才能重新发送数据,而且在高负载情况下容易出现冲突,导致网络性能下降。而CSMA/CA的效率较高,因为它通过冲突避免的方式来减少冲突的发生,从而提高了网络的性能。 总之,CSMA/CD和CSMA/CA都是用于网络中的访问控制协议,它们的主要区别在于基于冲突检测和基于冲突避免的方式,适用于有线网络无线网络,以及效率的高低。 ### 回答2: CSMA/CD和CSMA/CA是两种网络协议。CSMA/CD是一个传输和期待碰撞检测的协议,优先考虑先输送数据,如果偶然的冲突发生,察觉之后停止传输,经过一个传输延时后重新发送。CSMA/CA也是一个传输和期待协作冲突避免的协议,但是它通过在传输之前,等待网络空闲来减少冲突的机会。 在相似之处方面,两个协议都是通过监听媒介来避免冲突的。在传输之前,设备需要侦听媒介上是否已存在正在传输的数据。如果是这样的话,设备就需要延迟发送它的数据,或者停止发送数据并等待网络空闲。 然而,在实现中,这两种协议有一些重要的差别。首先,CSMA/CD协议期望设备能够检测到冲突并停止传输数据,而CSMA/CA协议依赖于协作机制来避免冲突。其次,CSMA/CD协议将传输延迟作为衡量网站性能的指标,因为当设备检测到冲突时,传输将中断并需要等待重新发送;而CSMA/CA协议更注重网络吞吐量,并通过等待网络空闲来减少冲突的机会。 在实际应用中,选择哪种协议取决于性能和安全需求。CSMA/CD适合对时延敏感的应用场景,例如VoIP,因为它将最小化传输延迟视为优先事项。CSMA/CA协议适用于无线网络,因为它可以更好地减少因无线信道中掉包导致的冲突,并保证更大的网络吞吐量,因此更适合数据流量较大的网络应用。 ### 回答3: CSMA/CD和CSMA/CA是两种常见的以太网协议。它们都采用了CSMACarrier Sense Multiple Access)协议,但是它们在冲突检测和处理方面有所不同。 首先,CSMA/CD(Carrier Sense Multiple Access with Collision Detection)使用冲突检测技术,即在发送数据之前,先监听信道,如果没有发现信号,就发送数据。如果在发送数据的同时,检测到其他设备也在发送数据,就说明发生了冲突,设备会停止发送数据,并且随机等待一段时间后重新开始发送。CSMA/CD适用于半双工通信方式,可以快速检测和处理冲突,适用于高速数据传输。 其次,CSMA/CACarrier Sense Multiple Access with Collision Avoidance)采用了冲突避免技术。在发送数据之前,先监听信道,如果没有发现信号,就发送数据。但是在发送数据之前,还需要等待一段时间,称为DIFS(Distributed Inter-frame Space),以确保其他设备不会在这段时间内发送数据。如果其他设备在DIFS后又开始发送数据,设备会认为信道已经被占用,并且等待下一轮发送。如果没有检测到其他设备在DIFS后发送数据,设备会发送数据。但是在发送数据的过程中,如果检测到信道有其他设备发送数据,设备会停止发送数据,并且等待一段时间后重新开始发送。CSMA/CA适用于无线局域网等带宽较低的场景。 综上所述,CSMA/CD和CSMA/CA都使用了CSMA协议,但是在冲突检测和处理方式上有所不同。CSMA/CD采用了冲突检测技术,适用于半双工通信方式,可以快速检测和处理冲突;而CSMA/CA采用了冲突避免技术,适用于无线局域网等带宽较低的场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值