Я кратко прочитал как об управлении потоком, так и о контроле перегрузки, и я не могу понять, почему нам нужны они оба, а не только контроль перегрузки.
Разве мы не можем просто использовать управление перегрузкой и включить получателя в качестве последнего узла? Мне кажется, что управление потоком может быть просто частным случаем управления перегрузкой.
Я просмотрел этот вопрос, я думаю, что у ОП тот же вопрос, что и у меня, но вопрос сформулирован недостаточно хорошо, поэтому ответ неполный.
Предположим, мы отправляем 100 пакетов, но только первые пять из них были подтверждены ACK. Как отправитель узнает, что это медленная сеть или получатель? Да и должно ли это иметь значение? Сеть с получателем не способна принимать достаточно быстро, поэтому отправитель должен работать медленнее.
В чем проблема с такой реализацией?
if (acked() / sent() < THRESHOLD){
transmission_rate(0.5);
}else{
transmission_rate(SOME_RATE); // where SOME_RATE > 0
}
Есть ли что-то, что делает управление потоком, чего не делает управление перегрузкой, что требует управления потоком в протоколе TCP?