Ответ
TCP (Transmission Control Protocol) — это основной протокол транспортного уровня стека TCP/IP, обеспечивающий надежную, ориентированную на соединение доставку потока данных между приложениями.
Ключевые характеристики TCP:
- Надежность: Гарантирует доставку данных. Использует подтверждения (ACK), повторные передачи (retransmission) и контрольные суммы.
- Установка соединения (3-way handshake): Перед обменом данными клиент и сервер устанавливают логическое соединение.
- Клиент → Сервер:
SYN(синхронизация) - Сервер → Клиент:
SYN-ACK(подтверждение + синхронизация) - Клиент → Сервер:
ACK(подтверждение)
- Клиент → Сервер:
- Управление потоком (Flow Control): Предотвращает переполнение буфера получателя с помощью механизма скользящего окна.
- Управление перегрузкой (Congestion Control): Динамически регулирует скорость отправки данных, чтобы не перегрузить сеть.
- Полнодуплексная связь: Данные могут передаваться в обоих направлениях одновременно.
С точки зрения DevOps и администрирования:
- Порты: TCP использует порты для идентификации сервисов (например, 80 — HTTP, 443 — HTTPS, 22 — SSH).
- Мониторинг: Утилиты вроде
netstat,ssилиtcpdumpиспользуются для диагностики TCP-соединений. - Настройка ядра: Параметры ядра Linux (
/proc/sys/net/ipv4/tcp_*) позволяют тонко настраивать поведение TCP (таймауты, размеры буферов, алгоритмы управления перегрузкой).
Пример использования в инфраструктуре: Когда балансировщик нагрузки (например, NGINX) принимает TCP-соединение от клиента и проксирует его на бэкенд-сервер, он работает на транспортном уровне, обеспечивая надежную передачу запросов и ответов.
Отличие от UDP: В отличие от ненадежного и дейтаграммного UDP, TCP жертвует скоростью и накладными расходами на установку соединения и подтверждения ради гарантии доставки и порядка пакетов.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶