3.5. TCP и UDP: надёжность против скорости

Опубликовано: 11.04.2026

 

← 3.4. IP-адреса и маршрутизация 📋 Оглавление 3.6. DNS, HTTP, HTTPS →
КАК УСТРОЕНО ВСЁ — статья 3.5

TCP и UDP: надёжность против скорости

Как данные гарантированно доходят до цели - и почему иногда надёжность специально отключают

В предыдущих статьях мы разобрались, как пакеты режутся на кусочки, как IP-адреса позволяют пакету найти получателя через тысячи маршрутизаторов. Но у IP есть один принципиальный изъян: он ничего не гарантирует. Пакет отправлен - дошёл ли он? IP не знает. Пришли ли все части файла? IP не считает. Пришли ли они в правильном порядке? IP безразлично.

Именно поэтому поверх IP работают два протокола транспортного уровня: TCP и UDP. Один одержимо следит за каждым пакетом и требует подтверждения. Другой просто стреляет данными в эфир и не оглядывается. У обоих есть своя область применения - и понять, почему, важно для понимания того, как вообще работает интернет.

📬 Проблема, которую решает транспортный уровень

Представьте, что IP — это почтальон, который развозит письма. Он знает адреса и умеет ориентироваться на улицах. Но он не фиксирует, дошло ли письмо. Не складывает многотомное письмо в правильном порядке. Не звонит, если потерял конверт. Просто берёт и везёт.

TCP - это заказное письмо с уведомлением о вручении и описью вложения. Если страница из письма потерялась, почта сама её дошлёт. UDP - это когда вам кидают листовки в окно на ходу. Кто успел поймать - тот прочитал, остальные улетели.

Для многих задач этого мало. Если вы скачиваете браузером страницу сайта, вам нужны все её части и именно в том порядке, в котором сервер их отправил. Пропустите один фрагмент - страница сломается или отобразится неправильно. Здесь нужна гарантия.

Для других задач гарантия вредна. Если вы разговариваете по видеосвязи, и один пакет с изображением потерялся - проще пропустить этот кадр, чем ждать пересылки, которая придёт уже через полсекунды и окажется совершенно бесполезной. Здесь нужна скорость.

TCP решает первую задачу. UDP - вторую.

🤝 TCP: протокол с рукопожатием

TCP расшифровывается как Transmission Control Protocol - протокол управления передачей. Его ключевые слова: «управление» и «контроль». TCP не просто отправляет данные - он организует целый ритуал из трёх шагов перед тем, как передача начнётся.

Тройное рукопожатие

Прежде чем передать хоть байт данных, TCP устанавливает соединение. Это называется тройным рукопожатием (three-way handshake):

📌 Почему именно три шага? Двух недостаточно: клиент скажет «хочу соединиться», сервер ответит «окей» - но клиент не подтвердит, что ответ сервера дошёл. Четыре шага - избыточно. Три - минимально необходимое число для взаимной синхронизации. Это математически доказано ещё в 1970-х.

Порядковые номера и подтверждения

Каждый байт данных в TCP-соединении имеет порядковый номер. Отправив пакет, отправитель ждёт подтверждения - пакет ACK с номером следующего ожидаемого байта. Если подтверждение не пришло за определённое время - пакет отправляется заново.

Именно это делает TCP надёжным: потеря пакета не остаётся незамеченной. Отправитель не двигается вперёд, пока не убедится, что предыдущие данные дошли. Получатель не передаёт данные приложению в неправильном порядке: если пришли пакеты 1, 3, 4, а пакет 2 ещё в пути - TCP буферизует 3 и 4 и ждёт 2. Важная оговорка: «гарантия» доставки работает, пока связь физически возможна. Если пакеты теряются слишком долго - TCP в итоге «сдаётся» и разрывает соединение по таймауту. Именно поэтому при очень плохом интернете загрузка файла обрывается, а не ждёт бесконечно.

Управление потоком и перегрузкой

TCP делает ещё кое-что умное: он регулирует скорость передачи. Если получатель не успевает обрабатывать данные, он сообщает об этом через поле «размер окна» - и отправитель притормаживает. Это называется управлением потоком.

Есть и более тонкий механизм - управление перегрузкой. Если пакеты начинают теряться (что говорит о перегруженности маршрутизатора где-то на пути), TCP самостоятельно снижает скорость, не дожидаясь команды. TCP ведёт себя как вежливый участник дорожного движения: видит пробку - сбавляет ход, не давит на клаксон.

💡 Алгоритм медленного старта: В начале нового соединения TCP не знает, на какой скорости работает канал. Поэтому он начинает с малого: отправляет немного пакетов, получает подтверждения, удваивает количество, снова получает подтверждения, удваивает - и так до тех пор, пока не начнутся потери или не будет достигнут предел. Именно поэтому загрузка файла в первые секунды идёт медленнее, чем потом.

Закрытие соединения

Завершение TCP-соединения тоже не мгновенное. Используется четырёхшаговый обмен: каждая сторона по очереди говорит «я закончил отправку» (FIN) и получает подтверждение (ACK). Это нужно, чтобы обе стороны убедились: все данные переданы и приняты, можно освобождать ресурсы.

📡 UDP: быстро и без гарантий

UDP - User Datagram Protocol, протокол пользовательских дейтаграмм. Его философия противоположна TCP: никакого рукопожатия, никаких подтверждений, никакого отслеживания порядка. Отправил - забыл.

Заголовок UDP занимает всего 8 байт против минимум 20 у TCP. В нём только четыре поля: порт отправителя, порт получателя, длина и контрольная сумма. Всё. Никаких порядковых номеров, никаких флагов, никакого состояния соединения.

Характеристика TCP UDP
Установка соединения Тройное рукопожатие (≈1 RTT) Нет
Гарантия доставки Да, с повторной отправкой Нет
Порядок пакетов Гарантирован Не гарантирован
Обнаружение потерь Да Нет (опционально на уровне приложения)
Управление потоком Да Нет
Управление перегрузкой Да Нет
Размер заголовка 20–60 байт 8 байт
Задержка Выше (из-за рукопожатия и подтверждений) Минимальная
Применение HTTP/S, почта, скачивание файлов Видео, голос, DNS, игры

Зачем нужен протокол без гарантий?

Казалось бы, зачем использовать ненадёжный протокол? Ответ: потому что «надёжность» TCP стоит времени. Рукопожатие добавляет задержку ещё до начала передачи. Ожидание подтверждений тормозит поток. Повторная отправка потерянных пакетов — это дополнительные циклы ожидания.

Для потоковых приложений - видеозвонков, онлайн-игр, стриминга - задержка важнее потери нескольких пакетов.

Возьмём видеозвонок. Видео передаётся со скоростью 30 кадров в секунду. Каждый кадр разбивается на UDP-пакеты и летит к собеседнику. Если один пакет потерялся - он уже неактуален: к моменту, когда его удалось бы переслать, на экране должен быть уже следующий кадр. Ждать его бессмысленно. Приложение просто пропустит этот кадр или воспроизведёт предыдущий. Вы заметите лёгкое «замерзание» картинки на долю секунды - но разговор продолжится.

Если бы видеозвонок работал через TCP, любая потеря пакета останавливала бы поток - всё замирало бы на несколько сотен миллисекунд до получения повторного пакета. Именно такой эффект вы видите, когда YouTube «буферизует»: он использует TCP, и при потере пакетов видео встаёт.

📌 DNS тоже использует UDP: Когда вы вводите адрес сайта, ваш компьютер отправляет DNS-запрос: «Какой IP-адрес у этого домена?» DNS работает через UDP - запрос маленький, ответ маленький, задержки нежелательны. Если ответ не пришёл - компьютер просто отправит запрос ещё раз. Это быстрее, чем устанавливать полноценное TCP-соединение ради одного вопроса.

🎮 Пинг: почему одна цифра решает всё в играх

Пинг — это время, за которое пакет уходит от вас к серверу и возвращается обратно. Его измеряют в миллисекундах и обозначают RTT - Round Trip Time, время кругового путешествия.

Технически пинг измеряется отправкой крошечного ICMP-пакета с эхо-запросом и фиксацией времени до получения ответа. Команда ping google.com в командной строке покажет это время в реальности.

Почему пинг критичен для онлайн-игр

В сетевой игре каждое ваше действие - движение, выстрел, нажатие кнопки - отправляется на сервер, сервер вычисляет результат и рассылает обновлённое состояние всем игрокам. Пинг — это время между «я нажал кнопку» и «сервер это зафиксировал».

При пинге 20 мс ваш выстрел регистрируется на сервере через 10 мс после нажатия (половина RTT). При пинге 200 мс - через 100 мс. Разница в 90 мс — это пропасть: противник уже успел уйти за укрытие.

Пинг Ощущение в игре Типичная причина
< 20 мс Идеально, незаметная задержка Сервер в своём городе, кабель
20–50 мс Отлично, профессиональный уровень Сервер в соседней стране
50–100 мс Хорошо для казуальных игр Сервер в другом регионе
100–150 мс Заметная задержка, дискомфорт Далёкий сервер или Wi-Fi с помехами
150–300 мс Ощутимые «лаги», сложно играть Перегруженная сеть или VPN
> 300 мс Почти невозможно, явные «телепорты» Серьёзные проблемы с сетью

Именно поэтому игровые серверы ставят в нескольких регионах: игрок из Минска подключается к серверу в Варшаве, а не в Лос-Анджелесе. Скорость света в оптоволокне - около 200 000 км/с. Расстояние в 9000 км до американского сервера и обратно добавляет минимум 90 мс только за счёт физики, даже в идеальной сети.

Джиттер: нестабильный пинг хуже высокого

Ещё одна важная характеристика - джиттер (jitter), разброс задержки. Если пинг 50 мс стабильно — это хорошо. Если пинг скачет от 20 до 200 мс — это катастрофа, даже если среднее значение невысокое.

При нестабильном пинге игра не может предсказать, когда придёт следующий пакет. Это приводит к «телепортации» противников: они появляются не там, где ожидались. В видеозвонке джиттер слышен как прерывистый звук и «заикание» изображения.

Wi-Fi в многоквартирном доме - главный источник джиттера. Десятки сетей работают в одном эфире, пакеты конкурируют за канал, задержки непредсказуемы. Кабель значительно стабильнее.

💡 Буферизация как компромисс: Стриминговые сервисы - YouTube, Netflix - намеренно загружают несколько секунд вперёд и держат «запас» видео. Это позволяет сглаживать и джиттер, и временные потери пакетов. Видео выглядит плавным, даже если сеть нестабильна. Цена - задержка начала воспроизведения. Поэтому прямые трансляции живут с задержкой 5–30 секунд: именно это время нужно на буферизацию.

🔢 Порты: кому именно адресован пакет

IP-адрес указывает, на какой компьютер доставить пакет. Но на компьютере одновременно работают десятки программ: браузер, мессенджер, почтовый клиент, игра. Как разобраться, кому из них предназначен пакет? Для этого служат порты.

Порт — это просто число от 0 до 65535, которое указывается в заголовке TCP или UDP рядом с IP-адресом. Можно думать о нём как о номере квартиры: IP — это улица и дом, порт - квартира.

Некоторые порты закреплены за конкретными службами по стандарту:

Порт Протокол Назначение
80 TCP HTTP - обычные веб-сайты
443 TCP HTTPS - защищённые веб-сайты
53 UDP DNS - запросы доменных имён
25 TCP SMTP - отправка электронной почты
22 TCP SSH - удалённое управление сервером
3074 UDP Xbox Live - игровой трафик

Когда браузер открывает сайт, он создаёт соединение с портом 443 на сервере. Одновременно параллельно мессенджер поддерживает соединение с портом 5222, почтовый клиент - с портом 993. Операционная система знает, какому приложению принадлежит каждый порт, и маршрутизирует входящие пакеты нужному процессу.

📌 Исходящий порт выбирается случайно: Когда ваш браузер подключается к серверу на порту 443, свой порт он выбирает случайно из диапазона 49152–65535. Именно по этой паре «ваш порт : порт сервера» ОС отличает ответ вашего браузера от ответа другой вкладки или другой программы. Это называется сокетом: комбинация IP-адреса и порта на обоих концах однозначно идентифицирует соединение.

🆕 QUIC: когда TCP устарел, но его не выбросить

TCP создавался в 1970-х годах. Тогда не было HTTPS, не было мобильных сетей, не было сайтов с десятками параллельных запросов. За полвека накопились проблемы.

Главная - блокировка заголовка очереди (Head-of-Line Blocking). Если один пакет теряется, весь поток TCP-данных встаёт и ждёт его повторной отправки. В HTTP/2 браузер отправляет несколько запросов через одно соединение - и потеря одного пакета тормозит все остальные запросы сразу. Представьте кафе: вы заказали суп, салат и десерт. В обычном TCP официант несёт их строго по очереди - уронил суп, стоит и ждёт нового, а салат и десерт уже готовы, но вам не отдаёт. В QUIC каждое блюдо едет на отдельном подносе: уронил суп - салат и десерт всё равно принесут, суп докинут отдельно.

В 2012 году Google начал разрабатывать протокол QUIC, который работает поверх UDP, но реализует надёжность TCP прямо внутри себя - только более умно. Каждый поток данных независим: потеря пакета в одном потоке не блокирует остальные. Рукопожатие совмещено с установкой шифрования, что сокращает задержку. QUIC лежит в основе HTTP/3 - актуальной версии протокола, по которому работает большинство современных сайтов.

💡 Почему QUIC поверх UDP, а не новый протокол? Потому что промежуточное оборудование - маршрутизаторы, корпоративные файрволы - хорошо знает TCP и UDP и пропускает их. Новый транспортный протокол пришлось бы поддерживать на миллионах устройств по всему миру. Проще встроить новую логику в UDP-пакеты: они пройдут везде, где проходит UDP.

🔄 Как всё работает вместе: один HTTP-запрос изнутри

Сведём всё воедино. Вы вводите адрес сайта в браузере и нажимаете Enter. Что происходит на уровне TCP/UDP?

Шаг Протокол Что происходит
1. Имя → адрес UDP, порт 53 DNS-запрос: «Какой IP у этого домена?» Ответ приходит за 1–50 мс
2. Рукопожатие TCP TCP, порт 443 SYN → SYN-ACK → ACK. Занимает 1 RTT - один «туда-обратно»
3. TLS-рукопожатие TCP, порт 443 Установка шифрования для HTTPS. Ещё 1–2 RTT
4. HTTP-запрос TCP, порт 443 Браузер отправляет «GET / HTTP/2» - запрашивает страницу
5. Передача данных TCP, порт 443 Сервер отправляет HTML, CSS, картинки - с подтверждениями каждого блока
6. Закрытие TCP, порт 443 FIN → ACK → FIN → ACK. Соединение завершено

Итого на простую загрузку страницы уходит минимум 3–4 RTT ещё до того, как сервер начал отправлять данные. При пинге 50 мс это уже 150–200 мс задержки только на «формальности». Именно поэтому скорость открытия сайтов зависит не только от пропускной способности канала, но и от физического расстояния до сервера.

📊 Итог: когда что выбирать

TCP и UDP — не конкуренты. Это инструменты для разных задач. Разработчик выбирает протокол исходя из природы приложения: нужна ли целостность данных или важнее минимальная задержка.

Задача Протокол Почему
Загрузка веб-страницы TCP (HTTP/HTTPS) Нужны все байты в правильном порядке
Видеозвонок (Zoom, Teams) UDP Потеря кадра лучше, чем ожидание
Онлайн-игра (позиции, действия) UDP Минимальная задержка критична
Скачивание файла TCP Файл должен быть целым и неповреждённым
DNS-запрос UDP Один вопрос - один ответ, быстро
Потоковое видео (Netflix, YouTube) TCP (с буфером) Пропуск кадра недопустим, буфер компенсирует задержку
Современные сайты (HTTP/3) QUIC (поверх UDP) Надёжность TCP + низкая задержка UDP

Транспортный уровень - невидимый слой, который мы принимаем как должное. Но именно он определяет, будет ли видеозвонок плавным, «залагает» ли игра при одном потерянном пакете и как быстро откроется сайт. Строгость TCP и легкомыслие UDP - не недостатки, а осознанные компромиссы, каждый из которых нужен на своём месте.

В следующей статье мы поднимемся ещё на уровень выше: разберём, что происходит после того, как TCP-соединение установлено, - как браузер и сервер разговаривают по протоколам DNS, HTTP и HTTPS, и что происходит за те секунды от нажатия Enter до появления страницы на экране.


📍 Привезите технику в сервис ANY.BY — диагностика бесплатно, работаем без выходных.
🚗 Не можете приехать — вызовите мастера на дом.
🛒 Ноутбуки, компьютеры и комплектующие — магазин magaz.by.

📞 +375 (33) 323-70-00 (МТС) | +375 (29) 323-70-00 (A1)
✉️ Telegram | Viber

➡️ Смотреть полный прайс-лист →

← 3.4. IP-адреса и маршрутизация 📋 Оглавление 3.6. DNS, HTTP, HTTPS →
Расписание работы · ул. Куйбышева, 26
Пн–Пт 10:00–19:00
Суббота 11:00–17:00
Воскресенье 12:00–16:00

★★★★★ 4.8 · 161 отзыв в Google
★★★★★ 4.8 · 41 отзыв в Яндекс
И
Иван
февраль 2024
★★★★★

Быстро починили системник. Мастер вежливый, цены нормальные.

А
Александр Н.
ноябрь 2023
★★★★★

Понадобилось срочно починить ноутбук для работы. Сделали за один день. Очень выручили, спасибо!

Ю
Юлия М.
февраль 2023
★★★★★

Очень довольна результатом. Всё работает исправно, спасибо большое!

А
Андрей
январь 2025
★★★★★

Отличный сервис, рекомендую. Сделали быстро и качественно.

Д
Дмитрий Л.
февраль 2021
★★★★★

Юбилейный отзыв!) Сервис на высшем уровне. Качество, скорость, отношение — всё 10 из 10.

П
Павел Карпович
февраль 2026
★★★★★

Замечательный сервис с приятными и отзывчивыми людьми. На протяжении всего ремонта держали в курсе что да как с устройством. Ремонтом очень доволен буду всем рекомендовать

С
Сергей К.
апрель 2024
★★★★★

Ремонтировал здесь видеокарту. Мастер — профи, всё объяснил, показал. Рекомендую.

Д
Дмитрий
январь 2026
★★★★★

Спасибо большое за качественную и быструю работу!!! Рекомендую!

Н
Наталья Д.
апрель 2023
★★★★★

Быстро, качественно и недорого. Всем советую обращаться именно сюда.

В
Владимир
май 2024
★★★★★

Отличный сервис. Всё сделали быстро и качественно. Буду обращаться ещё.


📖 Как устроен компьютер

Цикл статей ANY.BY - от транзистора до интернета.
Простым языком, без лишней теории.

🎓 Читать учебник →