Может кто-нибудь сказать мне, что происходит за кулисами с момента ввода URL-адреса в браузере и до того момента, когда я вижу страницу в браузере? Подробный отчет о процессе будет очень полезен.
Может кто-нибудь сказать мне, что происходит за кулисами с момента ввода URL-адреса в браузере и до того момента, когда я вижу страницу в браузере? Подробный отчет о процессе будет очень полезен.
Ответы:
Внимание: это очень грубый и упрощенный эскиз, предполагающий простейший возможный HTTP-запрос (без HTTPS, без HTTP2, без дополнительных функций), простейший возможный DNS, без прокси, IPv4 с одним стеком, только один HTTP-запрос, простой HTTP-сервер на другой конец, и никаких проблем на любом этапе. Для большинства современных намерений и целей это нереалистичный сценарий; все они намного сложнее в реальном использовании, и технический стек стал на порядок сложнее с момента его написания. Имея это в виду, следующая временная шкала все еще в некоторой степени действительна:
Снова, обсуждение каждого из этих пунктов заполнило бесчисленные страницы; принять это только как краткое изложение, сокращенное для ясности. Кроме того, параллельно с этим происходит много других вещей (обработка введенного адреса, умозрительная предварительная выборка, добавление страницы в историю браузера, отображение прогресса для пользователя, уведомление о плагинах и расширениях, рендеринг страницы во время ее загрузки, конвейеризация, отслеживание соединения для поддержка активности, управление файлами cookie, проверка на наличие вредоносного содержимого и т. д.) - и вся операция становится на порядок сложнее с HTTPS (сертификаты, шифры и пиннинг, о боже!).
Сначала компьютер ищет хост назначения. Если он существует в локальном кэше DNS, он использует эту информацию. В противном случае DNS-запрос выполняется до тех пор, пока не будет найден IP-адрес.
Затем ваш браузер открывает TCP-соединение с хостом назначения и отправляет запрос в соответствии с HTTP 1.1 (или может использовать HTTP 1.0, но обычные браузеры больше этого не делают).
Сервер ищет требуемый ресурс (если он существует) и отвечает по протоколу HTTP, отправляет данные клиенту (= ваш браузер)
Затем браузер использует синтаксический анализатор HTML для воссоздания структуры документа, которая впоследствии будет представлена вам на экране. Если он находит ссылки на внешние ресурсы, такие как изображения, CSS-файлы, файлы Javascript, они доставляются так же, как и сам HTML-документ.
Посмотрите спецификацию HTTP. Или, чтобы начать, попробуйте http://www.jmarshall.com/easy/http/