TCP流量控制与拥塞控制
学习笔记:
TCP是作用与端系统的协议,其首部中包含着源端口号和目标端口号,其作用就是实现可靠传输,并将接受到的数据派发给合适的进程。
流量控制和拥塞避免都是作用在传输层的网络性能优化的方案;
其中流量控制是端对端的控制(被动控制)。其中客户端和服务端各自维护着收发缓存区域以及收发窗口,通过接受方的接收性能来协商发送窗口的大小。其中缓存区域存放的都是基于字节流的数据,当接收方处理不过来的时候就要限制发送窗口的大小,可以在TCP首部的窗口大小中进行定义。甚至会使发送窗口大小设置为0,即停止发送数据。但是此时为了防止死锁(接收方发了一个TCP包重新扩容了发送窗口,但是这个包丢了),发送方会启用一个定时器,每隔一段时间确认一遍发送窗口的大小是否改变。
拥塞控制的话则是为了维护整个网络的性能,当检测到网络拥堵(丢包)时,发送方主动降低发送速率,减少网络中的负载。拥塞控制在发送方定义了一个拥塞窗口,来限制发送方可以发送数据的范围。即一开始通过慢启动,以指数的形式来扩大MSS的数量,然后当第一次丢包的时候(或者达到慢开始门限的时候)将发送的包数量降低为原来的一半。接着开始启用拥塞避免方法,每经过一次往返确认时间后增加一个MSS,直至又出现拥塞。则将慢开始门限降低为拥塞窗口的一半。重新开始慢开始》拥塞避免的流程(此处注意,当启用慢开始再次超过慢开始门限时,拥塞窗口的大小不会降低为原来的一半,而是直接从慢开始门限开始拥塞避免式增长...)。后面涉及的快恢复,指的是直接从减半后的慢开始门限处启用拥塞避免式增长。而不是从1开始执行慢开始直至慢开始门限。后面涉及的快速重传,指的是接受到乱序报文后,将连续发送三个确认包,确认缺失之前的部分,则发送方则不会要等到超时后才重传,而是直接将缺失的部分再次传递过来。
发送窗口的实际大小 = Math.min(接收窗口定义的发送窗口的大小, 拥塞窗口);