что происходит, когда вы вводите URL в браузере [закрыто]

293

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

Адит Рамиа
источник
2
Хотя это может быть связано с программированием (в конце концов) - уровень детализации, на который можно было бы ответить, заполнил бы (и имеет) объемы. Пожалуйста, переформулируйте как программный запрос.
KevinDTimm
28
Получить книгу О'Рейли DNS и Bind . Это всего 624 страницы.
Вим Холлебрандс
7
edusagar.com/articles/view/70/… это самый лучший ответ!
Шивендра
1
Ради потомков, вот подробная версия того, как работает интернет - goo.gl/eEHmpZ .
Ашвин Кришнамурти
4
Сейчас есть совместные усилия, чтобы ответить на это как можно более подробно: github.com/alex/what-happens-when/blob/master/README.rst
Писквор покинул здание

Ответы:

587

Внимание: это очень грубый и упрощенный эскиз, предполагающий простейший возможный HTTP-запрос (без HTTPS, без HTTP2, без дополнительных функций), простейший возможный DNS, без прокси, IPv4 с одним стеком, только один HTTP-запрос, простой HTTP-сервер на другой конец, и никаких проблем на любом этапе. Для большинства современных намерений и целей это нереалистичный сценарий; все они намного сложнее в реальном использовании, и технический стек стал на порядок сложнее с момента его написания. Имея это в виду, следующая временная шкала все еще в некоторой степени действительна:

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

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

оборота Писквор
источник
Что произойдет в случае запросов https на шаге 4. Можете ли вы объяснить немного больше?
Мохаммад Рахим
2
Это далеко за рамки этого ответа. Но проверьте страницу GH, на которую
ссылается
41

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

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

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

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

naivists
источник