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

TCP

TCP (Transmission Control Protocol, протокол управления передачей) — это один из основных протоколов транспортного уровня модели OSI и модели TCP/IP, обеспечивающий надёжную, упорядоченную и проверяемую на ошибки доставку потока данных между приложениями, работающими на узлах компьютерной сети. TCP является основой для большинства интернет-приложений, таких как веб-серфинг (HTTP/HTTPS), электронная почта (SMTP, IMAP, POP3) и передача файлов (FTP).

История

Разработка TCP началась в 1970-х годах в рамках проекта ARPANET, финансируемого Министерством обороны США. Первоначально протокол был частью единого стека TCP/IP, где TCP отвечал и за передачу, и за маршрутизацию. В 1974 году Винтон Серф и Роберт Кан опубликовали статью «A Protocol for Packet Network Intercommunication», в которой описали принципы работы протокола.

В 1978 году протокол был разделён на два независимых: TCP (транспортный уровень) и IP (сетевой уровень). В 1981 году была опубликована спецификация RFC 793, которая до сих пор является основным стандартом TCP. В последующие десятилетия протокол неоднократно дополнялся и уточнялся, в частности, были добавлены механизмы управления перегрузкой (RFC 2001, RFC 5681), улучшена производительность для высокоскоростных сетей (RFC 3649) и введены расширения для мобильных устройств (RFC 793, обновления).

Принцип работы

TCP работает как протокол с установлением соединения (connection-oriented). Перед началом передачи данных между двумя узлами устанавливается логическое соединение — сессия. После завершения передачи соединение разрывается. Основные этапы работы TCP:

  1. Установление соединения (тройное рукопожатие):
  1. Передача данных: Данные разбиваются на сегменты, каждый из которых получает порядковый номер. Получатель отправляет подтверждения (ACK) о получении каждого или нескольких сегментов. Если подтверждение не получено в течение тайм-аута, отправитель повторно передаёт сегмент.
  1. Завершение соединения: Для разрыва соединения используется четырёхэтапное рукопожатие (FIN-пакеты). Одна сторона отправляет FIN (finish), другая подтверждает его ACK, затем отправляет свой FIN, и первая сторона подтверждает его.

Ключевые характеристики

Надёжность

TCP гарантирует доставку данных в том же порядке, в котором они были отправлены. Механизмы контроля включают:

Управление потоком

TCP использует механизм «скользящего окна» (sliding window). Получатель сообщает отправителю размер своего буфера (окно приёма), ограничивая объём данных, который может быть отправлен без подтверждения. Это предотвращает переполнение буфера получателя.

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

Для предотвращения коллапса сети TCP динамически регулирует скорость отправки данных. Основные алгоритмы:

Структура сегмента TCP

Сегмент TCP состоит из заголовка (обычно 20 байт, может быть больше с опциями) и поля данных.

ПолеРазмер (бит)Описание
Порт источника16Номер порта отправителя
Порт назначения16Номер порта получателя
Порядковый номер32Номер первого байта данных в сегменте
Номер подтверждения32Номер следующего ожидаемого байта (если установлен флаг ACK)
Смещение данных4Длина заголовка в 32-битных словах
Зарезервировано3Зарезервировано для будущего использования
Флаги9Набор управляющих битов (URG, ACK, PSH, RST, SYN, FIN и др.)
Размер окна16Размер окна приёма отправителя
Контрольная сумма16Контрольная сумма заголовка и данных
Указатель срочности16Указывает на последний байт срочных данных (если установлен флаг URG)
Опции0-320Дополнительные параметры (например, масштабирование окна, временные метки)
ДанныепеременныйПолезная нагрузка

Понятие порта

Для идентификации конкретного приложения на узле TCP использует номера портов. Порт — это 16-битное число (от 0 до 65535). Порты делятся на три диапазона:

Сравнение с UDP

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

Применение

TCP используется практически во всех интернет-протоколах прикладного уровня, требующих надёжной передачи:

Недостатки

Несмотря на широкое распространение, TCP имеет ряд ограничений:

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →