[互联网面试笔试汇总C/C++-28] TCP拥塞控制,慢启动算法

原创 2013年10月27日 15:44:42

当一个网络面对的负载超过了它的处理能力时,拥塞就会发生。Internet也不例外。
理论上,通过使用一条从物理学中套用过来的法则:分组守恒法则,拥塞现象就可以得到控制。它的基本思想是,只有当一个老的分组离开之后才允许向网络注入一个新的分组。TCP企图通过动态的维护窗口的大小来实现这个目标。
管理拥塞的第一步是检测用色。在过去,检测拥塞是非常困难的。由于丢失分组而引起的超时可能有两种情况:(1)传输线路有噪声;(2)在一台用色的路由器上分组被丢弃。要区分这两种情形是很困难的。但是现在由于线路传输可靠性增加,我们认为Internet上大部分的传输超时都是由于拥塞引起的。


 Internet的方案,首先意识到存在的两个潜在的问题:网络容量和接收方的容量,然后单独处理每一个问题。为此,每个发送方维护两个窗口:第一个是接收方的准许窗口,第二个是拥塞窗口(congestion window) 。每个窗口反映了发送方可以传递的字节数量。最终允许发送的字节数量是两个窗口的最小值。


当一个连接建立起来的时候,发送方将拥塞窗口初始化为该连接上当前使用的最大数据段长度。然后,它发送一个最大的数据段。如果该数据段在定时器过期之前被确认,则它将拥塞窗口增加一个数据段的字节数,从而使拥塞窗口变成两倍的最大数据段长度,然后发送两个数据段。如果这两个数据段中的每一个都被确认了,则拥塞窗口再增加两个最大数据段长度。当拥塞窗口达到n个数据段的时候,如果有n个数据段都被及时确认的话,拥塞窗口增加这n个数据段对应的字节数。实际上,每一批被确认的突发数据段都会使拥塞窗口加倍。


拥塞窗口一直呈指数增长,知道发生超时,或者到达接收方窗口的大小。这里的思想是,如果一定大小的突发数据,比如说1024, 2048和4096字节,都被正常地传送过去,但是,8192字节的突发数据却发生超时,则拥塞窗口应该被设置为4096以避免拥塞。但是拥塞窗口保持在4096上,则无论接收方准许窗口有多大,发送方都不会发送超过4096字节的突发数据。这个算法被称为慢启动算法(slow start),但是它实际上一点也不慢(Jacobson, 1988)。它是指数量级的,所有的TCP实现都要求支持该算法。


 除了接收方准许窗口和拥塞窗口以外,它还使用了第三个参数: 一个阀值(threshold),初始时该参数为64KB。当一次超时发生的时候,阀值被设置为当前拥塞窗口的一半,而拥塞窗口被重置为一个最大数据段。然后使用慢启动算法来决定网络的处理能力,不过当增长到阀值的时候便停止。从这个点开始,每一此成功的传输都会使拥塞窗口线性地增长(即每次突发数据仅增长一个最大数据段),而不是成倍地增长。实际上,这个算法是在猜测,将拥塞窗口减小一半可能是可以接受的,然后再从这点开始慢慢地往上增长。


  如果不再发生超时的话,则拥塞窗口将继续线性增长,知道达到接收方准许窗口的大小。在这个点上,它将停止增长,而且,只要不再发生超时并且接收方的窗口大小不改变大小,则拥塞窗口保持不变。顺便提一下,如果一个ICMP SOURCE QUENCH分组到来并且被传递给TCP,则这个时间将被当作超时一样来对待。

TCP拥塞控制-慢启动、拥塞避免、快重传、快启动

一般原理:发生拥塞控制的原因:资源(带宽、交换节点的缓存、处理机)的需求>可用资源。 作用:拥塞控制就是为了防止过多的数据注入到网络中,这样可以使网络中的路由器或者链路不至于过载。拥塞控制要做的都有一...
  • jtracydy
  • jtracydy
  • 2016年08月30日 09:29
  • 14035

TCP-IP详解: 慢启动和拥塞控制

在网络实际的传输过程中,会出现拥塞的现象,网络上充斥着非常多的数据包,但是却不能按时被传送,形成网络拥塞,其实就是和平时的堵车一个性质了。TCP设计中也考虑到这一点,使用了一些算法来检测网络拥塞现象,...
  • wdscq1234
  • wdscq1234
  • 2016年09月12日 23:03
  • 1166

TCP拥塞控制,慢启动算法

当一个网络面对的负载超过了它的处理能力时,拥塞就会发生。Internet也不例外。 理论上,通过使用一条从物理学中套用过来的法则:分组守恒法则,拥塞现象就可以得到控制。它的基本思想是,只有当一个老的...
  • jrunw
  • jrunw
  • 2017年02月24日 11:33
  • 679

tcp拥塞控制时间轴上三种状态的关系,慢启动,拥塞避免,以及快速恢复的教学状态图。

原文出处:http://blog.csdn.net/brother_lei/article/details/8117484 发现Computer Networking: A Top-Down A...
  • xluren
  • xluren
  • 2015年10月09日 20:30
  • 1512

TCP慢启动、拥塞控制、快速重传、快速恢复

转自 http://blog.csdn.net/yusiguyuan/article/details/22847787 此君为吾辈楷模 TCP的拥塞控制 1.  拥塞:即对资源的需求超过了...
  • messiran10
  • messiran10
  • 2016年05月31日 21:43
  • 1036

浅谈TCP/IP四种计时器、慢启动、拥塞避免、快速重传、快速恢复

持续计时器假设一种场景:A给B发送数据,如果B告诉A自己的缓冲区已满,于是A停止发送数据,等待一段时间后,B的缓冲区出现了富余,于是给A发送报文告诉rwnd大小为400,但是这个报文不幸丢失了,于是就...
  • whoamiyang
  • whoamiyang
  • 2017年02月09日 09:27
  • 595

TCP拥塞控制总结图

计算机网络TCP拥塞控制的图解以及总结TCP拥塞控制包括三个阶段:慢启动、拥塞避免和快速恢复其中快速恢复和拥塞避免一般共同作用而指示网络拥塞的特征就是丢包,丢包可能由两种情况触发:超时和三次冗余ACK...
  • neverever01
  • neverever01
  • 2018年01月02日 18:34
  • 31

Hybrid Start(混合慢启动)

Standard slow start does not work well under large bandwidth-delay product (BDP) networks. We find t...
  • already_skb
  • already_skb
  • 2015年02月11日 13:29
  • 819

实验七 TCP 协议的拥塞控制机制观察

一、实验任务仔细阅读课本中关于TCP 拥塞控制的介绍以及拥塞控制算法的状态自动机,完成以下任务。 1. 利用Wireshark 记录若干TCP 短流(少于5 秒,如访问web 页面,收发邮件等)和T...
  • justice0
  • justice0
  • 2017年06月25日 00:10
  • 253

TCP的数据流——滑动窗口,拥塞窗口,慢启动,Nagle算法,经受时延的确认等

(1).窗口机制     滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接...
  • woshinia
  • woshinia
  • 2014年04月03日 16:04
  • 6992
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[互联网面试笔试汇总C/C++-28] TCP拥塞控制,慢启动算法
举报原因:
原因补充:

(最多只允许输入30个字)