Что происходит, когда вы жмёте Enter в адресной строке
Вопрос звучит как разминочный, но проверяет не зубрёжку шагов, а умение назвать, на каком слое теряется время и кто за него отвечает.
Сначала браузер смотрит, есть ли IP в кэше DNS. Если нет — идёт резолвинг: кэш ОС, потом рекурсивный DNS-сервер провайдера, потом корневые и авторитативные серверы. Это отдельный RTT, который часто забывают посчитать в бюджете TTFB.
Дальше TCP-хендшейк (SYN, SYN-ACK, ACK) — ещё один RTT. Если это HTTPS, поверх добавляется TLS-хендшейк: обмен сертификатами, согласование шифров, иногда ещё один-два RTT в зависимости от версии TLS. TLS 1.3 сокращает это до одного round-trip, но не все сервера его используют.
После установки соединения браузер отправляет HTTP-запрос. Сервер обрабатывает его — тут может быть балансировщик, несколько прокси, сам сервис, поход в базу. Ответ летит обратно, браузер начинает парсить HTML, строить DOM, параллельно запрашивать ресурсы (CSS, JS, картинки), которые могут открывать новые соединения с тем же набором DNS+TCP+TLS, если домен другой.
// на собесе часто просят оценить время // DNS: 20-120ms (зависит от кэша) // TCP: 1 RTT // TLS: 1-2 RTT (TLS1.3 vs 1.2) // HTTP запрос-ответ: 1 RTT + обработка на сервере // рендеринг: отдельный бюджет, не сетевой
Следом спросят: что из этого убирает HTTP/2 или HTTP/3. HTTP/2 мультиплексирует запросы в одном TCP-соединении — не нужно открывать новое на каждый ресурс того же домена. HTTP/3 идёт дальше и меняет транспорт на QUIC поверх UDP, убирая head-of-line blocking на уровне TCP и сокращая хендшейк. Если вы не разделяете, что именно ускоряет каждый протокол — ответ выглядит заученным.
Каждый RTT в этой цепочке — не абстракция, а конкретная задержка, которую можно измерить в DevTools по вкладке Network, и там же увидеть, на каком шаге реально теряется время в вашем конкретном случае.
senior·base — что спрашивают на самом деле
В этом посте были ссылки, но мы их удалили по правилам Сетки