Вы вводите в строке браузера yandex.ru. Опишите процесс от нажатия клавиши до загрузки страницы.

Категория: Сети

Просмотров: 26

Ответ:

Любой URL содержит следующую структуру <протокол>/<хост>/путь, например https://yandex.ru/pogoda. Также URL может содержать данные для отображения страницы.

  1. При вводе URL браузер смотрит на протокол запроса. Если протокол в URL не указан, то браузер смотрит на список HSTS (HTTP Strict Transport Security - механизм, принудительно активирующий защищенное соединение через протокол HTTPS), если хост есть в данном списке, то браузер отправит запрос по протоколу HTTPS, если нет, то по HTTP.

  2. Для того, чтобы установить соединение с сервером, необходим его IP адрес. Так как мы используем домен, то необходимо установить соответствие домена и IP адреса сервера, где размещается ресурс. При запросе мы обращаемся к DNS. Cначала проверяется кеш DNS. Приоритет опроса DNS кеша следующий:

  • Кеш браузера,
  • Проверяется hosts файл ,
  • Кеш ОС,
  • Кеш роутера,
  • Кеш интернет-провайдера Если данных о данном запрашиваеомом хосте в кеше нет, то:
  • DNS интернет провайдера отправляет запрос к контевому серверу DNS (.),
  • Если корневой сервер не знает запрашиваемого домена, то он отправляет запрос серверу ответственному за зону (.ru), в которому привязан домен,
  • Если DNS сервер зоны не знает запрашиваемого домена, то запрос отправляется к NS серверу домена. IP адрес хоста, при его наличии у DNS сервера, возвращается обратно по цепочке
  1. После того, как IP адрес хоста получили, необходимо сформировать на прикладном уровне запрос к серверу. К запросу добавляются следующие заголовки:
  • Прикладной уровень: протокол запроса (HTTP/S, FTP и т.д),
  • Транспортный (TCP/UDP): порт, по которому обращаемся к серверу.
  • Сетевой уровень: IP адрес пакета
  • Канальный уровень: определяет есть ли такой адрес в сети. Если нет, то пакет передаётся шлюзу. Устройство шлюза проверяет свою таблицу маршрутизации и направляет пакет в нужном направлении.
  1. Далее выполняется следующий алгоритм действий установления соединения:
  • После того, как запрос достиг сервера, клиент отправляет клиенту запрос (client hello) и свою версию протокола TLS на защищенное соединение.
  • Сервер отвечает клиенту (server hello) с информацией о выбранной версии TLS, методом шифрования, методом компресии и публичный сертификат сервера, подписанный центром сертификации. Сертификат содержит публичный ключ, который будет использован клиентом для шифрования данных.
  • Клиент подтверждает сертификат сервера с помощью своего списка центров сертификации. Если сертификат подписан центром из списка, то серверу можно доверять.
  • Клиент шифрует данные публичным ключем и отправляет серверу зашифрованное сообщение.
  • Сервер расшифровывает сообщение с помощью своего приватного ключа и генерирует симметричный мастер-ключ и отправляет его клиенту.
  • Клиент отправляет серверу сообщение о финише, шифруя хэш передачи с помощью симметричного ключа.
  • Сервер генерирует собственный хеш, а затем расшифровывает полученный от клиента хэш, чтобы проверить совпадает ли хэш клиента с хэшом сервера. Если совпадение обнаружено, то сервер отправляет клиенту сообщение о финише.

После этого защищенное соединение с сервером установлено.

  1. Далее необходимо сформировать запрос серверу:
  • Клиент формирует запрос HTTP, в котором участвует метод (например GET), URL и версию протокола. Например GET /pogoda HTTP/2.
  • Следующий заголовок клиента HOST, в котором указывается к какому хосту необходимо обратиться. Например HOST: yandex.ru. По заголовку HOST сервер может определить к какому сайту на сервере необходимо обратиться.
  • Запрос может также содержать и другие заголовки. Необходимо только, чтобы сервер смог понять эти заголовки.