TCP是如何通过窗口滑动协议实现流量控制和拥塞控制的?
在谈到在这个话题时我们就要了解到什么窗口滑动。
窗口滑动就是类似于窗口的一个东西,主要是告诉发送方客户端每次可以发送数据的大小或者说它标记了接收端缓存区的大小。(窗口?的是一次批量可以发送多少数据)
当然这个东西出现当然是有一定道理的,在原本的确认应答机制中,每当发送一条数据时就要回复一个ACK,这对传输大额的数据时无疑是一种很不高效的做法,于是就出现了窗口滑动这样一个东西,这样使得一次可以发送多条数据段,从而提高了性能。
接着我们聊一聊流量控制。
流量控制是为了防止对方发送数据过多,从而导致接受方资源过度,进而导致处理不过来。
接收端抑制发送端的依据是:接收端缓冲区的大小
流量控制的目的是接收方,防止数据处理不过来
流量控制的机制是丢包
第二个便是拥塞控制,这个是防止发送方数据太多,从而导致整个网络来不及处理(它的机制是:AIMD,即慢启动、加法增加,乘法缩小)
发送方何时知道丢包?1、发送超时 2、收到3个重复的ACK
| 流量控制 | 拥塞控制 | |
| 相同点 | 都是防止数据过大,降低数据发送量
|
机制都是丢包
|
| 不同点 | 作用对象为接受方 丢包位置:接受端
|
整个网络中的 丢包位置:路由器
|
| 关联 | 流量控制涉及的端到端 | 这个是全局性的涉及到整个网络 |