Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1078539
  • 博文数量: 165
  • 博客积分: 3900
  • 博客等级: 中校
  • 技术积分: 1887
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-06 15:15
文章分类

全部博文(165)

文章存档

2020年(3)

2019年(8)

2017年(2)

2016年(8)

2015年(14)

2013年(15)

2012年(32)

2011年(11)

2010年(14)

2009年(7)

2008年(20)

2007年(31)

分类: 系统运维

2007-05-08 10:44:47

快速重传与快速恢复算法

       在收到一个失序的报文段时, T C P立即需要产生一个A C K(一个重复的A C K)。这个重复的A C K不应该被迟延。该重复的A C K的目的在于让对方知道收到一个失序的报文段,并告诉对方自己希望收到的序号。

       由于我们不知道一个重复的A C K是由一个丢失的报文段引起的,还是由于仅仅出现了几个报文段的重新排序,因此我们等待少量重复的A C K到来。假如这只是一些报文段的重新排序,则在重新排序的报文段被处理并产生一个新的A C K之前,只可能产生1 ~ 2个重复的A C K。如果一连串收到3个或3个以上的重复A C K,就非常可能是一个报文段丢失了。于是我们就重传丢失的数据报文段,而无需等待超时定时器溢出。这就是快速重传算法。接下来执行的不是慢启动算法而是拥塞避免算法。这就是快速恢复算法。

       没有执行慢启动的原因是由于收到重复的A C K不仅仅告诉我们一个分组丢失了。由于接收方只有在收到另一个报文段时才会产生重复的A C K,而该报文段已经离开了网络并进入了接收方的缓存。也就是说,在收发两端之间仍然有流动的数据,而我们不想执行慢启动来突然减少数据流。这个算法通常按如下过程进行实现:

       1) 当收到第3个重复的A C K时,将s s t h re s h设置为当前拥塞窗口c w n d的一半。重传丢失的报文段。设置c w n ds s t h re s h加上3倍的报文段大小。

       2) 每次收到另一个重复的A C K时, c w n d增加1个报文段大小并发送1个分组(如果新的c w n d允许发送)。

       3) 当下一个确认新数据的A C K到达时,设置c w n ds s t h re s h(在第1步中设置的值)。这个A C K应该是在进行重传后的一个往返时间内对步骤1中重传的确认。另外,这个A C K也应该是对丢失的分组和收到的第1个重复的A C K之间的所有中间报文段的确认。这一步采用的是拥塞避免,因为当分组丢失时我们将当前的速率减半。

阅读(1779) | 评论(3) | 转发(0) |
0

上一篇:RSVP介绍

下一篇:什么是信令

给主人留下些什么吧!~~

chinaunix网友2008-11-23 22:18:45

比较清晰,谢谢你的解析

cspyb2008-02-22 08:54:46

I just think that this is very useful, thank for your kindly response

chinaunix网友2008-01-22 10:18:32

谢谢提供分析方法 为了慰劳你的辛勤 给你留言 呵呵