滑动窗口协议如何实现流量控制

前端精髓

共 965字,需浏览 2分钟

 ·

2021-07-11 13:01

一、关于滑动窗口


1、什么是滑动窗口


滑动窗口是类似于窗口一样的东西,用来告诉发送端一次可以发送数据的大小。即窗口标记了接收端缓存区的大小;


2、滑动窗口出现的原因


(1)对每一个发送的数据段,都要给一个ACK确认应答,收到ACK后发送下一个数据段。这样做大大降低了传递效率。


(2)使用滑动窗口,可以一次发送多条数据,提高性能。


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


(1)接收端将自己缓冲区大小放进TCP头部的“窗口大小”字段,通过ACK告知发送端;


(2)窗口大小是指无需等待确认应答而可以一次连续发送数据的最大值;


(3)操作系统内核为了维护滑动窗口,需开辟发送缓冲区,来记录哪些数据还没有被应答,只有确认应答后才从缓冲区删除;


(4)接收端发现自己缓存区快满了,将窗口大小设置更小发送给发送端,发送端收到后就会减慢发送速度;


(5)接收端发现自己缓冲区满了,将窗口大小设置为0,此时发送端停止发送数据,而是定期发送一个窗口探测数据段,让接收端告诉它的窗口大小;


二、关于流量控制


1、什么是流量控制


流量控制的目标是接收端,防止发送方发的太快,耗尽接收方资源,使接收方来不及处理;


流量控制的机制是丢包。


2、通过滑动窗口实现流量控制


通过设置滑动窗口大小,用ACK告知发送端自己缓存区还有多大,让发送端以合适的速度发送数据


三、关于拥塞控制


1、什么是拥塞控制


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


2、拥塞控制出现的原因


流量控制虽然可以高效的传递大量数据,但是如果刚开始阶段就发送大量数据,可能导致网络拥塞


3、拥塞控制实现的机制


(1)慢启动


(2)加法增加:执行拥塞控制算法后,在收到对报文的确认后,就把拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,防止网络过早出现拥塞;


(3)乘法减少:出现一次超时(网络拥塞)就把慢开始门限值ssthresh设置为当前拥塞窗口值的0.5倍。


4、发送端如何判断网络出现拥塞(丢包)


(1)定时器超时(没有在规定时间内收到某个发出去的包ACK)


(2)收到三个重复的ACK

浏览 28
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报