Открыть сервисСервис

TCP и UDP — транспортные протоколы сети

TCP (Transmission Control Protocol, протокол управления передачей данных) и UDP (User Datagram Protocol, протокол пользовательских датаграмм) — два основных транспортных протокола набора TCP/IP, обеспечивающих обмен данными между приложениями на разных узлах компьютерной сети. Оба работают поверх сетевого (IP) уровня и служат для передачи данных между процессами, идентифицируемыми по номерам портов. TCP обеспечивает надёжную, ориентированную на соединение передачу с контролем потока и повторной передачей потерянных данных, тогда как UDP работает без установления соединения и не гарантирует доставку.

Общие принципы

TCP и UDP входят в транспортный уровень модели OSI и стека TCP/IP. Оба протокола используют номера портов для мультиплексирования: каждое приложение, принимающее или отправляющее данные, привязывается к конкретному порту (0–65535). Источник и назначение определяются парой «IP-адрес + порт», которая образует сокет. Оба протокола инкапсулируют данные в сегменты (TCP) или датаграммы (UDP) с заголовками, добавляемыми к полезной нагрузке, и передают их на IP-уровень для маршрутизации.

TCP

Устройство и принцип работы

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

Каждый TCP-сегмент содержит порядковый номер байта и номер подтверждения (ACK), что позволяет принимающей стороне обнаруживать пропуски, дубли и нарушение порядка. Потерянные данные передаются повторно. Механизм контроля потока (окно) регулирует скорость отправки в зависимости от загруженности канала и приёмных буферов. Алгоритмы контроля перегрузки (Reno, CUBIC, BBR) предотвращают чрезмерную нагрузку на сеть.

Заголовок

Заголовок TCP минимален 20 байт и включает номера портов источника и назначения, порядковый номер, номер подтверждения, размер заголовка, флаги (SYN, ACK, FIN, RST, PSH, URG), размер окна, контрольную сумму и указатель срочности.

Применение

TCP используется там, где критична точность данных: HTTP, HTTPS, FTP, SMTP, SSH, базы данных, удалённый доступ.

UDP

Устройство и принцип работы

UDP не устанавливает соединения: отправитель просто формирует датаграмму с заголовком и передаёт её. Заголовок UDP состоит всего из 8 байт: номера портов источника и назначения, длины датаграммы и контрольной суммы. Протокол не подтверждает получение, не повторяет передачу и не упорядочивает пакеты. Если датаграмма теряется, приложение само решает, как поступить.

Применение

UDP применяется в сценариях, где важна минимальная задержка, а потери допустимы или обрабатываются на уровне приложения: DNS, стриминговое видео и аудио, онлайн-игры, видеоконференции, VoIP, IoT-протоколы (MQTT на UDP), сетевые игры и служебные протоколы (DHCP, SNMP, TFTP).

Сравнение

ХарактеристикаTCPUDP
СоединениеОриентирован на соединениеБез соединения
НадёжностьГарантия доставки, повторная передачаНет гарантий
Порядок данныхСохраняетсяНе гарантируется
Контроль потокаЕстьНет
ЗаголовокОт 20 байт8 байт
СкоростьНиже из-за накладных расходовВыше
МультикастНе поддерживаетсяПоддерживается
Примеры протоколовHTTP, FTP, SMTP, SSHDNS, DHCP, VoIP, стриминг

Квик (QUIC)

В 2012–2016 годах инженеры Google разработали протокол QUIC, работающий поверх UDP и сочетающий надёжность TCP с низкой задержкой. QUIC был стандартизирован IETF в 2021 году (RFC 9000) и лёг в основу HTTP/3. В России QUIC поддерживается крупнейшими сервисами, в частности технологией Qrator Labs и некоторыми CDN.

Развитие протоколов

TCP появился в 1974 году в работе Винтона Серфа и Роберта Кана, описывающей пакетную сеть ARPANET. Стандарт RFC 793 опубликован в 1981 году. UDP описан в RFC 768 (1980). Оба протокола остаются фундаментом интернета; их развитие продолжается через расширения (TCP Fast Open, MPTCP, ECN) и новые протоколы транспортного уровня.

Источники:

  • RFC 793 — Transmission Control Protocol
  • RFC 768 — User Datagram Protocol
  • RFC 9000 — QUIC: A UDP-Based Multiplexed and Secure Transport
  • К. Росс, Д. Уотсон. «Компьютерные сети: подход с точки зрения пользователя»
  • А. Таненбаум. «Компьютерные сети»
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru