Skip to content

Latest commit

 

History

History
54 lines (36 loc) · 7.02 KB

File metadata and controls

54 lines (36 loc) · 7.02 KB

Опишите весь процесс, начиная с ввода адреса сайта в адресную строку до окончания его загрузки на экране.

  1. Вы вводите адрес в строку адреса в браузере.

  2. Браузер ищет в своём кэше запись о DNS сервере соответствующего IP-адреса.

DNS (Domain Name System) — это база данных с url-адресами сайтов и связанными с ними IP. Каждый URL в интернете имеет свой уникальный IP. IP адрес принадлежит компьютеру, на котором находится сервер запрашиваемого вебсайта.

Чтобы найти запись DNS браузер проверяет 4 кэша:

  • Кэш браузера. У браузера есть хранилище DNS записей для сайтов, на которых вы уже были.
  • Кэш операционной системы. Если в кэше браузера нет записи о DNS, браузер делает системный запрос к операционной системе, у которой есть свой кэш DNS записей.
  • Кэш роутера. Если браузер ничего не нашёл на компьютере, он делает запрос к роутеру, у которого есть свой DNS кэш.
  • Кэш провайдера. Если предыдущие попытки закончились неудачей, браузер обращается к кэшу провайдера.
  1. Если запрашиваемого URL нет в кэше, DNS сервер провайдера отправляет DNS запрос серверу, на котором хостится необходимый вебсайт.

DNS запрос ищет нужный IP на разных DNS серверах. Такой поиск называется рекурсивным, потому что переходит от сервера к серверу, пока не найдет IP или не вернёт ошибку о невозможности его найти. DNS запросы отправляют небольшие пакеты данных с информацией о содержимом запроса и IP адресом, откуда это запрос пришел (IP адрес провайдера). Если эти пакеты теряются, выводится ошибка. При нахождении нужного DNS сервера пакеты берут верный IP адрес и возвращают его браузеру.

  1. Браузер инициализирует TCP соединение с сервером. Как только браузер получил верный IP адрес, он создаёт соединение для передачи информации. В большинстве случаев браузеры используют TCP протокол для любых HTTP запросов. Для соединения с сервером используется процесс TCP/IP three-way handshake - трёхшаговый процесс, в котором клиент и сервер обмениваются SYN (synchronize) и ACK (acknowledge) сообщениями.
  • Компьютер клиента посылает серверу SYN запрос, чтобы узнать открыт ли сервер для новых соединений.
  • Если у сервера есть открытые порты для новых соединений, он отвечает пакетом SYN/ACK.
  • Клиент получает от сервера SYN/ACK пакет и подтверждает соединение, отослав ACK пакет.

После этого TCP соединение установлено.

  1. Браузер посылает HTTP запрос к web серверу. Браузер отсылает GET запрос для нужной веб страницы. Если мы отправляем форму, это будет POST запрос. Этот запрос содержит дополнительную информацию о браузере (заголовок User-Agent), типы запросов, которые он может принять (Accept заголовок) и заголовки соединения (нужно ли сохранять соединение). Также в запросе будет информация о cookies, которые браузер хранит для этого домена.

  2. Сервер обрабатывает запрос и даёт ответ. Сервер получает запрос и передаёт его обработчику запросов для чтения и создания ответа. Обработчик запроса — это программа (написанная на PHP, Ruby и т.д.), которая читает запрос, заголовки и cookies, распознаёт, какая информация запрошена и обновляет данные на сервере, если необходимо. Далее собирается ответ в определённом формате (JSON, XML, HTML).

  3. Сервер высылает HTTP ответ.

Ответ сервера содержит запрошенную веб страницу вместе с кодом статуса, типом сжатия (Content Encoding), информацией о том, как кэшировать страницу, cookies и т.д.

В первой строчке ответа находится код статуса. Существует 5 типов:

  • 1xx содержит только информационное сообщение
  • 2xx указывает на успешный запрос
  • 3xx переадресует клиента на другой URL
  • 4xx указывает на ошибку на стороне клиента
  • 5xx указывает на ошибку на стороне сервера

Таким образом, если вы столкнулись с ошибкой, вы можете посмотреь на HTTP ответ и проверить код, который вы получили.

  1. Браузер отображает HTML контент.

Браузер отображает HTML контент в несколько стадий.

  1. Рендерит HTML разметку.
  2. Проверяет HTML теги и отсылает GET запросы за дополнительными элементами (изображениями, css-файлами, JavaScript и т.д.). Эти файлы браузер кэширует, чтобы не скачивать их, когда вы зайдёте на этот сайт в следующий раз.
  3. Отображает запрошенную страницу у вас в браузере.