Полный жизненный цикл HTTP-запроса: от URL до отрендеренной страницы
Когда вы вводите URL и нажимаете Enter, за миллисекунды разворачивается сложная цепочка событий. Понимание этого цикла фундаментально для веб-разработчиков — это основа диагностики проблем производительности, безопасности и сетевых ошибок.
Шаг 1: Парсинг URL
Браузер разбирает URL на компоненты:
https://www.example.com:443/path/page?query=value#section
│ │ │ │ │ │
схема хост порт путь параметры фрагмент
Браузер проверяет: это URL или поисковый запрос? Без схемы — добавит https://. Без проверку портов — по умолчанию (443 для SSL/TLS проверку, 80 для HTTP).
Шаг 2: DNS-разрешение
Браузер преобразует имя хоста в IP геолокацию:
- Кеш браузера: недавно разрешённые домены
- Кеш ОС: системный DNS-кеш
- Файл hosts:
/etc/hosts - Кеш роутера: локальный роутер может кешировать DNS
- Резолвер ISP: запрос к DNS-резолверу (ISP, Google 8.8.8.8, Cloudflare 1.1.1.1)
- Рекурсивное разрешение: Root → TLD → Авторитативный NS
Типичное время: 1-100 мс (кеш) или 20-200 мс (холодный кеш).
Шаг 3: TCP-соединение
Браузер устанавливает TCP-соединение через тройное рукопожатие:
- SYN: клиент отправляет пакет синхронизации
- SYN-ACK: сервер подтверждает и отправляет свой SYN
- ACK: клиент подтверждает — соединение установлено
Занимает один полный RTT. При задержке 50 мс — 50 мс только на хендшейк.
Шаг 4: TLS-хендшейк
Для HTTPS — дополнительное рукопожатие для шифрования:
- Client Hello: версии TLS, cipher suites, случайное число
- Server Hello: выбранный cipher, сертификат, случайное число
- Проверка сертификата: клиент проверяет цепочку доверия
- Обмен ключами: обе стороны вычисляют общий сессионный ключ
- Завершение: подтверждение активного шифрования
TLS 1.2 — 2 RTT. TLS 1.3 — 1 RTT (и 0-RTT для повторных соединений).
Шаг 5: HTTP-запрос
GET /path/page?query=value HTTP/2
Host: www.example.com
User-Agent: Mozilla/5.0 ...
Accept: text/html,application/xhtml+xml
Accept-Encoding: gzip, br
Cookie: session=abc123
Шаг 6: Обработка на сервере
- Веб-сервер: Nginx/Apache принимает запрос
- Реверс-прокси: может передать на application server
- Приложение: маршрутизация, бизнес-логика, запросы к БД
- База данных: выполнение запросов
- Генерация ответа: приложение строит HTML/JSON
- Сжатие: gzip/Brotli
Шаг 7: HTTP-ответ
HTTP/2 200 OK
Content-Type: text/html; charset=utf-8
Content-Encoding: br
Cache-Control: max-age=3600
Content-Length: 45231
Шаг 8: Рендеринг в браузере
- Парсинг HTML: построение DOM-дерева
- Парсинг CSS: построение CSSOM-дерева
- Выполнение JS: может блокировать рендеринг
- Render tree: объединение DOM + CSSOM
- Layout: вычисление позиций и размеров
- Paint: отрисовка пикселей
- Composite: компоновка слоёв в финальное изображение
Оптимизация на каждом шаге
- DNS: prefetch, меньше внешних доменов, быстрые DNS-провайдеры
- TCP: keep-alive, HTTP/2 мультиплексирование, TCP Fast Open
- TLS: TLS 1.3, возобновление сессий, OCSP stapling
- Сервер: кеширование, оптимизация запросов, CDN
- Ответ: сжатие, минимальный HTML, resource hints
- Рендеринг: critical CSS, async/defer скрипты, lazy loading
Заключение
Каждый HTTP-запрос проходит DNS, TCP, TLS, обработку на сервере и рендеринг — каждый шаг добавляет задержку. Понимание этого цикла — ключ к диагностике «почему сайт медленный?» и точечной оптимизации.
Проверьте ваш сайт прямо сейчас
Проверить →