Короткий ответ
TCP — протокол с установлением соединения, гарантирующий доставку, порядок пакетов и контроль перегрузки ценой дополнительных задержек; UDP — протокол без установления соединения и без гарантий доставки/порядка, зато с минимальными накладными расходами и задержкой.
Как это работает подробнее
TCP использует механизм подтверждений (ACK), повторной передачи потерянных сегментов и скользящего окна для управления скоростью отправки, что требует хранения состояния соединения на обеих сторонах; UDP просто отправляет датаграммы в сеть без подтверждений и без состояния соединения.
Пример кода
commands.sh
ss -tulpn | head -10Что использовать на практике
- Практика. TCP выбирают, когда важна целостность и порядок данных (HTTP, базы данных, SSH), а UDP — когда важнее низкая задержка и допустима потеря части данных или надёжность реализуется на уровне приложения (DNS-запросы, стриминг видео, игры, протоколы телеметрии вроде части gRPC/QUIC поверх UDP).
Подводные камни
- Риск. Частая ошибка — считать UDP «ненадёжным и поэтому плохим протоколом»: в реальности это осознанный компромисс в пользу скорости, а надёжность при необходимости достраивается самим приложением (повторные запросы, подтверждения на уровне протокола).