前言在复杂的网络通信中,网络交互在线路上产生巨大流量,由于设备性能的差异和缺陷,网络中发生像高速公路的拥塞也是很正常的,为了减少网络中数据拥塞和丢失所造成的损失,因此网络协议中采用了流量控制和拥塞控制技术.辨析流量控制:流量控制主要由通信双方设备决定,具体为发送方发送窗口和接收方接收窗口决定.一般地,发送窗口会有一定的数据缓存,所以发送方并不能发送最大窗口值数据,而接收方的接受窗口也可能存在数据缓存,于是这两个窗口决定了发送方所发送的数据量,因此称之为流量控制.拥塞控制:拥塞控制没有那么明确,总的来讲,除开发送端和接收端,其中间网络设备的通信能力,就像一个黑盒子,我们知道接收方返回的确认信息越来越慢,于是我们就猜测其中拥塞程度变大了.这就是网络出现了拥塞.流量控制首先,流量控制涉及四个窗口,即发送方和接收方各有两个(发送窗口,接收窗口),所以流量通信是四个窗口,并不是我们想象中的两个窗口哦,如图:流量控制具体流程假设窗口大小为300字节,此时已发送出序号101开始的300字节数据,窗口在框1处.假设此时接收到了接收方的确认ack=301,且窗口大小为200B(流量控制起作用了,即希望下次只发送200B数据),在此,数据并未被完全接收,因此窗口只能滑动到确认号为301的位置.如图中框2,所以窗口中的101,201缓存即被删除.此时待发数据为401和501.此时收到接收方的确认ack=601,窗口300,即窗口滑动向601,如图窗口3准备发送接下来的601,701,801.当发送方一直没收到确认或确认包窗口值为0时,会发送一个探测性数据段,返回窗口值为0时,启动超时计时器,到时后继续发送探测,若接收端发送来了窗口值不为0的数据段,则发送端开始正常发送数据.流量控制的两种算法Nagle算法发送端并不一有数据就发送,而是自己先把数据缓存起来,达到接收方窗口值一半或发送窗口最大值,就即刻发送.Clark算法接收端让发送方等待,当自己由足够的接收窗口空间时,再发送确认信息.在流量控制中,这两种算法十分重要,并且是结合使用的.TCP拥塞控制TCP拥塞控制主要依靠TCP连接双方协定的协议来减少数据的发送儿实现的.进入网络的数据大于出口时,就会发生网络拥塞.实际吞吐量和输入负荷之间的关系:1988年解决方案术语CWND:拥塞窗口大小SSTHRESH:慢启动阈值过程有一初始值SSTHRESH,并维护一拥塞窗口.慢启动:2倍速增长.拥塞避免:每次加1.阻塞后,SSTHRESH变为原来的一半.重新开始步骤2发送数据段大小:为MAX(发送窗口大小,拥塞窗口)1990年后新增方案:快速重传/快速恢复快速重传快速恢复未完待续…..