2

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

4 ответа4

4

Общий обзор HTTP-запроса от браузера:

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

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

1

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

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

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

1

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

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .