Перейти к содержимому
3.6. DNS, HTTP, HTTPS

Имя, конверт и полсекунды до страницы

Спуститесь по иерархии имён, проведите рукопожатие TLS по шагам и разберите, из чего складывается время между Enter и картинкой на экране.

// имя читается справа налево

Браузер умеет соединяться только с числами, поэтому имя сначала надо превратить в адрес. Вопрос спускается по уровням, пока кто-нибудь не ответит. Выберите запрос и открывайте шаги: счётчик справа показывает, во сколько шагов обошёлся каждый.

Шагов 0
  1. Кэш браузера

    Браузер проверяет, не спрашивал ли он это имя недавно.

  2. Кэш системы и файл hosts

    Операционная система хранит свои ответы и локальные записи.

  3. Рекурсивный резолвер

    Сервер провайдера или публичный, вроде 8.8.8.8. Он и ведёт весь спуск.

  4. Корневой сервер

    Тринадцать адресов, за каждым сотни машин по технологии Anycast.

  5. Сервер зоны .by

    Домен верхнего уровня: знает, кто отвечает за имена внутри зоны.

  6. Авторитативный сервер

    Сервер владельца домена. Именно он хранит настоящий ответ.

Ни у кого ещё нет ответа: вопрос идёт сверху донизу.

  1. Кэш браузера в кэше нет

    Браузер смотрит свой кэш: этого имени там нет

  2. Кэш системы и файл hosts в кэше нет

    Система смотрит свой кэш и файл hosts: тоже пусто

  3. Рекурсивный резолвер спросили

    Запрос уходит рекурсивному резолверу - дальше он ведёт спуск сам

  4. Корневой сервер спросили

    Резолвер спрашивает у корневого сервера, кто знает зону .by

  5. Сервер зоны .by спросили

    Корневой отправляет к серверу зоны .by, тот называет авторитативный сервер any.by

  6. Авторитативный сервер спросили

    Авторитативный сервер выдаёт адрес: 104.21.48.175

Полный спуск: 6 шагов. Каждый уровень знает только следующий, а не весь путь. Резолвер запомнит ответ на время, указанное в записи TTL - для большинства сайтов это несколько часов или дней.

То же имя, тот же браузер, тот же день.

  1. Кэш браузера ответ из кэша

    Ответ лежит в кэше браузера: 104.21.48.175, спрашивать больше некого

Один шаг вместо шести. Именно поэтому вся цепочка в реальности занимает несколько миллисекунд, а при повторном обращении - меньше миллисекунды.

Имя другое, но зона та же самая.

  1. Кэш браузера в кэше нет

    Этого имени браузер не спрашивал

  2. Кэш системы и файл hosts в кэше нет

    В кэше системы его тоже нет

  3. Рекурсивный резолвер спросили

    Резолвер берётся за дело, но начинать сверху ему не нужно

  4. Сервер зоны .by спросили

    Он помнит, кто отвечает за зону .by, и идёт сразу туда

  5. Авторитативный сервер спросили

    Авторитативный сервер any.by отвечает про поддомен

Корневой сервер спрашивать не пришлось: шагов вышло 5 вместо шести. Кэш хранит не только адреса, но и то, кто за какую зону отвечает.

Модель условная: шаги укрупнены, а сроки хранения в кэше у каждого уровня свои и зависят от TTL записи. В жизни резолвер держит ответы и о зонах, и об именах, поэтому короткий путь бывает разной длины, а иногда ответ находится ещё и в кэше на промежуточном узле. Сам DNS-запрос по умолчанию идёт открытым текстом: чтобы его скрыть, придуманы DoH и DoT.

// рукопожатие tls

Как браузер и сервер договариваются о шифре

HTTPS - это тот же HTTP, только в конверте. Конверт нужно сначала изготовить: договориться об алгоритме, проверить, что сервер настоящий, и получить общий ключ, ни разу не передав его по сети. Идите по шагам.

  1. 01

    Client Hello: браузер представляется

    Браузер отправляет список алгоритмов шифрования, которые умеет, и случайное число. Никаких секретов здесь ещё нет - это открытый разговор, и подслушать его можно целиком.

    ! Что ещё нельзя Шифрования пока нет вовсе: всё идёт открытым текстом.

    Что при этом передаётся Список шифров и случайное число от браузера.

  2. 02

    Server Hello: сервер выбирает и показывает сертификат

    Сервер называет выбранный алгоритм, своё случайное число и предъявляет сертификат - документ, где написано, какому домену он выдан, кем и до какого числа.

    ! Что ещё нельзя Верить сертификату на слово пока нельзя - его ещё не проверяли.

    Что при этом передаётся Выбранный шифр, случайное число сервера и сертификат.

  3. 03

    Проверка сертификата

    Браузер сверяет подпись удостоверяющего центра, срок действия и соответствие домена. Не сошлось хоть что-то - предупреждение на весь экран, и дальше человек решает сам.

    ! Что ещё нельзя Сертификат подтверждает, что сервер тот, за кого себя выдаёт, - но ничего не говорит о том, честный ли это сайт.

    Что при этом передаётся Подпись центра, даты и имя домена.

  4. 04

    Обмен ключами

    Стороны обмениваются открытыми данными и каждый смешивает их со своим секретом, который никогда не покидает машину. На обоих концах получается один и тот же общий ключ - хотя сам ключ по проводам не шёл ни разу.

    ! Что ещё нельзя Записавший весь разговор ключ из него не соберёт - в этом весь смысл.

    Что при этом передаётся Только открытые части: секреты остаются каждый у себя.

  5. 05

    Finished: переходим на симметричный шифр

    Обе стороны подтверждают, что рукопожатие прошло, и дальше говорят уже общим ключом. С этого момента и заголовки, и адрес страницы, и данные формы видны только двоим.

    ! Что ещё нельзя Снаружи всё равно видно, к какому домену вы подключились, - имя сайта скрыть шифрованием не получится.

    Что при этом передаётся Подтверждение с двух сторон.

Шаги - из таблицы рукопожатия в статье. Современный TLS 1.3 укладывает это в одно обращение туда-обратно вместо двух, а при повторном подключении умеет обходиться и без него.

// полсекунды до страницы

Из чего складывается время между Enter и картинкой

Половина этого времени уходит не на вычисления, а на дорогу туда и обратно. Переключайте расстояние до сервера, версию протокола и состояние кэша - и смотрите, какой этап съедает больше всех. Жёлтым отмечен самый дорогой.

Дорога туда и обратно
Накладные расходы протокола
Имя в кэше

Имени в кэше нет: браузер спрашивает у резолвера, тот при необходимости обходит корневые и авторитативные серверы. Это ещё одно обращение по сети до того, как начнётся само соединение.

до первого байта страницы
  1. Разрешение имени

    Пока адрес неизвестен, соединяться не с чем. Один запрос к резолверу - это одна дорога туда и обратно, а при холодном кэше их бывает несколько.

  2. Соединение TCP

    Тройное рукопожатие: SYN, SYN-ACK, ACK. Занимает ровно одну дорогу туда и обратно, сколько бы ни было мегабит в канале.

  3. Рукопожатие TLS

    Ещё одна дорога: обмен приветствиями, сертификат, договор о ключе. У старых версий - две. У HTTP/3 соединение и шифрование совмещены, поэтому этот этап почти исчезает.

  4. Накладные расходы протокола

    Сорок миллисекунд - это HTTP/1.1: запросы стоят в очереди, и потерянный пакет держит остальные. Пятнадцать - HTTP/2 с параллельными запросами в одном соединении. Пять - HTTP/3 поверх QUIC, где соединение и шифрование совмещены, а потеря одного пакета не тормозит остальные.

  5. Работа сервера

    Веб-сервер читает запрос, тянет данные из базы, собирает страницу. От десяти миллисекунд до полусекунды - это единственный этап, который не зависит от расстояния.

  6. Разбор и отрисовка

    Браузер разбирает разметку, применяет стили, выполняет скрипты и рисует картинку. Дальше он находит ссылки на файлы и запрашивает их параллельно - это уже поверх того, что показано здесь.

Быстро: сервер близко

Так открываются сайты, у которых сервер или ближайший узел сети доставки в вашем городе. Ровно за это и держат CDN - копии страниц в десятках городов сразу.

Обычное открытие сайта

Полсекунды - типичная цифра. Посмотрите, какой этап подсвечен: чаще всего это не сервер, а дорога туда-обратно, помноженная на число обращений.

Далеко и по старому протоколу

Сервер на другом континенте плюс лишние обращения. Ускорять тут надо не сервер, а число дорог: кэш имён, HTTP/3, ближний узел доставки.

Времена этапов - из таблицы «полный путь» в статье: одна дорога туда-обратно 10-100 мс, работа сервера 10-500 мс, отрисовка 10-200 мс. Переключатель дороги задаёт её в миллисекундах, версия протокола показана числом обращений: HTTP/1.1, HTTP/2 и HTTP/3.

Интерактив разработан - ремонт компьютеров и ноутбуков в Барановичах. © 2008-2026. Источник: any.by/demo/lestnica-dns