退避算法

       在通信中经常遇到同一线路中出现多个信息需要同时发送,这个时候会产生信息碰撞,导致信息丢失。有什么解决方式呢?退避算法是一种较为常用的解决方式。在ETH网络通信中,使用CSMA方式,载波监听,多次重发方式来规避冲突。

       退避算法是指在一次传输失败后,经过一个随机补偿等待时间T后,避免产生第二次冲突。其主要用于CSMA冲突分解,二进制指数退避可以取得较好的分解效果。

转载:

 

    退避算法是在在单个信道的基于竞争的介质的一种访问控制(MAC)协议。每当一个以上的节点在同一时刻试图访问介质的时候,它会导致分组碰撞。如果相撞的节点试图再次访问信道,在节点做及时同步的时候数据包将发生碰撞。因此,节点需要时间位差。为了产生这种位差,退避算法(例如二进制指数退避(BEB)) 。例如,在BEB算法中,每当一个节点的传输涉及在与另一个节点的传输发生碰撞,两个节点都将选择一个随机的等待时间,在下次再次尝试前需要等待选择的随机时间。如果他们在这样的尝试都没有成功,他们自己的竞争窗口增加一倍,在发射前再次选择等待一个随机时间。这个过程将被重复一定次数的尝试。如果经过数次尝试之后都失败了,那么其传输的数据包将被从传输队列中移除。

 

 

早期以太网使用的退避算法称为二进制指数类型退避算法,具体进行如下:

      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)

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值