TCP использует механизм трехэтапного подтверждения. Я понимаю, как это работает, но мне интересно, почему это не 4 и даже не 5-ходовое? Это потому, что это слишком много накладных расходов и в этом нет необходимости?
Производительность при запуске TCP-соединения определяется временем приема-передачи, и каждая фаза установления связи занимает половину этого времени. Чем больше задержка, тем хуже начальная производительность соединения.
Если бы TCP можно было безопасно и безопасно завершить односторонним рукопожатием, это было бы так, потому что это было бы быстрее. Таким образом, это 3-сторонний вариант не потому, что в 3-х есть какие-то особые достоинства, а потому, что это минимальное количество обменов, необходимых для эффективной работы.
Другими словами, да, ваша оценка совершенно верна: больше шагов в рукопожатии - это больше накладные расходы, и они не нужны.
Сравните это с недавняя попытка "фальстарта" Google SSL сократить квитирование SSL, где кто-то придумал способ сделать на один шаг меньше в протоколе, который, по мнению кого-то, был минимальным.
Даниэль хорошо объяснил в своем ответе, почему трехстороннее рукопожатие является наиболее распространенным методом установки TCP-соединения, но это не единственный способ установить TCP-соединение.
Здесь "одновременное открытие" соединение, при котором каждый клиент выполняет двустороннее рукопожатие. Так же хорошо как раздельное рукопожатие который стал новостью в прошлом году, поскольку его можно использовать как вектор атаки для обхода входящих правил межсетевого экрана и IPS. Также называется внезапной атакой.
Скажем так, трехстороннее рукопожатие является обязательным для обмена сетевой информацией между двумя одноранговыми узлами и получения подтверждения. Пример: максимальный размер сегмента (MSS)
В другом сценарии, если оба клиент / сервер отправляют синхронизацию, одно рукопожатие сокращается до двух.