Что происходит, когда вы вводите URL-адрес в браузере

Может кто-нибудь сказать мне, что все происходит за кулисами с момента ввода URL-адреса в браузере до того момента, когда я увижу страницу в браузере? Подробный отчет о процессе будет очень полезен.

Ответ 1

В чрезвычайно грубом и упрощенном эскизе, предполагая простейший возможный HTTP-запрос, никаких прокси-серверов, IPv4 и никаких проблем на любом этапе:

  • браузер проверяет кеш; если запрашиваемый объект находится в кеше и является свежим, перейдите к # 9
  • браузер запрашивает ОС для IP-адреса сервера.
  • ОС выполняет поиск DNS и отвечает на IP-адрес в браузере
  • браузер открывает TCP-соединение с сервером (этот шаг намного сложнее с HTTPS)
  • браузер отправляет HTTP-запрос через TCP-соединение.
  • браузер получает ответ HTTP и может закрыть TCP-соединение или повторно использовать его для другого запроса
  • браузер проверяет, является ли ответ перенаправлением или условным ответом (коды состояния результата 3xx), запрос авторизации (401), ошибка (4xx и 5xx) и т.д.; они обрабатываются иначе, чем обычные ответы (2xx)
  • если кэшируемый, ответ хранится в кеше
  • браузер декодирует ответ (например, если он gzipped)
  • браузер определяет, что делать с ответом (например, является ли это HTML-страницей, является ли это образ, является ли это звуковым клипом?)
  • браузер отображает ответ или предлагает диалог загрузки для непризнанных типов

Опять же, обсуждение каждого из этих пунктов заполнило бесчисленные страницы; возьмите это только как краткое резюме. Кроме того, есть много других вещей, которые происходят параллельно с этим (обработка введенного адреса, спекулятивная предварительная выборка, добавление страницы в историю браузера, отображение прогресса пользователю, уведомление плагинов и расширений, отображение страницы во время ее загрузки, конвейерная обработка, отслеживание соединений для поддерживать работоспособность, проверять наличие вредоносного контента и т.д.), и вся операция становится более сложной с HTTPS (сертификаты и шифры и пиннинг, о мой!).

Ответ 2

Сначала компьютер просматривает хост назначения. Если он существует в локальном кеше DNS, он использует эту информацию. В противном случае DNS-запрос выполняется до тех пор, пока не будет найден IP-адрес.

Затем ваш браузер открывает TCP-соединение с целевым хостом и отправляет запрос в соответствии с HTTP 1.1 (или может использовать HTTP 1.0, но обычные браузеры этого больше не делают).

Сервер ищет требуемый ресурс (если он существует) и отвечает с использованием протокола HTTP, отправляет данные клиенту (= ваш браузер)

Затем браузер использует HTML-парсер для повторной создания структуры документа, которая позже будет представлена ​​вам на экране. Если он находит ссылки на внешние ресурсы, такие как изображения, файлы css, файлы javascript, они передаются так же, как сам документ HTML.