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

Протокол TCP — основа передачи данных в интернете

TCP (Transmission Control Protocol, «протокол управления передачей») — транспортный сетевой протокол уровня модели OSI, обеспечивающий надёжную, упорядоченную и проверяемую доставку данных между приложениями на разных узлах компьютерной сети. Вместе с IP-протоколом (Internet Protocol) TCP образует стек TCP/IP — основу передачи данных в сети Интернет. Протокол разработан в 1970-х годах Винтоном Серфом и Бобом Каном, впервые описан в RFC 793 (1981), позднее обновлён в RFC 9293 (2022).

Общие сведения

TCP работает поверх IP и скрывает от прикладного уровня особенности канала связи: потери пакетов, дублирование, нарушение порядка доставки. Приложение отправляет данные в виде потока байтов, а TCP гарантирует, что получатель примет их в том же порядке и без пропусков. Протокол реализует механизм подтверждения получения (ACK), повторную передачу при потере, контроль потока (flow control) и контроль перегрузки (congestion control).

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

Ключевые свойства

  • Надёжная доставка. Каждый сегмент подтверждается получателем; при отсутствии подтверждения в отведённое время отправка повторяется.
  • Упорядоченность. Сегменты нумеруются, приёмник восстанавливает исходный порядок байтов.
  • Ориентация на соединение. Перед обменом данными устанавливается логическое соединение (рукопожатие), после передачи оно корректно закрывается.
  • Потоковая передача. Данные передаются как непрерывный поток байтов, границы сообщений прикладного уровня сохраняются за счёт флага PSH.
  • Контроль перегрузки. Алгоритмы (Slow Start, Congestion Avoidance, Fast Retransmit, Fast Recovery) адаптируют скорость отправки к пропускной способности сети.

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

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

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

После этого начинается передача данных. Закрытие соединения выполняется четырёхсторонним рукопожатием: каждая сторона отправляет FIN и получает подтверждение.

Порты и сокеты

Идентификатором конечной точки соединения является сокет — пара «IP-адрес + порт TCP». Комбинация локального и удалённого сокетов (4-tuple) однозначно определяет соединение. Порты от 0 до 1023 зарезервированы под стандартные службы: 80 — HTTP, 443 — HTTPS, 22 — SSH, 25 — SMTP, 53 — DNS (TCP). Диапазон 1024–49151 используется приложениями, выше — динамические (эфемерные) порты.

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

Механизм контроля потока использует «окно» — объём данных, который отправитель может передать до получения нового подтверждения. Получатель сообщает доступный размер окна в каждом сегменте, что защищает медленный узел от переполнения.

Контроль перегрузки регулирует скорость отправки в зависимости от состояния сети. Современные реализации используют алгоритмы CUBIC (по умолчанию в Linux) и BBR (разработан Google), направленные на более точную оценку пропускной способности канала.

TCP и UDP

Главный альтернативный транспортный протокол — UDP (User Datagram Protocol) — не устанавливает соединения и не гарантирует доставку, но работает с меньшими накладными расходами. TCP выбирают, когда важна надёжность (веб, электронная почта, передача файлов), UDP — когда критична задержка (стриминг, VoIP, онлайн-игры, DNS).

Применение

TCP является транспортной основой для большинства прикладных протоколов Интернета: HTTP и HTTPS (веб), FTP (файлы), SMTP, POP3, IMAP (почта), SSH (удалённый доступ), Telnet, базы данных (MySQL, PostgreSQL). По различным оценкам, на TCP приходится подавляющая доля всего трафика сети Интернет.

Ограничения

TCP не защищает содержимое сегментов — шифрование обеспечивается на более высоких уровнях (TLS). Протокол уязвим к атакам с подбором номеров портов и последовательности (SYN flood), для противодействия используются SYN cookies и буферизация半-open соединений. Развитие сети с очень большими задержками (спутниковый интернет) выявило ограничения классического алгоритма контроля перегрузки, что стало причиной появления BBR и исследований в области TCP-совместимых протоколов нового поколения (QUIC использует UDP в качестве транспорта).

Исторические факты

TCP изначально задумывался как единый протокол, объединяющий функции передачи данных и маршрутизации. В ходе развития стека эти функции были разделены: маршрутизация закреплена за IP, а TCP сосредоточен на надёжной доставке. Термин «TCP/IP» стал обозначением всего семейства протоколов Интернета.

Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru