20|滑动窗口:TCP是如何进行流量控制和拥塞控制的?
黄清昊
该思维导图由 AI 生成,仅供参考
你好,我是微扰君。
过去几讲,我们一起讨论了最短路算法在网络中的应用,学习了从 Dijkstra 算法思想发展而来的链路状态选路算法,以及从 Bellman-Ford 算法思想发展而来的距离矢量算法。
链路状态算法的每个节点,通过通信,都构建了完整的网络拓扑图,然后根据 Dijkstra 算法独立地计算最短路径,并依据计算结果维护动态路由表;距离矢量算法,则是通过节点间的通信了解邻居到每个不同节点的距离,以此作为选路依据,所以链路上传输的压力比链路状态算法小了很多,但也因为没有全局的信息,网络出现故障时很容易陷入无穷计算问题。
在计算机网络发展以来,类似单源最短路问题的图论算法应用,除了这两大经典算法,其实还有很多,比如最小生成树问题、网络流问题等等,它们都在不同的场景下发挥着巨大的作用,但我们要知道,图论算法也只是解决了网络传输中和“拓扑结构”相关的一小部分问题。
这些算法并不足以让我们的数据在环境复杂的网络上稳定传输,也并没有办法去控制流量传输的快慢,来避免接受方对数据处理不过来,或者网络上数据包太多产生拥塞的情况。为了解决传输本身的问题,自然也有一些经典的算法思想和协议被提出来,TCP 中的滑动窗口、拥塞窗口就是经典的例子。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
TCP协议通过滑动窗口和拥塞控制实现流量控制和拥塞控制,确保可靠有序的传输能力。滑动窗口机制用于控制流量,防止接收方处理不过来消息,而拥塞控制算法则用于处理网络上数据包太多的情况,以避免网络中出现拥塞。发送端的窗口根据发送、接收ACK和接收方通告的处理范围划分为四个部分,以兼顾效率和可靠性。接收端的窗口主要分为已确认的数据、未收到但可以接收的数据和不可接收的区域,通过滑动窗口实现流量控制。拥塞控制机制通过拥塞窗口动态调整发送范围,采用慢启动、拥塞避免、拥塞发生和快速恢复四个算法来调整窗口大小,以应对网络拥塞情况。整体而言,TCP协议通过滑动窗口和拥塞窗口实现了流量控制和拥塞控制,确保了可靠且高效的数据传输。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《业务开发算法 50 讲》,新⼈⾸单¥59
《业务开发算法 50 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- kimoti连续三次收到同样的ACK说明还能收到ACK,表明网络还不是那么拥堵,这样就不止于把拥塞窗口调整到0
作者回复: 嗯嗯 理解正确
2022-01-252 - 西门吹牛有空能给搞一波关于 BBR 的拥堵算法加餐吗2022-01-301
- 那时刻收到三次ack进行重传,是确认网络可用的前提下重传,如果直接超时重传的话,网络的确糟糕,会增加额外的数据包,从而升级网络的压力。 或许可以考虑柔性的策略,而不是硬生的三次ack重传。比如滑动平均来决定是否重传2022-01-25
收起评论