Какие протоколы транспортного уровня модели OSI/ TCP/IP вы знаете и в каких сценариях они применяются?

«Какие протоколы транспортного уровня модели OSI/ TCP/IP вы знаете и в каких сценариях они применяются?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В инфраструктурной работе основное внимание уделяется TCP и UDP, реже — SCTP.

  • TCP (Transmission Control Protocol): Надежный, с установкой соединения (three-way handshake). Гарантирует доставку, порядок пакетов и контроль перегрузки. Применение в DevOps:

    • Веб-серверы (HTTP/HTTPS, SSH, базовые данные БД).
    • Любые соединения, где важна целостность данных.
    • При настройке балансировщиков (AWS ALB, Nginx) для этих сервисов используется режим TCP/SSL прокси.
  • UDP (User Datagram Protocol): Ненадежный, без установки соединения. Низкие задержки, но нет гарантий доставки или порядка. Применение в DevOps:

    • Мониторинг: Статистика в формате StatsD, метрики Node Exporter для Prometheus (хотя часто и по TCP).
    • Сервис-открытие (Service Discovery): Multicast DNS (mDNS) или старый добрый broadcast.
    • Стриминг: VoIP, видеоконференции, некоторые системы игровых серверов.
    • DNS-запросы: Хотя резолверы могут использовать TCP для больших ответов, первоначальный запрос обычно UDP.
  • SCTP (Stream Control Transmission Protocol): Совмещает надежность TCP с некоторыми преимуществами UDP (мультиплексирование потоков, multi-homing). Применение: В основном в телеком-инфраструктуре (сигнализация SS7 через SIGTRAN). В обычной веб-разработке и DevOps встречается редко.

Практический пример — настройка безопасности: В Security Groups AWS или файрволе iptables правила часто разделяются по протоколу.

# Разрешить мониторинг по UDP (StatsD) и управление по TCP (SSH)
# AWS Security Group (псевдокод):
- Type: Custom UDP Rule, Port: 8125, Source: Prometheus-Server
- Type: SSH, Port: 22, Source: Office-IP

# В iptables для ноды:
sudo iptables -A INPUT -p udp --dport 8125 -j ACCEPT  # StatsD
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT    # SSH

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