Ответ
TCP (Transmission Control Protocol) — протокол транспортного уровня (4-й уровень OSI), обеспечивающий надежную, упорядоченную доставку данных с установкой соединения. ICMP (Internet Control Message Protocol) — протокол сетевого уровня (3-й уровень OSI) для диагностики и управления сетью.
С точки зрения DevOps/сетевого инженера:
TCP используется для:
- HTTP/HTTPS трафика веб-серверов
- SSH соединений для управления серверами
- Передачи данных между микросервисами
- Подключения к базам данных (PostgreSQL, MySQL)
ICMP используется для:
- Мониторинга доступности (
ping) - Диагностики маршрутизации (
traceroute/tracert) - Обнаружения MTU (пакеты слишком большого размера)
- Уведомлений об ошибках (Destination Unreachable)
Практическое значение в инфраструктуре:
# Проверка доступности сервера (ICMP)
ping -c 4 web-server.prod
# Проверка открытости порта (TCP)
curl -I --connect-timeout 5 https://api.prod:443
# В правилах firewall/security groups:
# - Разрешаем ICMP echo-request для мониторинга
# - Разрешаем TCP 22 (SSH), 80 (HTTP), 443 (HTTPS) для сервисов
# - Блокируем ICMP в продакшене для security hardening (опционально)
Ключевое отличие: TCP гарантирует доставку данных приложению, ICMP — нет. В мониторинге мы часто используем оба: ICMP для проверки доступности сети, TCP для проверки работы приложения.