流量控制
就是让发送方的发送速率不要太快,要让接受方有时间接收。
利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制。
TCP接收方利用自己的接受窗口的大小来限制发送方的窗口大小。
TCP发送方收到接受方的0窗口通知后,应启动持续计时器,持续计时器超时后,向接收方发送0窗口探测报文。
拥塞控制
概念:在某段时间,如果对网络中的某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要发生变化,这种情况叫阻塞
拥塞的四种控制方法:慢开始、拥塞避免、快重传、快恢复
定义:
发送方发送一个叫做拥塞窗口cwnd的状态变量,其值取决于网络拥塞程度,并且动态变化。
拥塞窗口cwnd的维护机制:只要网络没有出现拥塞,拥塞的窗口就可以按倍数增长,但只要出现拥塞,窗口的值减小。
判断网络拥塞的依据:没有按ack的值顺序接收到确认报文(即发生超时重传)
发送方将拥塞窗口cwnd作为窗口,即发送窗口swnd,所以swnd = cwnd。
还有一个最重要的变量,门限ssthresh,我们通过它来控制使用什么算法
1. cwnd < ssthresh 使用慢开始
2. cwnd > ssthresh 使用拥塞避免
插入:当重传计时超时,判断网络出现了拥塞,则ssthresh的值更新为当前ssthresh的一半,拥塞窗口cwnd的值变为1,重新开始使用慢开始算法。
3. 重复1-2的操作,当收到3个重复确认,使用快重传,则ssthresh的值更新为当前ssthresh的一半,拥塞窗口cwnd的值变为ssthresh,并执行快恢复。