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).
¶Сравнение
| Характеристика | TCP | UDP |
|---|---|---|
| Соединение | Ориентирован на соединение | Без соединения |
| Надёжность | Гарантия доставки, повторная передача | Нет гарантий |
| Порядок данных | Сохраняется | Не гарантируется |
| Контроль потока | Есть | Нет |
| Заголовок | От 20 байт | 8 байт |
| Скорость | Ниже из-за накладных расходов | Выше |
| Мультикаст | Не поддерживается | Поддерживается |
| Примеры протоколов | HTTP, FTP, SMTP, SSH | DNS, 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
- К. Росс, Д. Уотсон. «Компьютерные сети: подход с точки зрения пользователя»
- А. Таненбаум. «Компьютерные сети»
