В чем разница между TCP и IP протоколом?

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

Ответ

IP (Internet Protocol) — протокол сетевого уровня, отвечающий за адресацию и маршрутизацию пакетов между сетями. TCP (Transmission Control Protocol) — протокол транспортного уровня, обеспечивающий надежную передачу данных поверх IP.

Аналогия из DevOps:

  • IP — как почтовый адрес здания (куда доставить)
  • TCP — как курьерская служба с подтверждением получения, нумерацией писем и повторной отправкой при потере

Технические различия:

Характеристика IP TCP
Уровень OSI Сетевой (3) Транспортный (4)
Надежность Ненадежная доставка (best-effort) Гарантированная доставка с подтверждениями
Установка соединения Нет Трехстороннее рукопожатие (SYN, SYN-ACK, ACK)
Порты Нет Использует порты для multiplexing (80, 443, 22)
Пример заголовка Source/Destination IP, TTL, Protocol Sequence/Ack numbers, Window size, Flags

Практическое применение в инфраструктуре:

# tcpdump покажет оба уровня
sudo tcpdump -i eth0 -n 'tcp port 80'
# Вывод будет содержать и IP заголовки (src/dst IP), и TCP заголовки (flags, seq)

# Настройка сетевых политик:
# - IP tables/firewall работают на сетевом уровне (блокировка по IP)
# - Прокси/балансировщики (nginx, haproxy) работают на транспортном уровне (по портам)

# Пример проблемы: MTU mismatch
# IP фрагментирует пакеты > MTU, но если где-то в пути стоит firewall,
# блокирующий фрагментированные пакеты, TCP соединение будет падать
# Решение: установить правильный MTU или включить TCP MSS clamping

В стеке TCP/IP: Приложение → TCP (добавляет порты, контроль) → IP (добавляет IP-адреса) → Ethernet. В мониторинге мы отслеживаем метрики обоих уровней: потери на IP (packet loss) и проблемы на TCP (retransmits, zero window).