网络传输过程,某段时间传输量过大会给网络造成很大的压力。有没有很好奇是怎么解决的呢?
拥塞控制和流量控制即将到达现场。先讲两个概念~
拥塞就是说到达网络中的某一部分分组数量过多,使得网络来不及处理,导致这部分甚至整个网络性能下降。
流量控制的实现方式:滑动窗口 流量控制出现的现象:丢包
滑动窗口用来通知发送端可以发送数据的大小或是窗口标记了接收端缓冲区的大小(TCP首部的16位窗口大小)。
在应答确认机制中,对每个发送的数据段都要给一个ACK确认应答,导致数据往返时间长,性能较差,使用滑动窗口可以一次发送多条数据,提高性能。
流量控制虽然可以高效的发送大量数据,但如果在刚开始数据量过大就会导致网络拥堵,这就出现了拥塞控制。
拥塞控制就是防止发送发发送的太快,避免过多数据注入到网络中。而流量控制是防止发送方发的太快,耗尽接收方资源,使接收方来不及处理。
拥塞控制的方法:(会出现的丢包现象,发送端怎么知道已经丢包了呢?①定时器超时;②收到了三个重复ACK)
①慢启动:不要一开始就发送大量的数据先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小。
②拥塞避免对拥塞窗口大小使用加增乘减的方法。
加增:执行拥塞避免算法之后,在收到对所有报文段的确认之后,就把拥塞窗口增加一个MSS大小,使拥塞窗口缓慢增大。
乘减:出现一次超时(网络拥塞)之后就把慢启动门限设为当前拥塞窗口的1/2。
当网络频繁出现拥塞时,慢启动的门限下降的很快,大大减少注入到网络中的分组数。
③快恢复
④快重传
拥塞控制通常是全局性的,会涉及到网络中的所有主机、路由器以及会降低网络传输性的所有因素。流量控制只发生在接收端和发送端,是点对点之间的。
流量控制和拥塞控制的相同点:
①现象都是丢包
②实现机制都是让发送方发慢一点,少发一点
不同点:
①丢包位置不同:流量控制---->接收端,拥塞控制---->路由器
②作用对象不同:流量控制---->接收端,怕发送太快,接收方来不及处理
拥塞控制---->网络,怕发送太快,造成网络拥堵