В адресной строке набрано имя сайта. Кажется, что браузеру остаётся «скачать страницу». На деле он должен понять адрес, найти сервер, договориться о защищённом соединении, получить байты, проверить политики и только потом собрать изображение на экране.
Полезно держать эту цепочку в голове не ради собеседования. Она помогает локализовать задержки: медленный DNS и тяжёлая таблица стилей ощущаются одинаково — страница не появилась, — но лечатся совершенно по-разному.
1. Браузер разбирает адрес
Сначала строка превращается в URL: схема, имя хоста, порт, путь, параметры и фрагмент. Схема задаёт правила дальнейшего разговора. Для HTTPS стандартный порт — 443, поэтому обычно он не виден.
До сети браузер проверяет локальные возможности: нет ли подходящего ответа в HTTP-кеше, активного соединения с тем же origin или правила, которое заставляет перейти с HTTP на HTTPS. Иногда запрос заканчивается, так и не покинув устройство.
2. DNS находит адрес сервера
Сети нужен IP-адрес, а человеку удобно имя. Резолвер ищет соответствие в кешах браузера и операционной системы, затем обращается к настроенному DNS-серверу. Тот при необходимости проходит иерархию: корневые серверы, зона верхнего уровня и авторитетный сервер домена.
3. Создаётся соединение
Для HTTP/1.1 и HTTP/2 обычно устанавливается TCP-соединение. Его рукопожатие подтверждает, что обе стороны доступны и согласовали начальные номера последовательности. Потери пакетов будут обнаружены, а порядок байтов — восстановлен.
Затем начинается TLS. Сервер присылает сертификат и доказывает владение ключом. Клиент проверяет имя домена, срок действия и цепочку доверия, после чего стороны получают общие симметричные ключи. Идентичность подтверждается асимметричной криптографией, а основной трафик шифруется более дешёвой симметричной.
HTTP/3 строится поверх QUIC и объединяет транспорт с криптографическим рукопожатием. Это меняет механику, но не цель: получить надёжный защищённый канал с минимальным числом круговых поездок.
4. HTTP формулирует запрос
Браузер отправляет метод, путь и заголовки. Среди них есть имя хоста, поддерживаемые форматы, язык, данные кеша и cookie, подходящие этому адресу. Тело у обычного GET-запроса чаще всего отсутствует.
GET /articles/network.html HTTP/1.1
Host: example.test
Accept: text/html
Accept-Encoding: gzip, br
If-None-Match: "v42"
Запрос может пройти через CDN, защитный фильтр, обратный прокси и балансировщик. Каждый слой либо отвечает сам, либо выбирает следующий узел. Если кеш валиден, origin-приложение вообще не участвует.
5. Приложение собирает ответ
На сервере маршрут связывается с обработчиком. Тот проверяет доступ, читает данные, применяет бизнес-правила и формирует ответ. Здесь и скрывается большая часть привычной серверной работы, но с точки зрения браузера важны статус, заголовки и поток байтов.
200 приносит содержимое, 304 разрешает использовать кеш, 301 или 302 запускают новый переход. Заголовки управляют кешированием, безопасностью и интерпретацией тела.
6. Браузер строит страницу
HTML разбирается в дерево документа. Встречая таблицу стилей, браузер загружает её и строит модель CSS. Два дерева объединяются в структуру рендеринга; затем движок вычисляет размеры и положение элементов, рисует слои и композитит их на экран.
Процессы частично перекрываются. HTML может приходить потоком, дополнительные ресурсы запрашиваются ещё до завершения разбора, а содержимое появляется до полной загрузки страницы. Поэтому порядок ресурсов и объём критического CSS заметно влияют на ощущение скорости.
«Сайт тормозит» — не диагноз. Нужна граница: имя, соединение, первый байт, ресурсы, раскладка или отрисовка.
Как пользоваться этой моделью
Смотрите на временную шкалу запроса и задавайте вопрос по порядку. Долго ищется адрес? Проверяйте DNS. Велико время до первого байта? Ищите сеть, очередь или сервер. Ответ пришёл быстро, а экран пуст? Изучайте блокирующие стили, шрифты и работу рендеринга.
Реальная сеть сложнее этой схемы: соединения переиспользуются, протоколы конкурируют, кеши имеют много уровней. Но шесть границ уже дают карту. А карта превращает магическое «Enter — и страница» в систему, которую можно измерять.