PassFront
  1. PassFront
  2. База знаний
  3. Модели OSI и TCP/IP

Как происходит установка и завершение TCP-соединения?

Модели OSI и TCP/IP

Соединение открывается трёхшаговым рукопожатием SYN → SYN-ACK → ACK, а закрывается обменом FIN и ACK в обе стороны с состоянием TIME_WAIT у инициатора.

Установка соединения

  1. Клиент шлёт SYN со своим начальным номером последовательности.
  2. Сервер отвечает SYN-ACK: свой номер плюс подтверждение клиентского.
  3. Клиент шлёт ACK — соединение установлено, можно передавать данные.

Три шага нужны, чтобы обе стороны подтвердили и свои, и чужие стартовые номера последовательности.

Завершение

  • Каждая сторона закрывается независимо: FIN → ACK, затем то же в обратную сторону — обычно четыре сегмента.
  • Инициатор остаётся в TIME_WAIT (1–2 минуты), чтобы дошли запоздавшие сегменты и порт не переиспользовался преждевременно.
  • RST — мгновенный разрыв соединения без обмена FIN.

Практика

  • SYN-flood — классическая DoS-атака на полуоткрытые соединения; лечится SYN cookies.
  • Много TIME_WAIT на клиенте — повод включить keep-alive и пулы соединений.

Коротко для собеседования

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

Другие вопросы раздела