免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4703 | 回复: 0
打印 上一主题 下一主题

CSMA/CD中,退避算法是怎样进行的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-25 18:46 |只看该作者 |倒序浏览
   学网络的人,恐怕都得知道在总线网络中必须要用到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)


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/61459/showart_1011314.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP