Определение простыми словами
TCP/IP — это набор правил, по которым устройства в интернете общаются друг с другом. Когда вы открываете сайт, ваш компьютер разбивает запрос на маленькие пакеты, протокол IP отправляет их по адресу сервера, а TCP следит, чтобы все пакеты дошли в нужном порядке и без ошибок.
Стек состоит из четырёх уровней: канального, сетевого (IP), транспортного (TCP/UDP) и прикладного (HTTP, SMTP, FTP и др.). Эта модель упрощает разработку: каждый уровень решает свою задачу независимо.
Сравнение TCP и UDP
| Параметр | TCP | UDP |
|---|---|---|
| Надёжность | Гарантированная доставка | Без гарантий |
| Порядок пакетов | Сохраняется | Может нарушаться |
| Скорость | Медленнее | Быстрее |
| Использование | HTTP, SMTP, FTP, SSH | DNS, VoIP, игры, видеостриминг |
| Соединение | С установкой (3-way handshake) | Без соединения |
Кейсы использования
- Любая загрузка веб-страницы по HTTP/HTTPS использует TCP/IP в качестве транспорта.
- Передача файлов по SFTP/SSH — TCP с шифрованием поверх.
- Синхронизация баз данных между серверами через TCP-соединения.
- VoIP-звонки и онлайн-игры используют UDP поверх IP ради низкой задержки.
Когда задумываются о низкоуровневой настройке TCP/IP:
- Высокая задержка соединения с зарубежным сервером — настраивают TCP-окно и congestion control.
- Сервер обрабатывает десятки тысяч соединений — нужен тюнинг ядра и
sysctl. - Атаки вида SYN-flood — настройка SYN cookies и rate-limit на уровне файрвола.
Технические детали
Базовая диагностика стека на Linux-сервере:
# посмотреть открытые TCP-соединения
ss -tan
# проверить маршрут до удалённого хоста
traceroute -T -p 443 example.com
# измерить пропускную способность
iperf3 -c speedtest.example.com -p 5201
# увеличить TCP-буфер на нагруженном сервере
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
🔥 Где это применяется
Частые вопросы
Чем модель TCP/IP отличается от OSI?
OSI — теоретическая модель из семи уровней, TCP/IP — практическая из четырёх. На каждом уровне TCP/IP объединены несколько уровней OSI. На практике инженеры используют OSI как словарь («это L7-проблема»), а саму архитектуру строят по TCP/IP.
Что такое three-way handshake?
Это процедура установки TCP-соединения из трёх пакетов: клиент шлёт SYN, сервер отвечает SYN-ACK, клиент подтверждает ACK. Только после этого можно передавать данные. Из-за этого TCP добавляет минимум один RTT задержки по сравнению с UDP.
Можно ли использовать UDP вместо TCP для сайта?
Раньше — нет. Сейчас протокол QUIC (основа HTTP/3) работает поверх UDP и даёт надёжность при меньших задержках. Большинство современных браузеров и CDN уже поддерживают HTTP/3, так что для новых сайтов это естественный выбор.
Что значит «TCP window» и зачем его настраивать?
TCP window — это объём данных, который отправитель может послать до получения подтверждения. На каналах с большой задержкой (например, до США) маленькое окно режет скорость. Увеличение rmem/wmem в sysctl и включение window scaling может ускорить трансфер в разы.