Chinaunix首页 | 论坛 | 博客
  • 博客访问: 346655
  • 博文数量: 135
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1106
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-20 09:56
文章分类

全部博文(135)

文章存档

2017年(3)

2016年(18)

2015年(69)

2014年(39)

2013年(6)

我的朋友

分类: 网络与安全

2016-02-25 14:43:16

在广域网,TCP报文可能要经过多个路由器和速率较慢的链路。如果发送方一开始就向网络

发送多个报文段,则中间路由器的缓冲负担会立刻加重,很可能致使路由器缓存空间耗尽,
引发丢包。
举例说明:假设中间路由存储空间可以缓存3个报文段(这是作了简化的假设),发送端连续发
出了编号为1,2,3,4,5的报文段,中间路由可能来不及一次性全部转发,于是先将转发1和2,
缓存3,4,5,此时路由器存储空间耗尽。这时发送方又有新报文6,7到达,于是来不及转发的3,
4被丢弃,6,7被缓存,这样不可避免地导致了重传发生。

为了解决这一问题,TCP需要支持“慢启动”算法,该算法通过观察到新分组进入网络的速
率应该与另一端返回确认的速率相同而进行工作。
慢启动算法在发送方TCP增加了一个拥塞窗口,记为cwnd,它与通告窗口相互配合来完成
慢启动过程。
当TCP连接建立成功以后,开始阶段,cwnd为1个报文段。发送方每收到一个ack,cwnd都
会增加。收到第一个ack时,cwnd = 2;收到第2个ack时,cwnd = 4,如此这般以指数关系
增加,直到cwnd = 通告窗口或者发送报文的速率达到了网路的容量,中间路由器开始丢弃
分组,这就通知发送方拥塞窗口开得过大。
需要注意的是:
1.发送方发送上限是cwnd和通告窗口的最小值(单位是字节)。
2.cwnd以字节为单位,但是慢启动以报文段大小为单位进行增加
阅读(1076) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~