我是靠谱客的博主 端庄高跟鞋,最近开发中收集的这篇文章主要介绍初步了解TCP协议拥塞控制、流量控制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

拥塞控制与流量控制

流量控制

当发送方发送过快时,接受方来不及接受,导致数据丢失。TCP的流量控制是利用了滑动窗口协议,接收方在ACK报文中,加入可接受窗口的大小,反馈给发送方,从而控制发送方发送的数据量。

拥塞控制

拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象。(还是百度百科解释的专业!)那么拥塞控制简单地说就是,过多的数据注入到网络中,避免出现网络负载过大。主要利用:1.慢开始和拥塞避免 2.快重传和快恢复

区别与联系

1.流量控制作用于接收方,控制发送方的发送数据量。拥塞控制作用域网络,防止过多数据流入网络,造成过载。
2.流量控制的作用是在点对点的,一对发送方与接收方。拥塞控制的作用是在全局性网络的,涉及所有影响网络的主机。
3.流量控制是为了预防拥塞,拥塞控制是为了解决拥塞

多说点拥塞控制的东西

在这里插入图片描述
拥塞控制有两个个关键数据:
1.cwnd:拥塞窗口,初始值是1,当发生拥塞时恢复1。
2.ssthresh:慢开始门限。

慢开始

每经过一个传输轮次,拥塞窗口 cwnd 就加倍。一个传输轮次所经历的时间其实就是往返时间 RTT。

“传输轮次”更加强调:把拥塞窗口 cwnd 所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。
例如,拥塞窗口cwnd = 4,这时的往返时间 RTT 就是发送方连续发送 4 个报文段,并收到这 4 个报文段的确认,总共经历的时间。

拥塞避免

每经过一个传输轮次,cwnd+1。

发生拥塞,重传定时器超时

cwnd = 1,ssthresh = max (cwnd/2,2)。

cwnd与ssthresh控制

根据这两个值得关系以及是否发生超时现象,进行拥塞控制。

  • 当 cwnd < ssthresh 时,使用上述的慢开始算法,即,cwnd*2。

  • 当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法,即cwnd+1。

  • 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞控制避免算法。

除此之外,拥塞控制还有一套快重传与快恢复机制

快重传和快恢复

假设,发送方向接受方发送ABCDEF,接收方正常接收到AB,但是没有接收到C就直接接收到了D,那么接收方会直接ACK B,即立即进行重复确认,当收到E、F时,若仍然没有收到C,那么依然会ACK B,这样当发送方连续三次收到重复确认信息后,就不必等待重传计时器到期,而是直接重新发送未被确认数据,即快重传,之后,ssthresh = max (cwnd/2,2),预防网络发生阻塞,由于发送方现在认为网络很可能没有发生阻塞,因此现在不执行慢启动算法,而是把cwnd值设置为慢启动门限减半后的值,然后开始执行拥塞避免算法,拥塞窗口cwnd值线性增大,即快恢复

最后

以上就是端庄高跟鞋为你收集整理的初步了解TCP协议拥塞控制、流量控制的全部内容,希望文章能够帮你解决初步了解TCP协议拥塞控制、流量控制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部