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

TCP — протокол транспортного уровня

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

История

Протокол разработан в 1970-х годах Винтоном Серфом и Бобом Каном. Первая спецификация опубликована в 1974 году в статье «A Protocol for Packet Network Intercommunication». В 1981 году TCP включён в набор протоколов TCP/IP, ставший стандартом ARPANET, а затем и основой глобального Интернета. В 1983 году ARPANET перешёл на TCP/IP. RFC 793 (1981) задал базовую спецификацию, позднее уточнённую в RFC 9293 (2022).

Основные характеристики

TCP относится к транспортному уровню модели OSI и обеспечивает:

  • Надёжную доставку — с помощью подтверждений (ACK), повторной передачи при потере и таймеров.
  • Упорядоченную передачу — данные передаются в виде потока байтов, порядок восстанавливается по номерам сегментов.
  • Контроль потока (flow control) — механизм окна, согласованный между отправителем и получателем, предотвращает перегрузку принимающей стороны.
  • Контроль перегрузки (congestion control) — алгоритмы (Reno, CUBIC, BBR и др.) адаптируют скорость отправки к пропускной способности сети.
  • Мультиплексирование — порты источника и назначения позволяют нескольким приложениям использовать одно соединение IP.
  • Полудуплексная логика соединения — каждый поток данных управляется отдельно, возможна одновременная передача в обе стороны.

Устройство и формат сегмента

Данные в TCP разбиваются на сегменты. Заголовок TCP содержит 10 обязательных полей (минимум 20 байт) и опциональные расширения:

ПолеНазначение
Порт источника / назначенияИдентификация приложений (0–65535)
Номер последовательностиПозиция первого байта данных в потоке
Номер подтвержденияОжидаемый следующий байт от собеседника
Размер окнаОбъём данных, который готов принять получатель
Контрольные флагиSYN, ACK, FIN, RST, PSH, URG
Контрольная суммаПроверка целостности заголовка и данных

Установление соединения

TCP-соединение устанавливается трёхсторонним рукопожатием (three-way handshake):

  1. Клиент отправляет сегмент с флагом SYN и начальным номером последовательности.
  2. Сервер отвечает SYN-ACK со своим номером последовательности и подтверждением.
  3. Клиент отправляет ACK; соединение считается установленным.

Завершение соединения обычно четырёхстороннее: каждая сторона посылает FIN и получает подтверждение. Возможен альтернативный механизм TCP Fast Open, сокращающий установление.

Потеря и восстановление данных

Потерянные сегменты обнаруживаются по тайм-ауту или дублированным подтверждениям. Используются алгоритмы повторной передачи: таймер передачи (RTO), быстрое восстановление (fast retransmit) и быстрое восстановление (fast recovery). Порядок данных восстанавливается по номерам последовательности, дубликаты отбрасываются.

Контроль перегрузки

Перегрузка сети — основная причина потерь в современном Интернете. TCP реализует аддитивное увеличение и мультипликативное уменьшение (AIMD): при отсутствии потерь размер окна растёт линейно, при потере — уменьшается. Классические алгоритмы — Tahoe, Reno, NewReno, SACK. Современные — CUBIC (по умолчанию в Linux) и BBR (разработан Google), оценивающий пропускную способность и задержку.

Порты и адресация

Приложения идентифицируются 16-битными номерами портов. Зарезервированы порты 0–1023 (well-known): HTTP — 80, HTTPS — 443, SSH — 22, DNS — 53 (обычно UDP), SMTP — 25. Диапазон 1024–49151 используется приложением, 49152–65535 — динамические (ephemeral).

Альтернативы и развитие

Для приложений, где важнее скорость, чем гарантии, используется UDP. Для ускорения в условиях высоких задержек и потерь разработаны TCP Fast Open, MPTCP (мультипатчный TCP, RFC 6824), а также протокол QUIC, построенный поверх UDP. В России разработаны и применяются протоколы транспортного уровня ГОСТ Р (например, семейство ТСПУ), однако TCP остаётся доминирующим решением.

Применение

TCP является базой для большинства прикладных протоколов: HTTP/HTTPS, FTP, SMTP, SSH, Telnet, базы данных, стриминга. По оценкам, подавляющее большинство соединений в глобальной сети используют TCP.

Источники

  • RFC 793 — Transmission Control Protocol (1981)
  • RFC 9293 — Transmission Control Protocol (2022)
  • RFC 5681 — TCP Congestion Control
  • RFC 7413 — TCP Fast Open
  • RFC 6824 — Multipath TCP
  • V. Cerf, R. Kahn. A Protocol for Packet Network Intercommunication (1974)
  • К. Росс. Компьютерные сети: подход снизу вверх
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru