intermediate

TCP и UDP

Сравнивайте reliable ordered TCP streams с lightweight UDP datagrams, включая handshakes, retransmission, congestion control и QUIC usage.

TCP даёт надёжный упорядоченный поток байтов с установкой соединения, подтверждениями, повторной передачей и контролем перегрузки. UDP отправляет дейтаграммы без гарантий доставки — меньше накладных расходов, подходит для real-time или трафика, терпимого к потерям. HTTP/3 работает поверх QUIC на UDP со встроенным шифрованием и мультиплексированием.

					Client                    Server
  |---- SYN -------------->|
  |<--- SYN-ACK -----------|
  |---- ACK -------------->|
  |==== data stream ======>|
				

| Свойство | TCP | UDP | |----------|-----|-----| | Надёжность | Повтор потерянных сегментов | Best effort | | Порядок | Доставка по порядку | Порядок на приложении | | Соединение | 3-way handshake | Нет | | Типичное применение | HTTP/1.1, HTTP/2, БД | DNS, QUIC, VoIP |

На интервью: почему Node-сервис с множеством исходящих TCP-соединений упирается в лимит ephemeral ports; когда UDP уместен; как QUIC меняет head-of-line blocking относительно TCP.

Типовые ошибки: «async HTTP» не убирает стоимость TCP handshake; накопление сокетов в TIME_WAIT; UDP там, где нужен порядок, без логики приложения.

Компромисс: надёжность и fairness против latency и простоты — выбирайте транспорт под допустимые сбои.

Чеклист:

  • Назовите TCP handshake и вклад RTT.
  • Сравните UDP-дейтаграммы и TCP-потоки.
  • Упомяните QUIC/HTTP/3 поверх UDP.
  • Свяжите reuse соединений с latency в Node agents.