Вопрос: Что именно происходит шаг за шагом от того, когда я набираю URL-адрес в моем браузере, когда загружается страница? [закрыто]


Меня недавно попросили об этом на собеседовании, особенно когда я набираю facebook.com. Я не совсем уверен в том, что искал интервьюируемый именно с тех пор, как я подавал заявку на программирование, но как можно ответить на этот вопрос на высоком уровне?


2
2018-04-03 23:13


Источник


Какая работа? Был ли он ищет за кулисами (работа IT / dev) или это была работа процесса, где он, скорее всего, хотел этот процесс (наберите Facebook.com, нажмите GO или нажмите Enter на клавиатуре, дождитесь загрузки страницы, введите имя пользователя .. , - Austin T French
Это была позиция программирования, но я думаю, что он искал за кулисами ... балансировщики нагрузки и т. Д., Но высокий уровень. - KingKongFrog
вы хотя бы ссылались на DNS? - Lorenzo Von Matterhorn
Нет, вот почему я здесь. :) - KingKongFrog
Есть МНОГО вещей, которые происходят на многих уровнях ... это зависит от того, насколько подробно вы хотите получить ... - Keltari


Ответы:


Обзор высокого уровня HTTP-запроса из браузера:

  1. Вы вводите «facebook.com» в адресную строку.
  2. Браузер разрешает это на числовой IP-адрес (это может быть кэшировано ОС или требуется отключение на DNS-сервер).
  3. Браузер выдает запрос «HTTP / GET». Он проходит по HttpRequest, который включает метаданные о браузере, предпочтения пользователя (например, предпочтительный язык) и любые сохраненные файлы cookie для этого домена.
  4. Серверы Facebook получают запрос, и их код начинает обрабатывать ответ.
    • Facebook будет использовать переданную информацию, включая файлы cookie, чтобы определить, кто является пользователем, и какую информацию отправить назад
  5. Ответ HTTP возвращается из Facebook, включая строку состояния (200 OK и т. Д.). Заголовки, которые включают контент-тип и т. Д. И тело HTML.
  6. Браузер получает ответ и начинает его анализировать для отображения.
    • Тело HTML будет содержать ссылки на CSS, JS и изображения. Все это вызовет дополнительные вызовы на серверы для извлечения этих битов
  7. Механизм компоновки браузера начнет собирать последнюю страницу для отображения.
    • Информация CSS может изменять расположение и внешний вид страницы
    • JS и DHTML могут изменять расположение страницы
  8. Последняя страница собирается и отображается конечным пользователям.

Википедия Протокол гипертекста статья является хорошей отправной точкой для жизненного цикла HTTP-запроса.


4
2018-04-04 00:18





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

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

В какой-то момент времени DNS-сервер, который был запрошен, ответит IP-адресом сервера / устройства, связанного с введенным доменным именем. Теперь пакеты TCP / IP могут быть сконструированы и отправлены по проводке в домен, который вы ввели, чтобы начать передачу и передачу данных назад и вперед, чтобы предоставить вам контент, который вы просили.


1
2018-04-03 23:26





Как и почти все вопросы интервью, интервьюер не искал конкретного ответа, но смотрел, чтобы увидеть ваш уровень понимания процесса и заставить вас пройти их через ваш мыслительный процесс. Скорее всего, они искали, можно ли идентифицировать различные компоненты (браузер, интернет-провайдер, HTTP, TCP, DNS, ядро, веб-сервер) и объяснить, как они взаимодействуют.


1
2018-04-04 01:13





Я отдам его, хотя он может (очевидно) сильно варьироваться от сайта к сайту, от браузера до браузера и от того, что он хотел, или от того направления, из которого он пришел. Один менеджер по найму может захотеть очень подробного подхода всего процесса и вашего знакомства с Facebook (если вы потенциально собираетесь работать над плагином Facebook), с которым я не слишком хорошо знаком. Я не буду разбираться в процессе.

  1. Введите «Facebook.com» в адресную строку
  2. DNS должен решить
  3. Когда Facebook загружается, он будет обнаруживать или создавать файлы cookie на основе того, был ли пользователь ранее
  4. Если есть файлы cookie, Facebook может регистрировать пользователя, если нет, отображается страница с подписью и / или регистрационная страница.
  5. Используются журналы пользователей, нечувствительный к регистру адрес электронной почты и защищенный паролем secureString.
  6. Кнопка входа в систему выбрана, безопасный пароль солен, хэширован и сравнен с соответствующим сохраненным паролем для имени пользователя, и подтвердите, что оба соответствуют записи.
  7. В случае успеха, покажите Facebook «WALL», иначе покажите сообщение об ошибке и разрешите повторную попытку. JS должен хранить недопустимую попытку для максимального количества попыток X, а также записывать в пользовательскую запись для недопустимой попытки в случае грубой силы.

0
2018-04-03 23:35