TCP — что это, как работает рукопожатие, отличия от UDP | Глоссарий FREEHOSTING

TCP

Transmission Control Protocol
TCP — TCP — транспортный протокол с гарантированной доставкой и контролем потока. Устанавливает соединение через трёхэтапное рукопожатие, нумерует байты, переотправляет потерянные сегменты. Работает поверх IP, лежит в основе HTTP, SSH, SMTP и большинства интернет-сервисов.

Определение простыми словами

TCP (Transmission Control Protocol) — это «надёжная почта» интернета. Перед отправкой данных устанавливает соединение, нумерует каждый байт, ждёт подтверждение получения и переотправляет потерянное. Для приложения это похоже на запись в файл: что отправил, то и приехало в нужном порядке.

В отличие от UDP, TCP даёт гарантии доставки и порядка ценой задержки и накладных расходов. Описан в RFC 793 (1981) и обновлён в RFC 9293 (2022). Любой запрос к сайту, SSH-сессия, отправка письма по SMTP — это поверх TCP.

Сравнение

Параметр TCP UDP
Соединение трёхэтапное рукопожатие без соединения
Доставка гарантированная best effort
Порядок пакетов сохраняется не гарантирован
Контроль потока sliding window отсутствует
Заголовок 20–60 байт 8 байт
Задержка выше минимальная
Применение HTTP, SSH, SMTP DNS, VoIP, игры

Кейсы использования

  • HTTPS-запрос: TCP-соединение на порт 443, поверх него TLS-рукопожатие, потом полезные данные.
  • SSH-доступ к серверу: устойчивая сессия, в которой важна каждая нажатая клавиша.
  • Передача файлов через FTP/SFTP — нужны точность и порядок.
  • Базы данных: PostgreSQL и MySQL принимают подключения по TCP.
  • Негативный сценарий: реальная задержка = RTT × число потерь × 2. На каналах с высоким loss (мобильный 4G в роуминге) TCP проигрывает QUIC и UDP-протоколам в скорости открытия страницы.

Технические детали

# Посмотреть активные TCP-соединения
ss -tulnp
ss -t state established

# Понаблюдать за рукопожатием через tcpdump
sudo tcpdump -i any -n 'tcp port 443 and tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'

# Тюнинг для серверов с высокой нагрузкой
sudo sysctl -w net.ipv4.tcp_fin_timeout=15
sudo sysctl -w net.ipv4.tcp_tw_reuse=1
sudo sysctl -w net.core.somaxconn=65535
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=8192

# Проверка доступности порта
nc -zv example.com 443

Для глубокого разбора пакетов используют Wireshark и tcpdump. Современные альтернативы — QUIC и HTTP/3 поверх UDP.

Частые вопросы

Что такое TCP-рукопожатие?

Это обмен тремя пакетами SYN, SYN-ACK, ACK перед началом передачи данных. Стороны договариваются о начальных номерах последовательностей и подтверждают готовность к обмену.

Чем TCP отличается от IP?

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

Зачем нужен TCP, если есть QUIC?

QUIC поверх UDP моложе и пока не везде: SSH, SMTP, БД, IRC по-прежнему живут на TCP. Браузеры и CDN постепенно переходят на QUIC для HTTP/3, но TCP остаётся стандартом большинства серверных протоколов.