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.