Насколько я понимаю, медленный запуск TCP используется для компенсации и предотвращения перегрузок и потерь. Когда соединение успешно установлено и используется какое-то время, пропускная способность TCP-соединения становится как можно большей. Каждый раз, когда устанавливается новое соединение, даже если оно является одновременным, используется медленный запуск TCP, запускающий соединение с небольшим размером окна, даже если оба стека TCP уже знают поведение физического уровня.

Почему стеки TCP всегда выполняют медленный запуск, даже если бы они могли запомнить размер окна недавних прежних подключений к одному и тому же партнеру? Не могли бы они безопасно выполнить соответствующий более быстрый запуск и ухудшить соединение после этого, если условия соединения изменятся?

1 ответ1

1

Не безопасно предполагать, что два TCP-соединения, даже между одними и теми же двумя конечными точками, будут проходить по одному и тому же маршруту. Например, нет ничего необычного в том, чтобы распределять нагрузку по нескольким соединениям с учетом задействованных портов.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .