【问题标题】:TCP: Why do we need flow control and congestion controlTCP:为什么我们需要流量控制和拥塞控制
【发布时间】:2021-08-02 21:34:26
【问题描述】:

我已经简要阅读了流量控制和拥塞控制,但我不明白为什么我们需要它们,而不仅仅是拥塞控制。

我们不能只使用拥塞控制并将接收器作为最后一个节点吗?在我看来,流量控制可能只是拥塞控制的一个特例。

我看过这个question,我认为OP和我有同样的问题,但问题的表述不够好,因此答案不完整。

假设我们发送了 100 个数据包,但只有前五个数据包被确认。发送者如何知道是网络慢还是接收者慢?它真的很重要吗?接收方的网络接收速度不够快,因此发送方应该放慢速度。

这样的实现有什么问题?

if (acked() / sent() < THRESHOLD){
    transmission_rate(0.5);
}else{
    transmission_rate(SOME_RATE); // where SOME_RATE > 0
}

在 TCP 协议中是否有一些流量控制不需要拥塞控制而需要流量控制?

【问题讨论】:

    标签: tcp flow-control


    【解决方案1】:

    我认为作者here 解释得很好。

    本质上,您是对的,拥塞控制和流量控制之间存在一些重叠。但是,它们都以不同的方式发挥作用。例如,网络可能足够大,两者都需要。

    想象一下,将树莓派连接到具有千兆网络的超级计算机。现在,这个例子很愚蠢,但可以用于说明目的。发送方(超级计算机)和网络可能很好地支持高速,但如果 pi 的接收缓冲区较低,那么快速发送就没有多大意义了。出于这个原因,接收方将公布其发送窗口,以便发送方知道对方可以多快处理数据。这样,它将限制通过网络成功发送数据但接收方无法处理并需要丢弃它的情况。一般来说,通过网络发送更少的字节是一个好主意,因为它有助于防止可能的拥塞。

    【讨论】:

      猜你喜欢
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 2016-02-01
      相关资源
      最近更新 更多