
Насколько я понимаю, медленный старт TCP используется для компенсации и предотвращения перегрузки и потерь. Когда соединение успешно установлено и используется некоторое время, пропускная способность соединения TCP максимально возможная. Каждый раз, когда устанавливается новое соединение, даже если они параллельны, используется медленный старт TCP, запуская соединение с небольшим размером окна, хотя оба стека TCP уже знают поведение физического уровня.
Почему TCP-стеки всегда выполняют медленный старт, хотя они могли бы запомнить размер окна недавних бывших подключений к тому же партнеру? Не могли бы они безопасно выполнить соответствующий более быстрый старт и ухудшить соединение впоследствии, если условия соединения изменятся?
решение1
Небезопасно предполагать, что два TCP-соединения, даже между теми же двумя конечными точками, будут использовать один и тот же маршрут. Например, не является чем-то необычным балансировка нагрузки между несколькими соединениями, которая учитывает задействованные порты.
Это может показаться странным выбором, но это имеет смысл, поскольку производительность TCP может пострадать, если много пакетов получено не по порядку, а привязка соединения к маршруту позволяет этого избежать. Часто исходный IP, целевой IP, протокол, исходный порт (если применимо) и порт назначения (если применимо) хэшируются, и хэш используется для выбора следующего перехода.