Может кто-нибудь сказать мне, что все происходит за кулисами с момента ввода 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.
Ответ 3
Посмотрите спецификацию HTTP. Или для начала, попробуйте http://www.jmarshall.com/easy/http/