IEEE802.3或Ethernet所用的媒体访问法为带有碰撞检测的载波侦听多路访问(CSMA/CD)。按
照这种方法,一个工作站在发送前,首先侦听媒体上是否有活动,即称为“谈前听”协议。所谓
活动是指媒体上有无传输,也就是载波是否存在。如果侦听到有载波存在,工作站便推迟自己的
传输。在侦听的结果为媒体空闲时,则立即开始进行传输。在侦听到媒体忙而等待传输情况下,
当传输中的帧最后一个数据位通过后,应继续等待至少9.6us,以提供适当的帧间间隔,随后便可
进行传输。
如果两个工作站同时试图进行传输,将会造成废帧,这种现象称为碰撞,并认为是一种正常
现象,因以媒体上连接的所有工作站的发送都基于媒体上是否有载波,所以称为载波侦听多路访
问(CSMA)。为保证这种操作机制能够运行,还需要具备检测有无碰撞的机制,这便是碰撞检测(CD)。
也就是说,在一个工作站发送过程中仍要不断检测是否出现碰撞。出现碰撞的另一种情况是由下
述原因造成的,即信号在LAN上传播有一定时延,对于粗缆而言,信号在其上的传播速度是光速的
77%。对于细缆,在其上的传播速度为光速的65%。由于这种传播时延,虽然LAN上某一工作站已开
始发送,但由于另外一工作站尚未检测到第一站的传输也启动发送,从而造成碰撞。图3示出了工
作站检测碰撞所需的时间,图中标出的数字1为工作站发送一个帧(传输单位)所需的时间,数字0.5
为工作站A传输到工作站B所需的传播时间。可以看到,工作站A检测到碰撞是从A到B传播时间的2
倍。
图3还表明,帧长度要足以在发完之前就能检测到碰撞,否则碰撞检测就失去意义。因此,在
IEEE802.3标准中定义了一个间隙时间,其大小为住返传播时间与为强化碰撞而有意发送的干扰序
列时间之和。这个间隙时间可用来确定最小的MAN帧长。
检测到碰撞之后,涉及该次碰撞的站要丢弃各自开始的传输,转而继续发送一种特殊的干扰
信号,使碰撞更加严重以便警告LAN上的所有工作站,碰撞出现了!在此之后,两个碰撞的站都采
退避策略,即都设置一个随机间隔时间,另有当此时间间隔满期后才能启动发送。当然如果这两
个工作站所选的随机间隔时间相同,碰撞将会继续产生。为避免这种情况的出现,退避时间应为
一个服从均匀分布的随机量。同时,由于碰撞产生的重传加大了网络的通信流量,所以当出现多
次碰撞后,它应退避一个较长的时间。
图3
截断二进制指数退避(Truncated Binary Exponential Backoff)就是基于这种思想提出的。
其基本算法是:
.退避时延是间隔时间的整数倍;
.为防止不成功发送无限进行,规定了最大尝试次数n;
.碰撞后选择的退避时延为间隔时间的r倍;
.r是大于0小于2k范围间的随机整数;K是min(n,10),即为尝试次数与10中最小的一个。
由此可简单写成:
K=Min(尝试次数,10)
r=随机数(0,2 )
退避时延=r.间隙时间
不难看出, 这种算法对无碰撞或碰撞次数较少的工作站而言将获得优先的发送机会。因此,
Etgernet是一种发送机会不能保证的技术,因而不适用于实时应用。尽管有这一潜在的问题,但
现实使用中的Ethernet却很少碰到。
CSMA/CD媒体访问方法从上面的描述可归纳为下述4步:
第一步:如果媒体信道空闲,则可进行发送。
第二步:如果媒体信道有载波(忙),则继续对信道进行侦听。一旦发现空闲,便立即发送。
第三步:如果在发送过程中检测的碰撞,则停止自己的正常发送,转而发送一短暂的干扰信
号,强化碰撞信号,使LAN上所有站都能知道出现了碰撞。
第四步:发送了干扰信号后,退避一随机时间,重新尝试发送。
有关CMSA/CD的更详细的解释:
CSMA/CD如何传输
由于CSMA/CD网络使用了公共电缆系统, 则必须使用一些规则来避免工作站同时传输的情况。如果多个工作站同时传输,则必须有一些方法来检测包是否因发生冲突而需重发。(CSMA/CD协议与电话会议非常类似,许多人可以同时在线路上进行对话,但如果每一个人都在同时讲话,则你将听到一片噪声;如果每个人等别人讲完后再讲,则你可以理解各人所说的话。)工作站在CSMA/CD网络上进行传输时,必须按下列五个步骤来进行
1.传输前侦听:
各工作站不断地监视电缆段上的载波, 如下图所示。 “载波”是指电缆上的信号,通常由表明电缆正在使用的电压来识别。如果工作站没有侦听到载波,则它假定电缆空闲并开始传输。(按早先提到的电话会议为例子, 这个功能类似于在讲话前听一电话。)如果在工作站传输时电缆忙(载波升起), 则其包将与已在电缆上的信息发生冲突。
2.如果电缆忙则等待:
为了避免冲突,如果工作站侦听到电缆忙则必须等待, 如下图所示。 正确实现的接口卡如果发现电缆忙将不会有意地传输。(对于电话会议, 如果你听到有人在说话,则你将会一直等到那人讲完才开始讲话。) 延迟时间是工作站试图重传前必须等到线路变成空闲的总时间。
3.传输并检测冲突:
当介质被清(载波消失)后9.6微秒(us),工作站可以传输,如下图所示。帧向电缆系统的两个方向传输。
如果同一段上的其它工作站同时传输一个包,则数据包在电缆上将产生冲突,如下图所示。 在电缆上发生冲突的数据包现在仅仅是废数据片。(如果你在电话会议中与他人同时讲话,你们俩讲话将冲突,结果产生了噪声信息。)因此, 在传输过程中,工作站应该在电缆段上检测冲突。冲突由电缆上的信息来识别,当电缆上的信号大于或等于由两个或两个以上的收发器同时传输所产生的信号时,则认为冲突产生。
如果冲突产生,而其它工作站没有发现冲突信息,则它们可能进行传输。这些工作站将产生另一次的冲突。为了避免这种情况,发生冲突的工作站用传输“干扰”来确保在电缆上的工作站能够感知到冲突, 如下图所示,干扰信息是至少32 位的传输信息,但它不能等于早先所传输报文的CRC值。 产生冲突的工作站的传输计数器加1。
4.如果冲突发生,重传前等待:
如果工作站在冲突后立即重传,则它第二次传输也将产生冲突。因此工作站在重传前必须随机地等待一段时间。
为了选择何时去进行重传,工作站实现了一个算法,此算法提供了几个使工作站可以进行重传的时间,该算法被称为“退避算法”。工作站随机地选择一个他可以使用的时间,如图所示,这降低了两个或更多个工作站同时重传的机会。(例如:在电话会议中,若两人同时开始讲话,则信息将混乱,两人将停止讲话,然后其中一人再次说话,而一人在听。)
5.重传或夭折:
若工作站是在繁忙的电缆段上,即便其数据包没有在电缆段上与其它产生冲突,也可能不能进行传输。工作站在它必须夭折传输前最多可以有16 次的传输。 NetWareV3.X服务器在MONITOR 实用程序中显示夭折服务器传输的次数, 此值将在LAN驱动程序中的Excess Collisions Count中进行统计。若工作站重传并且没有表明数据包再次产生冲突则认为传输成功。(在电话会议中, 如果你在线路不忙的时候讲话,将可以清楚地听到你的声音。如果你试图讲话,但由于线路不断地忙而不能讲话,则你可以放弃。)
注意:关于CSMA/CD协议更详细的内容请参阅IEEE802.3说明。
工作站传输成功后,可以进行其冲突检测功能的测试,以此来保证正确地工作。这被称为“信息质量错误-SQE”测试。若收发器的SQE功能被设置,则SQE测试将执行。
注意:所有的中继器将产生禁止SQE,若中继器允许SQE,则冲突将产生并“干扰”网络。
若充分理解了工作站是怎样访问介质的,这将有助于确定传输工作站是否在有效地访问介质,并且有助于确定他们是否遵守了CSMA/CD的所有规则。 完整的流程图定义了在CSMA/CD网络上工作站进行传输所必须执行的各个步骤。 如果工作站不按流程图中所描述的步骤执行,这将使电缆段不能使用。
CSMA/CD如何接收
我们已弄清了电缆段上传输处理过程。现在让我们来看一下接收端的情况。正如本章早些时候所讨论的那样,工作站传输时它是向电缆系统的两个方向发送的。在电缆段上活动的工作站实现下列四个步骤:
第一步:游览收到的包并校验包是否成为碎片
在Ethernet局域网上,电缆段上的所有工作站将浏览中电缆上传输的每一个包,并不考虑其地址是否是本地工作站。(这与电话会议系统类似, 虽然对话不是给你的,但你也能听到。)如下图所示, 接收站检查数据包来保证它有合适的长度,而不是由冲突引起的碎片,包长度最小为64字节。
第二步:校验目标地址
如下图所示,接收站在判明已不是碎片之后,下一步是校验包的目标地址,看它是否要在本地处理。如果包的地址是本地工作站地址,或是“广播地址”,或是被认可的多站地址,工作站将校验包的完整性。