TCP的流控、滑动窗口和拥塞窗口的简单介绍

        嘿嘿,感觉会有人区别不开,所以就开了这一篇博客。当然这几个知识点网上介绍的非常多,我就不重复详细介绍了,可以看看下面两篇推荐的博客。

TCP滑动窗口_我要出家当道士-CSDN博客

滑动窗口与拥塞窗口有什么区别?_我要出家当道士-CSDN博客_滑动窗口和拥塞窗口的区别

TCP拥塞控制简析_我要出家当道士-CSDN博客

         接下来长话短说。

        大家应该都知道TCP是一个可靠的传输协议,它有个ACK确认机制,每个packet都要确认,如果接收端没有收到ACK,会重发。如果发一个包确认一个包,这样效率太低了,就像你吃米饭,一个米粒一个米粒的吃,令人捉急;所以TCP引入了滑动窗口,可以一次性的发送一个滑动窗口的数据包,具体的滑动机制去上面的链接看看吧。

        引入滑动窗口无疑增加了TCP的吞吐量,这时候还需要引入流控,就像吃饭,吃的太多咽不下去,还会撒的到处都是。流控其实很简单,就是根据接收端的实际接收处理能力(接收端缓冲区大小限制)确定发送端窗口的大小。TCP首部中,专门有一个字段(windows,最大为65535字节)用来通知窗口大小。接收主机将自己可以接收的缓冲区大小放入这个字段中通知给发送端。这个字段的值越大,说明网络的吞吐量越高。这个窗口的值是会动态调整的。

        拥塞窗口考虑的是整个网络环境,这个举个不恰当的例子,就像吃席,大家都想多吃些,但饭菜就那么多,一次性吃的太多有人生气掀桌子,大家都吃不了,所以只能不断的试探一点一点的多吃些。传统的拥塞控制算法如下图所示。慢开始是指数型增长,到达ssthresh阈值后,变线性增长。如果发生重传则重新开始(ssthresh = cwnd / 2 ; cwnd = 1;)。

         如果加上快速重传,则是下图这样。区别在于如果网络中个别包丢失,可能并不是网络发生阻塞,这时候直接将cwnd = 1,十分影响效率的。我们知道ACK是发生乱序之前的未接收的下一个数据包序列号,如果发生乱序,会重复发送下一个未正常接收的数据包序列号。快速重传即如果连续三次收到重复确认,则立即重传该包,同时稍微降低cwnd(例如降一半),这样做的好处是,避免触发超时重传机制,提高效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我要出家当道士

打赏是不可能,这辈子都不可能

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值