学
网络的人,恐怕都得知道在总线网络中必须要用到CSMA/CD来传输
数据。
CSMA/CD——带冲突检测的载波侦听多路访问机制,用来决定某一时刻介质访问权限问题,原理如下:所有站点共享一条传输线路(总线),每个站点在传输
数据之前都要侦听线路上是否空闲。如果空闲,则立刻发送数据;若不空闲,则等待一定时间之后再传,其间,仍旧监视线路空闲状况。如果在传输的时候和其他站
点产生了冲突,则使用退避算法后退一个随机时间,再重传数据。共享方式的以太网就是利用此机制进行数据传输的。
在很多的网络
技术原理书籍上仅仅就是这些内容,再多一点就不过多举几个例子而已。那么我这里也举例说明一下,会更加明白一些的。
如上图所示,就是一个典型的总线型网络拓扑,现在我们看这样一个过程:
站点A准备给站点B传输数据,
应用CSMA/CD
机制,在传输之前站点A不断侦听线路上是否空闲,当线路上空闲之时,A给B发出frame,在此同时,其他站点也在不断侦听线路空闲状态,恰好此时站点B
也认为线路正好空闲,于是B向C发出frame。frame B和frame
C在线路上不期而遇,产生了冲突,冲突给A和B分别一个提示,提示线路上有冲突,这个时候,A和B都会采取一个强化碰撞的措施,向线路发送干扰信号,这个
信号会让所有的站点都接收到,认为线路上产生了碰撞。紧接着,A与B都使用退避算法,延迟一个随机时间接着重传数据,也就是说,双方获得重传的机会是平等
的,没有规定水先谁后,但是具体到先后则是有这个退避算法决定的,那么退避算法到底是怎么进行的呢?为什么不是有的人所认为的先冲突先发送的机制而是平等
的机制呢?下面我就给大家讲讲这个退避算法的原理。
早期以太网使用的退避算法称为二进制指数类型退避算法,具体进行如下:
1)确定基本退避时间(基数),一般定为2τ,也就是一个争用期时间(争用期在后面给出定义),对于以太网就是51.2μs。
2)定义一个参数K,为重传次数,K=min[重传次数,10],可见K≤10。
3)从离散型整数集合[0,1,2,……,(2^k-1)]中,随机取出一个数记做R。
(
备注:2^k是2的k次方幂,这里上标表示不出来,敬请原谅)
那么重传所需要的退避时间为R倍的基本退避时间:即:T=R×2τ。
4)同时,重传也不是无休止的进行,当重传16次不成功,就丢弃该帧,传输失败,报告给高层协议。
如:第一次重传K=1,R=0,1;T=0,2t。T在二者中随机选择。
那么第二次重传呢?K=2,R=0,1,2,3;T=0,2t,4t,6t。
如此可见,重传数次越多,则退避的时间就越长,称为动态退避。
说到这里大家应该所有明白了吧,还有什么问题可以接着跟贴提出!
附录:什么是争用期?
在总线传输线路上,单程端到端的传输时延记做t。一个站点在发出数据到接收到线路冲突的时间小于等于2倍t,也就是时延为2t,这个时间被称为争用期。(contention period)
原文:http://bbs.chinaunix.net/thread-1171146-1-1.html
-----------------------------------------------------------------------------------------
什么是载波侦听多路访问/冲突避免(CSMA/CA)协议
发展背景(出因):
在总线和环形拓扑中,网络上的设备必须共享传输线路,为解决同一时间几个设备同时争用传输介质,需要有某种访问控制方式,以便协调各设备访问介质的顺序,在设备之间交换数据。
在总线系统中,每个站都能独立地决定帧的发送,若两个或多个站同时发送,就产生冲突,同时发送的所有帧都会出错。因此一个用户发送信息成功与否在很
大程度上取决于总线是否空闲的算法以及两个不同节点同时发送的分组发生冲突时所使用和中断传输的方法,总线争用技术分为载波监听多路访问(CSMA)和具
有冲突检测的载波监听多路访问(CSMA/CD)这两大类。载波监听多路访问(CSMA)的技术,也叫做先听后说(LBT),希望传输的站首先对信道进行
监听以确定是否有别的站在传输。如果信道空闲,该站可以传输,否则,该站将避让一段时间后再尝试。需要有一种退避算法来决定退让时间。常用的有三种算法。
1、非坚持CSMA;2、1-坚持CSMA;3、P-坚持CSMA。
通信中对介质的访问可以是随机的,即各工作站可以在任何时刻、任意地访问介质;也可以是受控的,即各工作站可以用一定的算法调整各站访问介质的顺序和时间。在随机访问方式中,常用的争用总线技术为CSMA/CD.
这种控制方式对任何工作站都没有预约发送时间,工作站的发送是随机的,必须在网络上争用传输介质,故称之为争用技术。若同一时刻有多个工作站向传输
线路发送信息,则这些信息会在传输线上互相混淆而遭破坏,称为“冲突”。为尽量避免由于竟争引起的冲突,每个工作站在发送信息之前,都要监听传输线上是否
有信息在发送,这就是“载波监听”。
CSMA是从一种叫ALOHA的控制协议演变而来的,之所以要采用这种控制协议,是因为当许多用户共享一个容量为C
b/s的信道时,如果两个或更多的用户同时都在共享信道上发送信息,这样就会产生冲突。习惯上把这种冲突叫做碰撞。碰撞的产生会导致冲突的用户发送都告失
败。如图所示:
由图可知,一个帧若要发送成功,必须在发送时刻之前和之后各有一段时间T0内没有其他帧的发送,否则就必然产生冲突而导致失败。这样,一个帧发送成功的条件就是该帧与该帧前后的两个帧到达的时间间隔大于T0.
基本定义或原理:
载波监听多路访问/冲突检测(CSMA/CD):在CSMA中,由于通道的传播延迟,当两个站点监听到总线上没有存在信号而发送帧时,仍会发生冲突。由于CSMA算法没有冲突检测功能,即使冲突己发生,仍然要将已破坏的帧发送完,使总线的利用率降低。
一种CSMA的改进方案是使站点在传输时间继续监听媒体,一旦检测到冲突,就立即停止发送,并向总线上发一串短的阻塞报文(Jam),通知总线上各
站冲突己发生,这样通道容量不致因白白传送己受损的帧而浪费,可以提高总线的利用率,这就称作载波监听多路访问/冲突检测协议,简写为CSMA/CD,这
种协议己广泛应用于以太网和IEEE802.3标准中。
此时,浪费掉的带宽就减少为用检测冲突所花费的时间。那么,怎么来估算所需的冲突检测时间呢?对于基带总线而言,此时用于检测一个冲突的时间等于任
意两个站之间最大的传播延迟的两倍,所以对于基带CSMA/CD,要求分组长度应该至少两倍于传播延迟,否则在检测出冲突之前传输已经完成,但实际上分组
被冲突所破坏。
应用:CSMA/CD是用争用的方法来决定对介质的访问权。而这种争用协议一般用于总线网。载波监听多路访问(CSMA) 发展情况及存在问题:
CSMA/CD总线网络中的一个关键技术问题是冲突控制或冲突分解问题,即由于发送冲突而遭碰撞的报文要经过一段随机延时后重发,典型的冲突控制算
法,亦即后退算法有以下五种:二进制指数后退算法BEB、多项式后退算法PB、线性增值后退算法LIB、固定平均后退算法FMB、顺序后退算法OB.
原文:http://www.elecfans.com/baike/tongxingjishu/youxintongxin/20100409215045.html