TCP的可靠性
原因:
1.确认和重传机制
2.序列号
3.流量控制(窗口)
4.拥塞控制(慢启动,拥塞避免,快速重传,快速恢复)
http://blog.csdn.net/baidu_35692628/article/details/78255476?locationNum=4&fps=1
Tcp:1)流量控制:防止较快主机使较慢主机缓冲区溢出,是点对点;2)拥塞控制: 全局性,防止过多的数据注入网络。
tcp 采用滑动窗口进行流量控制,滑动窗口大小可变,窗口大小的单位是字节。
发送窗口在连接建立时由双方确定,但在通信过程中,接收端可以根据自己的资源情况, 随时动态的调整对方的发送窗口上限制。
拥塞控制:慢开始、拥塞避免、快重传、快恢复。
接收端窗口:这是接收端根据其目前的接收缓存大小所许诺的最新窗口值,是来自接收端的流量控制。接收端将此窗口值放在 tcp 报文的首部中的窗口字段,传送给发送端,是来自接收端的流量控制。
拥塞窗口:这是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。
当网络发生拥塞时,路由器就会丢掉分组,因此,只要发送端没有按时收到应当到达的确认报文 ack,就可认为网络出现了拥塞。
发送窗口上限=min{接收窗口,拥塞窗口}。
慢开始:由小到大逐渐增大发送端的拥塞窗口数值。
为了防止拥塞,窗口 cwnd 的增长引起网络拥塞,还需要慢开始门限 ssthresh。
当 cwnd<ssthresh, 使用慢开始算法; 当 cwnd>ssthresh, ,使用拥塞避免算法; 当
cwnd=ssthresh,既可用慢开始算法也可用拥塞避免算法。
无论是慢开始还是拥塞避免,只要发送端发现网络阻塞,就将慢开始门限设为出现拥塞时的发送窗口值的一半,然后拥塞窗口为一,并执行慢开始算法。这样做的目的是迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。
快重传算法规定:发送端只要一连收到三个重复 ack,即可断定有分组丢失,就应该立即重传丢失的报文,而不需要等待为该报文设置的重传计时器超时。
与慢开始不同,拥塞窗口不设为 1,,而设为慢开始门限+3*mss(mss:最大报文段)。