前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >速读原著-TCP/IP(慢启动)

速读原著-TCP/IP(慢启动)

作者头像
cwl_java
发布2020-03-12 09:20:24
7830
发布2020-03-12 09:20:24
举报
文章被收录于专栏:cwl_Javacwl_Java

第20章 TCP的成块数据流

20.6 慢启动

迄今为止,在本章所有的例子中,发送方一开始便向网络发送多个报文段,直至达到接收方通告的窗口大小为止。当发送方和接收方处于同一个局域网时,这种方式是可以的。但是如果在发送方和接收方之间存在多个路由器和速率较慢的链路时,就有可能出现一些问题。

一些中间路由器必须缓存分组,并有可能耗尽存储器的空间。 [Jacobson 1988]证明了这种连接方式是如何严重降低了T C P连接的吞吐量的。

现在,T C P需要支持一种被称为“慢启动 (slow start)”的算法。该算法通过观察到新分组进入网络的速率应该与另一端返回确认的速率相同而进行工作。

慢启动为发送方的T C P增加了另一个窗口:拥塞窗口 (congestion window),记为c w n d。当与另一个网络的主机建立 T C P连接时,拥塞窗口被初始化为 1个报文段(即另一端通告的报文段大小)。每收到一个 A C K,拥塞窗口就增加一个报文段( c w n d以字节为单位,但是慢启动以报文段大小为单位进行增加)。发送方取拥塞窗口与通告窗口中的最小值作为发送上限。拥塞窗口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制。

发送方开始时发送一个报文段,然后等待 A C K。当收到该A C K时,拥塞窗口从1增加为2,即可以发送两个报文段。当收到这两个报文段的 A C K时,拥塞窗口就增加为 4。这是一种指数增加的关系。

在某些点上可能达到了互联网的容量,于是中间路由器开始丢弃分组。这就通知发送方它的拥塞窗口开得过大。当我们在下一章讨论 T C P的超时和重传机制时,将会看到它们是怎样对拥塞窗口起作用的。现在,我们来观察一个实际中的慢启动。

一个例子 图2 0 - 8表示的是将从主机s u n发送到主机v a n g o g h . c s . b e r k e l e y . e d u的数据。这些数据将通过一个慢的S L I P链路,该链路是T C P连接上的瓶颈(我们已经在时间系列上去掉了连接建立的过程)。

在这里插入图片描述
在这里插入图片描述

我们观察到发送方发送一个长度为 5 1 2字节的报文段,然后等待A C K。该A C K在716 ms后收到。这个时间是一个往返时间的指示。于是拥塞窗口增加了 2个报文段,且又发送了两个报文段。当收到报文段5的A C K后,拥塞窗口增加为3。此时尽管可发送多达3个报文段,可是在下一个A C K收到之前,只发送了2个报文段。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/03/10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第20章 TCP的成块数据流
    • 20.6 慢启动
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档