网络拥塞控制的分析与研究讲义
- 格式:docx
- 大小:47.23 KB
- 文档页数:10
GoogleWebRTC网络拥塞控制策略的研究(2)摘要:伴随着近几年人们对网络视频,语音通讯需求的极大增长,国内网络带宽提速的脚步依然很慢。
从而使得网路拥塞的现象更加严重。
在本文中,作者阐述了当前tcp拥塞控制的典型算法,着重针对 google webrtc技术中的拥塞解决方案进行分析和研究,达到了理论与实际相互结合的目的。
关键词:拥塞控制;google webrtc;带宽测量中图分类号:tp393.40 引言随着计算机技术,特别是流媒体技术的迅速发展,流式传输在网络业务中所占的比例迅速攀升,internet从单一的数据传输网络逐步演化成承载数据、语音、视频等多媒体信息的综合业务传输网络。
internet所提供的服务类型,不再局限于简单的信息浏览、e-mail. ftp和telnet等,诸如视频点播、音视频会议、远程教学、实时图文信息发布、交互式虚拟现实等新的应用纷纷涌现出来。
这些多媒体应用极大地丰富了internet的应用场合,给社会各行业,特别是教育、医疗、娱乐和商务等提供了巨大的发展机遇和挑战,提高了工作效率,方便了人们的工作、生活和学习。
同时,国内互联网带宽提速一直进展缓慢,从而对互联网进一步发展受到限制。
谷歌公司于2010年通过收购global ip solutions 公司获取了webrtc这项技术。
该技术通过浏览器提供简单的javascript 就可以达到实时通讯的目的,提供音视频的采集、编解码、网络传输和显示等功能,支持跨平台运行: windows,linux,mac 和android,甚至可以在电视机上运行。
这项技术使得我们在没有skype、google talk和qq等即时通讯工具的情况下,通过浏览器和internet连接,我们就可以直接语音和视频聊天。
总之,对现有网络业务模式将产生巨大的改变。
本文通过对webrtc实时通讯模块关于网络拥塞控制的研究,并与现行tpc拥塞控制算法相结合,从而对webrtc的拥塞控制算法得到更深层的认识。
拥塞控制原理
拥塞控制是一种网络流量控制的机制,通过调整数据流的发送速率和接收速率,以防止网络拥塞的发生。
拥塞控制的原理可以总结为以下几个方面:
1. 基于反馈的控制:拥塞控制的基本原理是依靠网络反馈信息来监测网络状态并做出相应的调整。
发送方从接收方接收到的ACK信号和RTT(Round Trip Time)信息来判断网络的拥塞程度,然后根据这些信息动态调整发送速率。
2. 慢启动与拥塞避免:拥塞控制最初使用的是慢启动算法,即发送方初始以较低的速率发送数据,然后根据网络反馈信息逐渐增加发送速率,直到网络发生拥塞为止。
一旦发生拥塞,发送方会根据相应的拥塞避免算法进行速率的调整,以避免进一步的拥塞。
3. 拥塞信号:当网络发生拥塞时,路由器或其他网络设备会发送拥塞信号给发送方,告知网络的状态。
这些拥塞信号包括丢包、延时增加等。
发送方根据接收到的拥塞信号做出相应的调整,如减小发送速率或进行重新路由。
4. 基于窗口的流量控制:拥塞控制还可以通过窗口大小的调整来控制数据流量。
发送方根据网络反馈信息动态调整发送窗口的大小,以适应网络的拥塞程度。
较小的窗口可以减少网络中的数据量,以降低拥塞的可能性,而较大的窗口可以提高数据的传输效率。
通过以上原理和机制,拥塞控制可以有效地控制网络的流量,防止网络拥塞的发生,并提高网络的吞吐量和稳定性。
深⼊理解TCP协议及其源代码-拥塞控制算法分析这是我的第五篇博客,鉴于前⾯已经有很多⼈对前四个题⽬如三次握⼿等做了很透彻的分析,本博客将对拥塞控制算法做⼀个介绍。
⾸先我会简要介绍下TCP协议,其次给出拥塞控制介绍和源代码分析,最后结合源代码具体分析拥塞控制算法。
⼀、TCP协议1.TCP协议产⽣背景:互联⽹络与单个⽹络有很⼤的不同,因为互联⽹络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包⼤⼩和其他参数,且不同主机的应⽤层之间经常需要可靠的、像管道⼀样的连接,但是IP层不提供这样的流机制,⽽是提供不可靠的包交换。
2.TCP是能够动态地适应互联⽹络的这些特性,⽽且具备⾯对各种故障时的健壮性,且能够在不可靠的互联⽹络上提供可靠的端到端字节流⽽专门设计的⼀个传输协议。
3.TCP作⽤原理过程:应⽤层向TCP层发送⽤于⽹间传输的、⽤8位字节表⽰的数据流,然后TCP把数据流分区成适当长度的报⽂段(通常受该计算机连接的⽹络的数据链路层的最⼤传输单元(MTU)的限制)。
之后TCP把结果包传给IP层,由它来通过⽹络将包传送给接收端实体的TCP层。
TCP为了保证不发⽣丢包,就给每个包⼀个序号,同时序号也保证了传送到接收端实体的包的按序接收。
然后接收端实体对已成功收到的包发回⼀个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进⾏重传。
TCP⽤⼀个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。
4.TCP协议作⽤过程的7个要点:数据分⽚、到达确认、超时重发、滑动窗⼝、失序处理、重复处理、数据校验(具体可参见百度百科对TCP的解释)5.TCP⾸部格式图:⼏个重要参数解释如下:紧急 URG —— 当 URG =1 时,表明紧急指针字段有效。
它告诉系统此报⽂段中有紧急数据,应尽快传送(相当于⾼优先级的数据)。
确认 ACK —— 只有当 ACK = 1 时确认号字段才有效。
什么是网络拥塞网络拥塞是指在计算机网络中,由于网络资源有限或者网络流量过大,导致网络性能下降,数据传输延迟增加的现象。
网络拥塞通常会导致数据包丢失、丢包率升高,影响网络的正常运行。
本文将从网络拥塞的定义、原因、影响以及解决方法等方面进行探讨。
## 什么是网络拥塞网络拥塞是指在计算机网络中,由于网络资源有限或者网络流量过大,导致网络性能下降,数据传输延迟增加的现象。
简而言之,就是网络中的数据流量超过了网络的处理能力,导致网络运行出现问题。
网络拥塞可以发生在局部网络中,也可以发生在整个互联网上。
## 网络拥塞的原因网络拥塞的原因有很多,主要包括以下几个方面:1. **网络资源有限:** 网络资源包括带宽、处理能力等,如果这些资源有限,就容易发生拥塞。
2. **网络设备故障:** 网络中的路由器、交换机等设备如果发生故障,可能导致数据传输中断或者延迟,引发网络拥塞。
3. **恶意攻击:** 网络上的恶意攻击,如DDoS攻击等,会产生大量虚假的请求,使得网络不堪重负,出现拥塞现象。
4. **网络拓扑结构不合理:** 如果网络的拓扑结构设计不合理,可能导致部分区域的网络资源过度使用,引发拥塞。
5. **大规模数据传输:** 在某些情况下,大规模的数据传输,如文件下载、视频流等,会使网络负载急剧增加,引发拥塞。
## 网络拥塞的影响网络拥塞会对网络性能产生严重影响,主要体现在以下几个方面:1. **数据丢失:** 在网络拥塞的情况下,由于网络无法及时处理所有的数据包,部分数据包可能会丢失,导致信息传递不完整。
2. **传输延迟:** 拥塞会使数据包在网络中传输的时间增加,从而导致数据传输的延迟,影响用户体验。
3. **带宽降低:** 拥塞会使网络带宽受到限制,网络吞吐量降低,导致数据传输速度变慢。
4. **服务不稳定:** 网络拥塞可能导致一些网络服务无法正常运行,影响用户正常使用网络的能力。
## 解决网络拥塞的方法为了应对网络拥塞,可以采取以下一些方法:1. **提高带宽:** 增加网络带宽是解决拥塞最直接的方法之一,可以通过升级网络设备、增加网络链路等方式提高网络的带宽。
计算机网络中的拥塞控制算法及优化方法计算机网络作为现代信息技术的核心基础设施,其性能和可靠性对于实现高效通信至关重要。
然而,由于网络中的流量和连接数量不断增加,拥塞控制成为一个重要的问题。
拥塞控制算法的目标是通过适当地调整网络流量来避免拥塞,并确保网络能够正常运行。
目前,有多种拥塞控制算法和优化方法被广泛应用于计算机网络中,其中包括AIMD、RED、DCTCP、PIE等。
下面将对这些算法进行介绍和分析。
1. AIMD(添加增加,乘半减少):AIMD是一种经典的拥塞控制算法,其基本原理是根据网络拥塞程度来调整发送速率。
当网络正常运行时,发送方每经过一个成功的传输就逐步增加发送速率;当检测到网络出现拥塞时,发送方就减少发送速率。
AIMD算法使得网络能够在拥塞和稳定状态之间自动调整,具有较好的性能。
2. RED(随机早期检测):RED算法是一种基于随机早期检测的拥塞控制机制。
它通过在路由器中引入队列,当队列中的数据包数量超过一定阈值时,就丢弃一部分数据包,从而降低发送端的发送速率。
RED算法可以有效避免过早丢包和过度丢包问题,提高网络性能。
3. DCTCP(数据中心传输控制协议):DCTCP是一种专门针对数据中心网络的拥塞控制协议。
它通过在网络中引入ECN(显式拥塞通知)机制,使得路由器能够立即通知发送方有关网络拥塞的信息。
DCTCP算法能够实现快速拥塞反应和共享网络带宽,对于数据中心网络的性能优化具有重要意义。
4. PIE(参考隐式拥塞体验):PIE算法是一种基于隐式拥塞体验的拥塞控制方法。
它通过监测网络的丢包率和延迟来评估拥塞状况,并调整发送速率。
PIE算法具有快速收敛和较低的丢包率,可以提高网络的容量利用率和用户体验。
除了上述的拥塞控制算法外,还有一些优化方法可以进一步提升网络性能。
1. 基于优先级队列的调度算法:优先级队列调度算法可以根据数据包的优先级来进行调度和分配网络资源。
通过合理设置优先级,可以提高关键任务的传输优先级,从而优化网络性能。
TCP的拥塞控制1.引⾔计算机⽹络中的带宽、交换结点中的缓存和处理机等,都是⽹络的资源。
在某段时间,若对⽹络中某⼀资源的需求超过了该资源所能提供的可⽤部分,⽹络的性能就会变坏。
这种情况就叫做拥塞。
拥塞控制就是防⽌过多的数据注⼊⽹络中,这样可以使⽹络中的路由器或链路不致过载。
拥塞控制是⼀个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。
2.慢开始与拥塞避免发送⽅维持⼀个叫做拥塞窗⼝cwnd(congestion window)的状态变量。
拥塞窗⼝的⼤⼩取决于⽹络的拥塞程度,并且动态地在变化。
发送⽅让⾃⼰的发送窗⼝等于拥塞窗⼝,另外考虑到接受⽅的接收能⼒,发送窗⼝可能⼩于拥塞窗⼝。
慢开始算法的思路就是,不要⼀开始就发送⼤量的数据,先探测⼀下⽹络的拥塞程度,也就是说由⼩到⼤逐渐增加拥塞窗⼝的⼤⼩。
这⾥⽤报⽂段的个数的拥塞窗⼝⼤⼩举例说明慢开始算法,实时拥塞窗⼝⼤⼩是以字节为单位的。
如下图:当然收到单个确认但此确认多个数据报的时候就加相应的数值。
所以⼀次传输轮次之后拥塞窗⼝就加倍。
这就是乘法增长,和后⾯的拥塞避免算法的加法增长⽐较。
为了防⽌cwnd增长过⼤引起⽹络拥塞,还需设置⼀个慢开始门限ssthresh状态变量。
ssthresh的⽤法如下:当cwnd<ssthresh时,使⽤慢开始算法。
当cwnd>ssthresh时,改⽤拥塞避免算法。
当cwnd=ssthresh时,慢开始与拥塞避免算法任意。
拥塞避免算法让拥塞窗⼝缓慢增长,即每经过⼀个往返时间RTT就把发送⽅的拥塞窗⼝cwnd加1,⽽不是加倍。
这样拥塞窗⼝按线性规律缓慢增长。
⽆论是在慢开始阶段还是在拥塞避免阶段,只要发送⽅判断⽹络出现拥塞(其根据就是没有收到确认,虽然没有收到确认可能是其他原因的分组丢失,但是因为⽆法判定,所以都当做拥塞来处理),就把慢开始门限设置为出现拥塞时的发送窗⼝⼤⼩的⼀半。
然后把拥塞窗⼝设置为1,执⾏慢开始算法。
移动通信的网络拥塞问题移动通信网络在现代社会中扮演着至关重要的角色,随着越来越多的用户依赖于移动通信服务,网络拥塞问题也变得日益突出。
本文将探讨移动通信网络拥塞问题的原因、影响以及应对策略。
一、网络拥塞问题的原因移动通信网络拥塞问题是由多方面因素引起的。
首先,用户数量的快速增长导致网络负载超过了原有设计容量,使网络出现拥塞。
其次,随着移动应用的广泛普及,用户对网络的需求越来越高,尤其是对于高质量的视频和音频流媒体的需求,进一步加剧了网络拥塞问题。
此外,网络基础设施的更新滞后也是导致网络拥塞的重要原因之一。
二、网络拥塞问题的影响网络拥塞问题对移动通信网络和用户都造成了严重影响。
对于网络运营商而言,网络拥塞会导致用户体验下降,增加用户投诉和流失的风险,从而影响运营商的收入和声誉。
对于用户而言,网络拥塞会导致网络连接不稳定、通话质量下降、信息传输延迟增加等问题,给用户的正常使用带来不便,甚至可能导致业务中断。
三、应对网络拥塞的策略为了解决移动通信网络拥塞问题,需要采取一系列的策略和措施。
以下是几种常见的应对网络拥塞的策略:1.网络扩容:增加网络基础设施的投资,提升网络容量,以满足用户日益增长的需求。
这包括增加基站数量、优化网络架构等。
2.流量调度:通过智能的流量调度算法,根据网络负载情况和用户需求,动态地将流量从拥塞的区域转移到空闲的区域,以平衡整个网络的负载。
3.优化网络资源管理:针对网络中的瓶颈,采取针对性的优化措施,提高网络资源的利用率。
例如,优化网络带宽分配策略、改进数据压缩算法等。
4.与其他运营商合作:通过与其他运营商的合作,共享网络资源,共同应对网络拥塞问题,提高整体网络的稳定性和可靠性。
5.引入新技术:尝试引入新的移动通信技术,如5G技术,以提供更高的网络容量和更低的延迟,从根本上解决网络拥塞问题。
四、结论移动通信网络拥塞问题是一个日益突出的挑战,但通过采取适当的策略和措施,可有效缓解拥塞问题,提高网络的可用性和可靠性。
无线网络TCP拥塞控制算法研究综述陈金超;谢东亮【摘要】随着WiFi,3G网络和无线设备的普及,无线通信传输数据亮不断增加。
对无线网络数据传输的性能要求也不断加大。
TCP作为现今internet网络主要传输控制协议之一,在IP层基础上为应用层提供面向连接的、可靠的数据传输服务。
TCP在有线网络中已经证明可以取得良好的传输性能,然而在无线网络中(蜂窝网络、Ad hoc网络和卫星网络等)由于无线信道具有高衰减、高比特误码率的特点等因素导致TCP传输性能衰弱。
目前国内外学者已经提出了各种不同的方法来提高无线网络中 TCP性能,本文着重讨论在蜂窝网络、wifi 网络下提升无线 TCP 性能的解决方案,对比标准 TCP协议,分析造成无线网络TCP性能下降的主要原因以及各无线网络TCP解决方案的性能。
%With the popularity of WiFi/3G network and wireless devices, wireless transmission is increasing. TCP is one of the core protocols of the Internet protocol suiteand provides a reliable data transmission service to the application layer. TCP has been optimized for wired networks. However, the Performance of TCP decrease in wireless network due to fad-ing, shadowing, hand off, and other radio effects, that cannot be considered congestion. This article focuses on the perfor-mance of wireless TCP in a cellular network and WiFi network, compared to standard TCP protocol, analyses the reason of TCP performance degradation in wireless network and introduces existing solutions that enhancing the performance of TCP wireless.【期刊名称】《软件》【年(卷),期】2015(000)001【总页数】6页(P82-87)【关键词】无线网络;WiFi;3G;TCP;性能优化【作者】陈金超;谢东亮【作者单位】北京邮电大学网络技术研究院北京 100876;北京邮电大学网络技术研究院北京 100876【正文语种】中文【中图分类】TP393.0随着无线网络和无线设备的普及,无线通信传输数据量愈来愈大。
1 网络拥塞控制的 分析与研究
2015级 软件工程 高家祺 2
摘要 随着互联网本身规模的迅速扩大、互联网用户数的剧增以及网络应用类型的快速增加,网络正经历越来越多的包丢失和其他的性能恶化问题,其中一个比较严重的现象就是网络拥塞。网络拥塞导致的直接后果是整个网络的性能下降:包括分组丢失率增加、端到端延迟增大、网络吞吐量下降、甚至有可能使整个系统发生拥塞崩溃。 当网络处于拥塞崩溃状态时,微小的负载增量都将使网络的有效吞吐量急剧下降。造成网络拥塞的原因很多,主要有:存储空间不足、带宽容量不足、处理器处理能力弱、TCP/PI协议拥塞控制机制中的缺陷、用户的恶意攻击造成的网络拥塞以及网络系统的混沌、分叉等现象都会导致网络通讯的崩溃。 在目前的Internet中,既然网络拥塞是无法避免的,就必须采取积极主动的策略控制和避免拥塞,把拥塞发生的可能性降到最低,即使在发生拥塞后也能及时地恢复到正常运行状态;同时拥塞控制也必须保证网络效率。因此,网络拥塞控制是网络系统改善性能和提高服务质量的主要手段,网络拥塞控制问题的研究具有重要的理论意义和应用价值。 本文主要从网络拥塞的概念解释、造成拥塞的原因、防止拥塞的方法、拥塞控制的常用算法、拥塞控制方面的研究热点以及网络拥塞控制未来的发展等多个方面对网络拥塞控制进行阐述。 3
第一章:拥塞现象介绍 一、拥塞现象 拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象。这种现象跟公路网中经常所见的交通拥挤一样,当节假日公路网中车辆大量增加时,各种走向的车流相互干扰,使每辆车到达目的地的时间都相对增加(即延迟增加),甚至有时在某段公路上车辆因堵塞而无法开动(即发生局部死锁)。 1. 与拥塞相关的名词解释 网络的吞吐量与通信子网负荷(即通信子网中正在传输的分组数)有着密切的关系。当通信子网负荷比较小时,网络的吞吐量(分组数/秒)随网络负荷(每个节点中分组的平均数)的增加而线性增加。当网络负荷增加到某一值后网络吞吐量反而下降,则表征网络中出现了拥塞现象。在一个出现拥塞现象的网络中,到达某个节点的分组将会遇到无缓冲区可用的情况,从而使这些分组不得不由前一节点重传,或者需要由源节点或源端系统重传。当拥塞比较严重时,通信子网中相当多的传输能力和节点缓冲器都用于这种无谓的重传,从而使通信子网的有效吞吐量下降。由此引起恶性循环,使通信子网的局部甚至全部处于死锁状态,最终导致网络有效吞吐量接近为零。 2. 造成拥塞的原因分析 造成网络拥塞的原因一般来说分为以下2种:a. 多条流入线路有分组到达,并需要同一输出线路,此时,如果路由器没有足够的内存来存放所有这些分组,那么有的分组就会丢失。b. 路由器的慢带处理器的缘故,以至于难以完成必要的处理工作,如缓冲区排队、更新路由表等。 3. 防止拥塞的常用方法 由于拥塞可以发生在TCP/IP模型中的传输层、网络层和数据链路层三个层次,所以防止拥塞的方法在不同层次也具有不同的表现形式。a. 在传输层可采用:重传策略、乱序缓存策略、确认策略、流控制策略和确定超时策略。b. 在网络层可采用:子网内部的虚电路与数据报策略、分组排队和服务策略、分组丢弃策略、路由算法和分组生存管理。c. 在数据链路层可采用:重传策略、乱序缓存策略、确认策略和流控制策略。
二、拥塞控制的方法 常见的拥塞控制方法一般分为以下三种,主要是针对不同的网络环境而有所不同。 1. 缓冲区预分配法 该法用于虚电路分组交换网中。在建立虚电路时,让呼叫请求分组途经的节点为虚电路预先分配一个或多个数据缓冲区。若某个节点缓冲器已被占满,则呼叫请求分组另择路由,或者返回一个"忙"信号给呼叫者。这样,通过途经的各节点为每条虚电路开设的永久性缓冲区(直到虚电路拆除),就总能有空间来接纳并转送经过的分组。此时的分组交换跟电路交换很相似。当节点收到一个分组并将它转发出去之后,该节点向发送节点返回一个确认信息。该确认一方面表示接收节点已正确收到分组,另一方面告诉发送节点,该节点已空出缓冲区以备接收下一个分组。上面是"停一等"协议下的情况,若节点之间的协议允许多个未处理的分组存在,则为了完全消除拥塞的可能性,每个节点要为每条虚电路保留等价于窗口大小数量的缓冲区。这种方法不管有没有通信量,都有可观的资源(线路容量或存储空间)被某个连4
接占有,因此网络资源的有效利用率不高。这种控制方法主要用于要求高带宽和低延迟的场合,例如传送数字化语音信息的虚电路。 2. 分组丢弃法 该法不必预先保留缓冲区,当缓冲区占满时,将到来的分组丢弃。若通信子网提供的是数据报服务,则用分组丢弃法来防止拥塞发生不会引起大的影响。但若通信子网提供的是虚电路服务,则必须在某处保存被丢弃分组的备份,以便拥塞解决后能重新传送。有两种解决被丢弃分组重发的方法,一种是让发送被丢弃分组的节点超时,并重新发送分组直至分组被收到;另一种是让发送被丢弃分组的节点在尝试一定次数后放弃发送,并迫使数据源节点超时而重新开始发送。但是不加分辨地随意丢弃分组也不妥,因为一个包含确认信息的分组可以释放节点的缓冲区,若因节点原空余缓冲区来接收含确认信息的分组,这便使节点缓冲区失去了一次释放的机会。解决这个问题的方法可以为每条输入链路永久地保留一块缓冲区,以用于接纳并检测所有进入的分组,对于捎带确认信息的分组,在利用了所捎带的确认释放缓冲区后,再将该分组丢弃或将该捎带好消息的分组保存在刚空出的缓冲区中。 3. 定额控制法 这种方法在通信子网中设置适当数量的称做"许可证"的特殊信息,一部分许可证在通信子网开始工作前预先以某种策略分配给各个源节点,另一部分则在子网开始工作后在网中四处环游。当源节点要发送来自源端系统的分组时,它必须首先拥有许可证,并且每发送一个分组注销一张许可证。目的节点方则每收到一个分组并将其递交给目的端系统后,便生成一张许可证。这样便可确保子网中分组数不会超过许可证的数量,从而防止了拥塞的发生。 5
第二章:拥塞控制的常用算法分析 一、TCP拥塞控制典型算法分析 目前在Internet上实际使用的拥塞控制基本上是建立在TCP窗口控制基础之上的,据统计,Internet上的95%的数据流使用的是TCP协议,因此TCP拥塞控制一直是网络拥塞控制研究的重点。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成,后来TCP Reno版本中又针对性的加入了“快速重传(Fast retransmit)”、“快速恢复(Fast Recovery)”算法,再后来在TCP NewReno中又对“快速恢复”算法进行了改进,近些年又出现了选择性应答(selective acknowledgement,SACK)算法,还有其他方面的大大小小的改进,成为网络研究的一个热点。 1. 慢启动 最初的TCP在连接建立成功后会向网络中发送大量的数据包,这样很容易导致网络中路由器缓存空间耗尽,从而发生拥塞。因此新建立的连接不能够一开始就大量发送数据包,而只能根据网络情况逐步增加每次发送的数据量,以避免上述现象的发生。具体来说,当新建连接时,cwnd(计算机网络拥塞窗口)初始化为1个最大报文段(MSS)大小,发送端开始按照拥塞窗口大小发送数据,每当有一个报文段被确认,cwnd就增加1个MSS大小。这样cwnd的值就随着网络往返时间(Round Trip Time,RTT)呈指数级增长,事实上,慢启动的速度一点也不慢,只是它的起点比较低一点而已。我们可以简单计算下: 开始 ---> cwnd = 1 经过1个RTT后 ---> cwnd = 2*1 = 2 经过2个RTT后 ---> cwnd = 2*2= 4 经过3个RTT后 ---> cwnd = 4*2 = 8 如果带宽为W,那么经过RTT*log2W时间就可以占满带宽。 2. 拥塞避免 从慢启动可以看到,cwnd可以很快的增长上来,从而最大程度利用网络带宽资源,但是cwnd不能一直这样无限增长下去,一定需要某个限制。TCP使用了一个叫慢启动门限(ssthresh)的变量,当cwnd超过该值后,慢启动过程结束,进入拥塞避免阶段。对于大多数TCP实现来说,ssthresh的值是65536(同样以字节计算)。拥塞避免的主要思想是加法增大,也就是cwnd的值不再指数级往上升,开始加法增加。此时当窗口中所有的报文段都被确认时,cwnd的大小加1,cwnd的值就随着RTT开始线性增加,这样就可以避免增长过快导致网络拥塞,慢慢的增加调整到网络的最佳值。 3. 快速重传 TCP认为网络拥塞的主要依据是它重传了一个报文段。TCP对每一个报文段都有一个定时器,称为重传定时器(RTO),当RTO超时且还没有得到数据确认,那么TCP就会对该报文段进行重传,当发生超时时,那么出现拥塞的可能性就很大,某个报文段可能在网络中某处丢失,并且后续的报文段也没有了消息,在这种情况下,TCP反应比较“强烈”: a. 把ssthresh降低为cwnd值的一半 。 b. 把cwnd重新设置为1 。 c. 重新进入慢启动过程。 从整体上来讲,TCP拥塞控制窗口变化的原则是AIMD原则,即加法增大、乘法减小。可以看出TCP的该原则可以较好地保证流之间的公平性,因为一旦出现丢包,那么立即减半退