Разница между TCP и UDP на пальцах: надежность vs скорость для чайников
В чем фундаментальная разница между TCP и UDP?
Каждое действие в сети (отправка письма, звонок в Telegram, открытие сайта) использует один из двух основных транспортных протоколов 4-го уровня модели OSI: TCP или UDP. Неправильный выбор протокола (например, запуск OpenVPN поверх TCP при плохом интернете) приводит к диким задержкам и разрывам связи.
Наглядная сравнительная таблица:
| Характеристика | Протокол TCP (Transmission Control Protocol) | Протокол UDP (User Datagram Protocol) |
|---|---|---|
| Принцип работы | «С гарантией доставки»: отправляет пакет, ждет подтверждения (ACK). Если пакет потерялся, отправляет его снова. | «Выстрелил и забыл»: отправляет поток пакетов на максимальной скорости без проверки доставки. |
| Установление связи | Обязательное 3-стороннее рукопожатие (SYN -> SYN-ACK -> ACK). | Связь не устанавливается (Connectionless). Данные шлются сразу. |
| Целостность данных | 100% гарантия целостности и правильного порядка байтов. | Возможна потеря пакетов и нарушение их очередности. |
| Где используется | Веб-сайты (HTTP/HTTPS), файлы (FTP/SMB), почта (SMTP/IMAP), базы данных (SQL), SSH. | IP-телефония (SIP/VoIP), видеоконференции (Zoom/Meet), онлайн-игры, стриминг, DNS. |
Как работает TCP: пример с заказным письмом
- Клиент шлет запрос: «Привет, хочу передать файл (SYN)».
- Сервер отвечает: «Привет, готов принять (SYN-ACK)».
- Клиент подтверждает: «Начинаю передачу (ACK)».
- Если 5-й фрагмент файла потерялся по дороге, клиент не продолжит сборку, пока сервер не пришлет этот фрагмент повторно. Поэтому при скачивании архива через TCP вы никогда не получите «битый» файл.
Как работает UDP: пример с радиовещанием
- Сервер непрерывно передает голос диктора сотнями маленьких датаграмм в секунду.
- Если из-за помех в Wi-Fi потерялись 2 пакета данных, они не запрашиваются повторно. В телефонной трубке вы услышите еле заметный щелчок или микропаузу на 0.05 секунды.
- Если бы телефония работала по TCP, то при потере пакета разговор замирал бы на 2–3 секунды, а потом все пропущенные слова воспроизводились бы с ускорением, делая диалог невозможным.
Правило для VPN-туннелей (OpenVPN / WireGuard): Всегда настраивайте VPN поверх протокола UDP. Если запустить VPN по TCP, а внутри него пользователь начнет качать файл по TCP, возникнет эффект «TCP-over-TCP Meltdown» — двойное ожидание подтверждений обвалит скорость сети практически до нуля при малейшей потере пакетов.
Частые вопросы (FAQ)
Почему видеоролики на YouTube не заикаются, если они передаются по TCP (HTTPS)?
YouTube использует предварительную буферизацию (кэширование на несколько секунд вперед). Проигрыватель успевает повторно запросить потерянные пакеты до того, как этот момент дойдет до экрана.
Какой протокол быстрее: TCP или UDP?
UDP значительно быстрее, так как не тратит время на рукопожатия, служебные подтверждения доставки и контроль размера окна передачи (Window Size).
Почему DNS запросы идут по протоколу UDP (порт 53)?
DNS-запрос состоит из одного маленького пакета. Отправка по UDP происходит за 1 запрос-ответ. Использовать тяжелое рукопожатие TCP ради резолва одного домена крайне неэффективно.
Что такое современный протокол QUIC (HTTP/3)?
QUIC — это новый интернет-протокол от Google, который работает поверх быстрого UDP, но реализует надежность и шифрование прямо на прикладном уровне, ускоряя загрузку сайтов.