2016-05-27 1 views
1

Я думал о алгоритме медленного запуска tcp и об общей проблеме при передаче многих файлов по сети tcp/ip.Является ли алгоритмом медленного запуска TCP причиной медленной передачи многих отдельных файлов?

Если вы перенесите много небольших файлов (т. Е. Размер: 50kb, количество: 10 000), это займет гораздо больше времени, чем если вы перенесите один и тот же объем данных (50kb * 10,000 = 500 000 kb) сразу. И для меня это вероятная причина, что tcp slowstart - одна из причин этого (конечно, есть другие вещи, такие как накладные расходы, ...).

Если я правильно понял slowstart, то он увеличивает максимальный объем данных, которые могут быть переданы без подтверждения от получателя. Если мы установим новое соединение для каждого файла, slowstart вызывает низкую пропускную способность в начале каждой передачи, и поскольку алгоритм медленного запуска увеличил пропускную способность - наш файл переносится и запускаются новые подключения. И поэтому мы никогда не достигнем оптимизированной пропускной способности. С другой стороны, если мы переносим один большой файл, slowstart оптимизирует максимальный неподтвержденный объем данных и поэтому мы можем достичь гораздо более высокой пропускной способности.

Правильно ли это предположение? И еще вопрос: Является ли реализация slowstart одинаковой для c или C++ и .net?

И, пожалуйста, не см. Это дубликат «Почему мои передачи файлов медленные?», Я спрашиваю, является ли алгоритм медленного запуска причиной того, что перенос многих небольших файлов происходит медленно.

ответ

1

Нет, это не совсем правильно. Медленный запуск относится к соединению, а не к отдельным файлам, отправленным по одному и тому же соединению. Пока соединение установлено, не имеет значения, вы отправляете один большой файл по тому же соединению или 10 меньших файлов.

Решение заключается в разумном использовании соединений. Если вам нужно отправить много вещей, используйте одно соединение (модель HTTP 1.1).

Реализация протокола TCP не имеет ничего общего с языком вашего приложения, он использует тот же стек протоколов, предоставляемый ОС.

+0

нормально звучит логично, повторно используя соединение. – whymatter

+0

Возможно ли, что режим пассивного FTP медленнее, потому что он должен установить новое соединение для каждого файла? – whymatter

+1

@whymatter, пассивный или активный режим FTP, как правило, медленнее, это правильное наблюдение. – SergeyA

Смежные вопросы