5.TCP 是如何通过滑动窗口协议实现流量控制和拥塞控制的?

TCP是如何通过滑动窗口协议实现流量控制和拥塞控制的?

滑动窗口协议

1.滑动窗口是什么?

滑动窗口是类似于一个窗口一样的东西,是用来告诉发送端可以发送数据的大小或者说是窗口标记了接收端缓冲区的大小
ps:窗口指的是一次批量的发送多少数据

2.为什么会出现滑动窗口?

在确认应答策略中,对每一个发送的数据段,都要给一个ACK确认应答,收到ACK后再发送下一个数据段,这样做有一个比较大的缺点,就是性能比较差,尤其是数据往返的时间长的时候
使用滑动窗口,就可以一次发送多条数据,从而就提高了性能

3.滑动窗口的一些知识点

(1)接收端将自己可以接收的缓冲区大小放入TCP首部中的“窗口大小”字段,通过ACK来通知发送端
(2)窗口大小字段越大,说明网络的吞吐率越高
(3)窗口大小指的是无需等待确认应答而可以继续发送数据的最大值,即就是说不需要接收端的应答,可以一次连续的发送数据
(4)操作系统内核为了维护滑动窗口,需要开辟发送缓冲区,来记录当前还有那些数据没有应答,只有确认应答过的数据,才能从缓冲区删掉
ps:发送缓冲区如果太大,就会有空间开销
(5)接收端一旦发现自己的缓冲区快满了,就会将窗口大小设置成一个更小的值通知给发送端,发送端收到这个值后,就会减慢自己的发送速度
(6)如果接收端发现自己的缓冲区满了,就会将窗口的大小设置为0,此时发送端将不再发送数据,但是需要定期发送一个窗口探测数据段,使接收端把窗口大小告诉发送端
ps:在TCP的首部中,有一个16为窗口字段,此字段就是用来存放窗口大小信息的
滑动窗口中的数据类型:
1.已发送,但是未确认的
2.可以发送,但未发送的。

流量控制

防止对方发送太快,耗尽接收方的资源,从而使接收方来不及处理
(1)接收端抑制发送端的依据:接收端缓冲区的大小
(2)流量控制的目标是接收端,是怕接收端来不及处理
(3)流量控制的机制是丢包

拥塞控制

防止发送方发的太快,使得网络来不及处理,从而导致网络拥塞;

拥塞控制使用的机制:AIMD\slow start、
slow start: 慢启动
AIMD:
A: additive(加法的) 
I: increase(增加) 
M: multiplicative(乘法的) 
D: decrease(减少) 
即就是加法增加,乘法减少—->加增乘减

加法增加

是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个往返时间),就把拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞

乘法减少

出现一次超时(即出现一次网络拥塞),就把慢开始门限值ssthresh设置为当前的拥塞窗口值乘以0.5
ps:当网络频繁出现拥塞时,ssthresh值就下降的很快,以大大减少注入到网络中的分组数
发送端是如何知道丢包的 :
1.定时器超时

2.收到三个重复的ACK

为什么会有拥塞控制?

因为虽然流量控制可以高效可靠的传递大量的数据,但是如果一开始就进行大量的流量数据传输,则网络就很有可能出现网络拥塞,毕竟网络中的计算机数量太庞大。
拥塞控制的表现为丢包,延时变大。

拥塞控制的工作过程在这里插入图片描述

1.当开始 cwnd初始值为1 随着发送方收到接收方发送的确认,cwnd呈现指数增长 发送1 2 4 8
2.当到达ssthresh的初始值时 开始实施拥塞避免的加法增大,每次收到确认 cwnd增加1
3.假设拥塞窗口的数值增长到24时 网络出现超时,表明网络拥塞
4.则实行乘法减小 ssthresh初始值变为拥塞时的0.5;cwnd初始值为1; 并执行慢开始算法
在这里插入图片描述

流量控制和拥塞控制的区别

1.相同点

(1)现象都是丢包; 
(2)实现机制都是让发送方发的慢一点,发的少一点

2.不同点

(1)丢包位置不同 
流量控制丢包位置是在接收端上 
拥塞控制丢包位置是在路由器上 
(2)作用的对象不同 
流量控制的对象是接收方,拥塞控制的对象是网络,

3.联系

拥塞控制
拥塞控制通常表示的是一个全局性的过程,它会涉及到网络中所有的主机、所有的路由器和降低网络传输性能的所有因素
流量控制
流量控制发生在发送端和接收端之间,只是点到点之间的控制

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页