在最后有总结,中间对CSMA/CD和CSMA/CA的描述也很详尽
目录
一.CSMA/CD(载波监听多点接入/碰撞检测)
为什么要使用CSMA/CD:
因为总线上只要有数据,传输资源时就会被占用,又因为传统总线型以太网采用半双工的通讯方式和最简单的随机接入,所以当计算机以多点接入的方式连接到一根总线上时,会发生冲突碰撞。
在CSMA中,由于信道传播时延的存在,即使总线上两个站点没有监听到载波信号而发送帧时,仍可能会发生冲突。由于CSMA算法没有冲突检测功能,即使冲突已发生,仍然将已破坏的帧发送完,使数据的有效传输率降低。
一种CSMA的改进方案是使发送站点传输过程中仍继续监听媒体,以检测是否存在冲突。如果发生冲突,信道上可以检测到超过发送站点本身发送的载波信号的幅度,由此判断出冲突的存在。一旦检测到冲突,就立即停止发送,并向总线上发一串阻塞信号,用以通知总线上其他各有关站点。这样,通道容量就不致因白白传送已受损的帧而浪费,可以提高总线的利用率。这种方案称为“载波监听多路访问/冲突检测协议”(CarrierSenseMultipleAccess with Collision Detection,CSMA/CD),这种协议已广泛应用于局域网中。
适用场景:
CSMA/CD有线连接的局域网,CSMA/CD 是一种分解访问冲突的协议,应用在竞争发送的网络环境中,适合于传送非实时数据。在网络负载较小时,发送的速度很快,通信效率很高。在网络负载很大时,由于经常出现访问冲突,通信的效率很快就下降了。
注:所以CSMA/CD不适合突发性业务,但帧中继适合突发性业务
不适用于:
在千兆以太网中,当采用半双工传输方式时。要使用 CSMA/CD 协议来解决信道的争用问题。千兆以太网的全双工方式适用于交换机到交换机,或者交换机到工作站之间的点对点连接,两点间可同时进行发送与接收,不存在共享信道的争用问题,所以不需要采用 CSMA/CD 协议。2002 年 6 月发布的万兆以太网 802.3ae 10GE 标准只支持全双工方式,不支持单工和半双工,也不采用 CSMA/CD 协议。
1.多点接入:作用在总线型网络,许多计算机以多点接入的方式连接在一根总线上
2.载波监听:检测总线上有没有其他计算机在传输数据,发送前后每个主机都必须不停地检测信道
3.碰撞检测:边发送边监听,适配器边发送数据边检测信道上的信号电压变化情况,以此判断是否有别人在发送数据。若没有检测到电压,即信道为“空闲”状态,可以发送数据。若检测到极大或极小的电压,就说明有两个及以上主机的信号发生了碰撞(电磁波相遇),此时适配器就会立即停止发送。
如图所示的例子可以说明这种情况。设图中的局域网两端的站A和B相距1km用同轴电缆相连。电磁波在1km 电缆的传播时延约为5s。因此A向B发出的数据,在约5 s 后才能传送到B。换言之,B若在A发送的数据到达B之前发送自己的帧(因为这时 B的载波监听检测不到A所发送的信息),则必然要在某个时间和A发送的帧发生碰撞。碰撞的结果是两个帧都变得无用。在局域网的分析中,常把总线上的单程端到端传播时延记为t。发送数据的站希望尽早知道是否发生了碰撞。那么,A 发送数据后,最迟要经过多长时间才能知道自己发送的数据和其他站发送的数据有没有发生碰撞?从图中不难看出,这个时间最多是两倍的总线端到端的传播时延(2t),或总线的端到端往返传播时延。由于局域网上任意两个站之间的传播时延有长有短,因此局域网必须按最坏情况设计,即取总线两端的两个站之间的传播时延(这两个站之间的距离最大)为端到端传播时延。
注:在使用 CSMA/CD 协议时,一个站不可能同时进行发送和接收(但必须边发送边监听信道)。因此使用 CSMA/CD 协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)。
对应上图的特殊时刻:
这里的2t称为争用期(contention period),它是一个很重要的参数。争用期又称为碰撞窗口(collision window)。这是因为一个站在发送完数据后,只有通过争用期的“考验”,即经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。这时,就可以放心把这一顿数据顺利发送完毕。
4.传播时延是指数据包从发送方到接收方所需的时间,而传输时延是指数据包在发送过程中所花费的时间。为了避免碰撞,我们需要确保在传输时延内能够及时检测到可能的冲突。如果传输时延太短,就可能无法及时检测到碰撞,导致数据丢失。为了确保在传输时延内能够及时检测到潜在的冲突,我们需要设置足够的传输时延,通常是传播时延的两倍。
由此引出了CSMA/CD总线网络中最短帧长的计算关系式:
不知道传输时延和传播时延的区别可以看:
计算机网络中的传输延时与传播延时的区别? - 知乎 (zhihu.com)
例题:
在以太网中出于对(64)的考虑,需设置数据帧的最小帧。
(64)A.重传策略 B.故障检测 C.冲突检测 D.提高速率
【答案】C
【解析】
为了确保发送数据站点在传输时能检测到可能存在的冲突,数据帧的传输时延要不小于两倍的传播时延。
CSMA/CD中避免冲突碰撞的两种方式:1.截断二进制指数退避算法 2.监听算法
1.截断二进制指数退避算法
以太网使用截断二进制指数退避(truncated binary exponential backoff)算法来确定碰撞后重传的时机。截断二进制指数退避算法并不复杂。这种算法让发生碰撞的站在停止发送数据后,不是等待信道变为空闲后就立即再发送数据,而是退避一个随机的时间。这点很容易理解,因为几个发生碰撞的站将会同时检测到信道变成了空闲。如果大家都同时重传,必然接连发生碰撞。如果采用退避算法,生成了最小退避时间的站将最先获发送权。以后其余的站的退避时间到了,但发送数据之前监听到信道忙,就不会马上发送数据了。
为了尽可能减小重传时再次发生冲突的概率,退避算法有如下具体的规定:
(1) 基本退避时间为争用期2t,具体的争用期时间是51.2us。对于10Mbit/s以太网在争用期内可发送512比特,即64字节。也可以说争用期是512比特时间。1比特时间就是发送1比特所需的时间。所以这种时间单位与数据率密切相关。为了方便,也可以直接使用比特作为争用期的单位。争用期是512比特,即争用期是发送512比特所需的时间。
(2)从离散的整数集合[0,1,...(-1)]中随机取出一个数,记为r。重传应推后的时间就是r倍的争用期。上面的参数k按下面的公式计算:
k=Min[重传次数,10]
可见当重传次数不超过10时,参数等于重传次数;但当重传次数超过10时,k就不再增大而一直等于10。
(3)当重传达16次仍不能成功时(这表明同时打算发送数据的站太多,以致连续发生冲突),则丢弃该帧,并向高层报告。
例如,在第1次重传时,k=1,随机数r从整数{0,1}中选一个数。因此重传的站可选择的重传推迟时间是0或2t,在这两个时间中随机选择一个。
若再发生碰撞,则在第2次重传时,k=2,随机数r就从整数{0,1,2,3}中选一个数。因此重传推迟的时间是在0,2t,4t和6t这4个时间中随机地选取一个。
同样,若再发生碰撞,则重传时k=3,随机数r就从整数{0,1,2,3,4,5,6,7}中选一个数。依此类推。
通过观察可以发现,选中其中一个数的概率为1/
若连续多次发生冲突,就表明可能有较多的站参与争用信道。但使用上述退避算法可使重传需要推迟的平均时间随重传次数而增大(这也称为动态退避),因而减小发生碰撞的概率。
现在考虑一种情况。某个站发送了一个很短的帧,但在发送完毕之前并没有检测出碰撞。假定这个帧在继续向前传播到达目的站之前和别的站发送的帧发生了碰撞,因而目的站将收到有差错的帧(当然会把它丢弃)。但是发送站却不知道这个帧发生了碰撞,因而不会重传这个帧。这种情况显然是我们所不希望的。为了避免发生这种情况,以太网规定了一个最短帧长64字节,即512 比特。如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不小于64字节。对于10Mbit/s 以太网,发送512比特的时间需要 51.2us,也就是上面提到的争用期。
由此可见,以太网在发送数据时,如果在争用期(共发送了64 字节)没有发生碰撞,那么后续发送的数据就一定不会发生冲突。换句话说,如果发生碰撞,就一定是在发送的前64字节之内。由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于64字节,因此凡长度小于64字节的都是由于冲突而异常中止的无效帧。只要收到了这种无效帧,就应当立即将其丢弃。
前面已经讲过,信号在以太网上传播1km大约需要5us。以太网上最大的端到端时延必须小于争用期的一半(即25.6us),这相当于以太网的最大端到端长度约为5km。实际上的以太网覆盖范围远远没有这样大。因此,实用的以太网都能在争用期51.2us内检测到可能发生的碰撞。以太网的争用期确定为 51.2us,不仅考虑到以太网的端到端时延,而且还包括其他的许多因素,如存在的转发器所增加的时延,以及下面要讲到的强化碰撞的干扰信号的持续时间等。
下面介绍强化碰撞的概念。这就是当发送数据的站一旦发现发生了碰撞时,除立即停止发送数据外,还要再继续发送32比特或48比特的人为干扰信号(jamming signal),以便让所有用户都知道现在已经发生了碰撞(如图所示)。对于10Mbit/s以太网,发送32(或48)比特只需要3.2(或4.8)us。
从图中可以看出,A 站从发送数据开始到发现碰撞并停止发送的时间间隔是 TB。A站得知碰撞已经发生时所发送的强化碰撞的干扰信号的持续时间是Tj。图中的 B 站在得知发生碰撞后,也要发送人为干扰信号,但为简单起见,没有画出B 站所发送的人为干扰信号。发生碰撞使A 浪费时间:TB+Tj。可是整个信道被占用的时间还要增加一个单程端到端的传播时延。因此总线被占用的时间是TB+Tj+t。
以太网还规定了帧间最小间隔为 9.6 s,相当于 96 比特时间。这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。
2.CSMA/CD协议定义的监听算法有以下三种:
(1)非坚持型监听算法。当一个站准备好帧,发送之前先监听信道:
①若信道空闲,立即发送,否则转②。
②若信道忙,则后退一个随机时间,重复①。
由于随机时延后退,从而减少了冲突的概率。然而,可能出现的问题是因为后退而使信道闲置一段时间,这使信道的利用率降低,而且增加了发送时延。
(2)1-坚持型监听算法。当一个站准备好帧,发送之前先监听信道:
①若信道空闲,立即发送,否则转②。
②若信道忙,继续监听,直到信道空闲后立即发送。
这种算法的优缺点与前一种正好相反:有利于抢占信道,减少信道空闲时间;但是多个站同时都在监听信道时必然发生冲突。.
(3)P-坚持型监听算法。这种算法汲取了以上两种算法的优点,但较为复杂。
①若信道空闲,以概率P发送,以概率(1 -P)延迟一个时间单位。一个时间单位等于网络传输时延。
②若信道忙,继续监听直到信道空闲,转①。
③如果发送延迟一个时间单位,则重复①。
载波监听只能减小冲突的概率,不能完全避免冲突。当两个帧发生冲突后,若继续发送,将会浪费网络带宽。为了进一步改进带宽的利用率,发送站应采取边发边听的冲突检测方法,即:
①发送期间同时接收,并把接收的数据与站中存储的数据进行比较。(或用其他办法检测冲突)
②若比较结果一致,说明没有冲突,重复①。
③若比较结果不一致,说明发生了冲突,立即停止发送,并发送一个简短的阻塞信号(Jamming),使所有站都停止发送。
④发送Jamming信号后,等待一段随机长的时间,重新监听,再试图发送。
困难的问题是决定概率P的值,P的取值应在重负载下能使网络有效地工作。为了说明P的取值对网络性能的影响,假定n个发送站等待发送,此时发现网络中有数据传送,当数据传输结束时,则有可能出现 nxP个站发送数据。如果nxP>1,则必然出现多个站点发送数据,这也必然导致冲突。有的站传输数据完毕后,产生新帧与等待发送的数据帧竞争,很可能加剧冲突。如果P太小,例如P=0.01,则表示一个站点 100个时间单位才会发送一次数据,这样99个时间单位就空闲了,造成浪费。
图表总结如下
与CSMA/CD相关知识点补充
10BASE-T与100BASE-T
10BASE-T 与 100BASE-T 采用双绞线进行进行传输,适合短距离传输(100m),它们采用相同的 IEEE802.3 逻辑链路控制协议LLC,介质访问控制层MAC采用相同的访问与碰撞检测机制CSMA/CD,帧结构相同,最小帧长64个字节, 最大帧长 1518 个字节,帧间最小间距 12 字节的长度要求。两者除了传输速率不同外,最主要的区别是网络直径不 同。100BASE-T 最大网络直径为 205m.大约相当于 10Mbps 以太网的 1/10.这是因为网络介质本身的传播速率不变和 碰撞检测机制相同的情况下,为了保证仍然能够检测到与位于网络最远距离处的其他工作站之间可能发生的信号碰撞,当一台工作站的传送速率加快 10 倍的时候,必须要求网络的最在距离缩小 10 倍。
在 10Base5 的全配置的情况下是可以允许通过 4 个中继器,那么冲突的时间槽就相当于一个数据包在网络中来回传播一次的时间加上各种延时。由于电波在铜缆中的传播速度是光波在真空速度的 0.7 倍左右,所以计算如下:
例题1:
以太网中出现冲突后,发送方什么时候可以再次尝试发送?(62)。
(62)A.再次收到目标站的发送请求后
B.在JAM信号停止并等待一段固定时间后
C.在JAM信号停止并等待一段随机时间后
D.当JAM信号指示冲突已经被清除后
【答案】C
【解析】
如果在发送数据的过程中检测出冲突,为了解决信道争用冲突,发送节点要进入停止发送数据、随机延迟后重发的流程。
例题2:
在以太网中发生冲突时采用退避机制,(34)优先传输数据。
(34)A.冲突次数最少的设备 B.冲突中IP地址最小的设备
C.冲突域中重传计时器首先过期的设备 D.同时开始传输的设备
【答案】C
【解析】
以太网采用截断二进制指数退避算法来解决碰撞问题。截断二进制算法并不复杂,这种算法让发生碰撞的站在停止发送数据后,不是等待信道变为空闲后就立即再发送数据,而是推迟一个随机的时间。这样做是为了使的重传时再次发生冲突的概念减少。
二.CSMA/CA
为什么要使用CSMA/CA
IEEE802.11采用类似于802.3CSMA/CD协议的载波侦听多路访问/冲突避免协议之所以不采用CSMA/CD协议的原因有两点:
(1)无线网络中,接收信号的强度往往小于发送信号的强度,因此要实现碰撞的花费过大
(2)隐蔽站(隐蔽终端问题),并非所有站都能听到对方,如图(a)所示,而暴露站的问题是检测信道忙碌但未必影响数据发送,如图(b)所示。也就是说自己的信号会把其他信号给覆盖掉,简单来说
在无线网中进行冲突检测有时是困难的,例如两个站由于距离过大或者中间障碍物的分隔从而检测不到冲突,但是位于它们之间的第三个站可能会检测到冲突,这就是所谓隐蔽终端问题。采用冲突避免的办法可以解决隐蔽终端的问题。
1.IEEE 802.11MAC子层定义的竞争性访问控制协议是CSMA/CA。
2.802.11定义了一个帧间隔(Inter Frame Spacing, IFS)时间
另外还有一个后退计数器,它的初始值是随机设置的,递减计数直到0。基本的操作过程是:
①如果一个站有数据要发送并且监听到信道忙,则产生一个随机数设置自己的后退计数器并坚持监听。
②听到信道空闲后等待IFS时间,然后开始计数。最先计数完的站可以开始发送。
③其他站在听到有新的站开始发送后暂停计数,在新的站发送完成后再等待一个IFS时间继续计数,直到计数完成开始发送。
分析这个算法发现,两次IFS之间的间隔是各个站竞争发送的时间。这个算法对参与竞争的站是公平的,基本上挺按先来先服务的顺序获得发送的机会。
3.802.11推荐使用3种帧间隔(IFS),以便提供基于优先级的访问控制。
DIFS(分布式协调IFS):最长的IFS,优先级最低,用于异步帧竞争访问的时延。(CSMA/CA使用)
PIFS(点协调IFS):中等长度的IFS,优先级居中,在PCF操作中使用。
SIFS(短IFS):最短的IFS,优先级最高,用于需要立即响应的操作。
其中DIFS用在CSMA/CA协议中,只要MAC层有数据要发送,就监听信道是否空闲。如果信道空闲,等待DIFS时段后开始发送;如果信道忙,就继续监听,直到可以发送为止。
4.IEEE 802.11 定义了带有应答 (ACK)的CSMA/CA
AP 收到一个数据后等待 SIFS 再发送一个应答ACK。由于 SIFS 比DIFS 小得多,所以其他终端在 AP 的应答传送完成后才能开始新的竞争过程。
5.RTS/CTS机制
SIFS也用在RTS/CTS机制中。源终端先发送一个“请求发送”RTS,其中包含源地址、目标地址和准备发送的数据帧的长度。目标终端收到 RTS 后等待一个 SIFS时间,然后发送“允许发送” CTS。源终端收到 CTS 后再等待 SIFS 时间,就可以发送数据帧了。目标终端收到数据帧后也等待 SIFS,发回应答。其他终端发现 RTS/CTS 后就设置个网络分配矢量(Network Allocation Vector,NAV) 信号,该信号的存在说明信道忙,所有终端不得争用信道。
例:
无线局域网中采用不同帧间间隔划定优先级,通过冲突避免机制来实现介质访问控制。其中RTS/CTS帧()。
A.帧间间隔最短,具有较高优先级
B.帧间间隔最短,具有较低优先级
C.帧间间隔最长,具有较高优先级
D.帧间间隔最长,具有较低优先级
答案:A
DIFS:分布式协调IPS:最长的IFS,优先级最低,用于异步帧竞争访问的时延。
PIFS:点协调IFS,中等长度的IFS,优先级居中,在PCF操作中使用。
SIFS:短IFS,最短的IFS,优先级最高,用于需要立即响应的操作。
其中SIFS也用在RTS/CTS机制中。
6.点协商功能
在CSMA/CA的基础上定义了点协调功能(Point Coordination Function,PCF),如图所示。PCF 是在DCF之上实现的一个可选功能。所谓点协调就是由AP 集中轮询所有终端,为其提供无竞争的服务,这种机制适用于时间敏感的操作。在轮询过程中使用 PIFS 作为间隔时间。由于 PIFS 比DIFS 小,所以点协调能够优先CSMA/CA 获得信道,并把所有的异步帧推后传送。
在极端情况下,点协调功能可以用连续轮询的方式排除所有的异步帧。为了防止这种情况的发生,802.11 又定义了一个称为超级帧的时间间隔。在此时段的开始部分,由点协调功能向所有配置成轮询的终端发出轮询。随后在超级帧余下的时间允许异步帧竞争信道。
DCF 是数据传输的基本方式,作用于信道竞争期。PCF 工作于非竞争期。两者总是交替出现,先由 DCF 竞争介质使用权,然后进入非竞争期,由 PCF 控制数据传输。
这里总结一下802.11标准为MAC子层定义的3种访问控制机制:
•CSMA/CA分布式协调功能:大家争用访问
•RST/CTS信道预约:要发生先打报告,其他终端记录信道占用时间
•PCF点协调功能:由AP集中轮询•所以终端,将发送权限轮流交给各个终端,类似令牌
三.两者异同
相同点:
●都是用于以太网网络中的协议,都用来解决多终端同时发送数据可能产生的冲突问题
●都是先监听,空闲则发送,不空闲再进行对应操作
不同点:
●
IEEE802.3介质访问控制层MAC采用访问与碰撞检测机制CSMA/CD
IEEE 802.11MAC子层定义的竞争性访问控制协议是CSMA/CA
●传输介质不同
CSMA/CD用于总线式以太网(有线),CSMA/CA用于无线局域网(无线)
●载波监听方式不同
CSMA/CD有三类监听算法,(非坚持型,1-坚持型,p-坚持型)
CSMA/CA采用DIFS(只要MAC层有数据要发送,就监听信道是否空闲。如果信道空闲,等待DIFS时段后开始发送;如果信道忙,就继续监听,直到可以发送为止。)
●CSAM/CD带有冲突检测的载波监听多路访问,只能检测冲突但无法避免,CSMA/CA带有冲突避免的载波监听多路访问,发送包的同时不能检测到信道上有无冲突,只能尽量避免。
●CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式
例题1:
无线局域网中AP的轮询会锁定异步帧,在IEEE802.11网络中定义了()机制来解决这一问题。
A.RTS/CTS机制
B.二进制指数退避
C.超级帧
D.无争用服务
答案:D
解析:
通信协议中的RTS/CTS协议:即请求发送/允许发送协议,相当于一种握手协议,主要用来解决"隐藏终端"问题。
为了有效地解决无线信道传输中的碰撞问题,IEEE802.11协议引入了两种媒体访问控制方法:分布式协调功能DCF与点协调功能PCF,这两种方法都属于MAC层的虚载波检测机制。在802.11的MAC层中分为了两个字层:PCF和DCF
DCF子层在每一个结点使用CSMA机制的分布式接入算法,让各个站通过争用信道来获取发送权。PCF子层使用集中控制的接入算法将发送数据权轮流交给各个站从而避免了碰撞的产生。PCF是可选项。对于时间敏感的业务,如分组语音,就应使用提供无争用服务的点协调功能PCF,可以锁定异步通信量。
EEE802.11协议允许PCF与DCF共存于一个无线局域网中,而实现这种共存的具体方法是引入《超级帧》(SuperFrame)的概念。超级帧只是一个逻辑上的概念,而并非实际存在的一种帧格式。或者更确切地说是庆为它在时间上表现为非严格周期性地以类似帧的形式出现,代表了一段时间内媒体上的业务量。在超级帧中包含两部分:无竞争时期(ContentionFreePeriod,简称为CEP)和竞争时期(ContentionPeriod,简称为CP)。在CFP期间,由PCF控制对媒体的访问,而在CP期间,由DCF来控制。CFP与CP的交替出现,使得PCF与DCF轮流行使对无线媒体的访问控制权,从而实现PCF与DCF在一个基本服务组BSS内的共存。
例题2:
以太网协议中使用了二进制指数后退算法,其冲突后最大的尝试次数为()次。
A.8
B.10
C.16
D.20
答案:C
以太网采用截断二进制指数退避算法来解决碰撞问题。截断二进制算法并不复杂,这种算法让发生碰撞的站在停止发送数据后,不是等待信道变为空闲后就立即再发送数据,而是推迟一个随机的时间。这样做是为了使的重传时再次发生冲突的概率减少。当重传次数达16次仍不能成功时,则表明同时打算发送数据的站太多,以至连续发生冲突,则丢弃该帧,并向高层报告。