争用协议只适用于逻辑上属于总线拓扑结构的网络。在总线网络中,每个站点都能独立地决定帧的发送,若两个或多个站同时发送帧,就会产生冲突,导致所发送的帧都出错。因此,一个用户发送信息成功与否,在很大程度上取决于监测总线是否空闲的算法,以及当两个不同节点同时发送的分组发生冲突后所使用的中断传输的方法。总线争用技术可分为载波监听多路访问CSMA和具有冲突检测的载波监听多路访问CSMA/CD两大类。 c2,g%(
c2,g%(
4.3.1 载波监听多路访问CSMA c2,g%(
c2,g%(
载波监听多路访问CSMA的技术,也称做无听后说LBT(Listem Before Talk)。要传输数据的站点首先对媒体上有无载波进行监听,以确定是否有别的站点在传输数据。如果媒体空闲,该站点便可传输数据;否则,该站点将避让一段时间后再做尝试。这就需要有一种退避算法来决定避让的时间,常用的退避算法有非坚持、1-坚持、P-坚持三种。 c2,g%(
c2,g%(
1、非坚持算法 c2,g%(
算法规则为: c2,g%(
⑴如果媒本是空闲的,则可以立即发送。 c2,g%(
⑵如果媒体是忙的,则等待一个由概率分布决定的随机重发延迟后,再重复前一步骤。 c2,g%(
采用随机的重发延迟时间可以减少冲突发生的可能性。非坚持算法的缺点是:即使有几个着眼点为都有数据要发送,但由于大家都在延迟等待过程中,致使媒体仍可能处于空闲状态,使用率降低。 c2,g%(
c2,g%(
2、1-坚持算法 c2,g%(
算法规则: c2,g%(
⑴如果媒体空闲的,则可以立即发送。 c2,g%(
⑵如果媒体是忙的,则继续监听,直至检测到媒体是空闲,立即发送。 c2,g%(
⑶如果有冲突(在一段时间内未收到肯定的回复),则等待一随机量的时间,重复步骤⑴~⑵。 c2,g%(
这种算法的优点是:只要媒体空闲,站点就立即可发送,避免了媒体利用率的损失;其缺点是:假若有两个或两个以上的站点有数据要发送,冲突就不可避免。 c2,g%(
c2,g%(
3、P-坚持算法 c2,g%(
算法规则: c2,g%(
⑴监听总线,如果媒体是空闲的,则以P的概率发送,而以(1-P)的概率延迟一个时间单位。一个时间单位通常等于最大传播时延的2倍。 c2,g%(
⑵延迟一个时间单位后,再重复步骤⑴。 c2,g%(
⑶如果媒体是忙的,继续监听直至媒体空闲并重复步骤⑴。 c2,g%(
P-坚持算法是一种既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的折中方案。问题在于如何选择P的有值,这要考虑到避免重负载下系统处于的不稳定状态。假如媒体是忙时,有N个站有数据等待发送,一旦当前的发送完成时,将要试图传输的站的总期望数为NP。如果选择P过大,使NP>1,表明有多个站点试图发送,冲突就不可避免。最坏的情况是,随着冲突概率的不断增大,而使吞吐量降低到零。所以必须选择适当P值使NP<1。当然P值选得过小,则媒体利用率又会大大降低。 c2,g%(
c2,g%(
4.3.2具有冲突检测的载波监听多路访问CSMA/CD c2,g%(
c2,g%(
在CSMA中,由于信道传播时延的存在,即使总线上两个站点没有监听到载波信号而发送帧时,仍可能会发生冲突。由于CSMA算法没有冲突检测功能,即使冲突已发和,仍然将已破坏的帧发送完,使总线的利用率降低。 c2,g%(
一种CSMA的改进方案是使发送站点传输过程中仍继续监听媒体,以检测是否存在冲突。如果发生冲突,信道上可以检测到超过发送站点本身发送的载波信号的幅度,由此判断出冲突的存在。一于检测到冲突,就立即停止发送,并向总线上发一串阻塞信号,用以通知总线上其它各有关站点。这样,通道容量就不致因白白传送已受损的帧而浪费,可以提高总线的利用率。这种方案称做载波监听多路访问/冲突检测协议,简写为CSMA/CD,这种协议已广泛应用于局域网中。 c2,g%(
CSMA/CD的代价是用于检测冲突所花费的时间。对于基带总线而言,最坏情况下用于检测一个冲突的时间等于任意两个站之间传播时延的两倍。从一个站点开始发送数据到另一个站点开始接收数据,也即载波