62

Что происходит за кулисами, когда мы вводим www.cnn.com в браузере, и как информация отображается на экране?

Техническое объяснение будет высоко ценится.

9 ответов9

131

Браузер: «Итак, у меня есть пользователь, запрашивающий этот адрес: www.cnn.com. Я полагаю, так как там нет косых черт или чего-то еще, это прямой запрос главной страницы. Также не было определено ни протокола, ни порта, так что я предполагаю, что это HTTP и идет на порт 80 ... ну, обо всем по порядку. Эй, DNS, приятель, проснись! Где скрывается этот www.cnn.com?"

DNS: «Правильно ... подожди секунду, я спрошу у интернет-провайдеров. Хорошо, похоже на 157.166.226.25. "

Браузер: «Хорошо. Internet Protocol Suite, ваша очередь! Позвоните 157.166.226.25, пожалуйста. Отправьте им этот заголовок HTTP. Он спрашивает об основной структуре и содержании их главной страницы, так что я знаю, что еще можно извлечь ... ну, не то, чтобы вы заботились об этом, я думаю. "

TCP/IP: «Что значит моя очередь? Как будто я не просто отрабатывал спину прямо для DNS? Боже, что нужно, чтобы получить здесь немного признательности ... "

Браузер: ...

TCP/IP: "Да, да ... Подключение ... Я просто попрошу шлюз направить его. Знаете, это не так просто, мне придется разделить ваш симпатичный запрос на несколько частей, чтобы он достиг конца, и собрать все, что они отправляют, из всех тысяч пакетов, которые я получаю ... ах, Да, тебе все равно. Цифры «.

Между тем, в штаб-квартире CNN, сообщение наконец заканчивается в дверях веб-сервера.

Веб-сервер CNN: "Nzhôô! Клиент! Он хочет новости! Главная страница! Как насчет этого?"

Механизм сценариев на стороне сервера CNN: «Хорошо, сделаю! Первая полоса, верно?"

Сервер базы данных CNN: "Да! Работа для меня! Какой контент вам нужен?"

Механизм сценариев на стороне сервера CNN: "... извините, БД, у меня есть копия первой страницы прямо в моем кэше, нет необходимости что-либо компилировать. Но, эй, возьмите этот идентификатор пользователя и сохраните его, я тоже отправлю его клиенту, чтобы мы знали, с кем мы поговорим позже ".

Сервер базы данных CNN: "Да!"

Вернуться на компьютер пользователя ...

TCP/IP: «Оооооо, вот и ответ. О, мальчик, почему у меня такое чувство, что это будет большой ... "

Браузер: «Ух, вау ... здесь есть все виды JavaScript-кода ... куча изображений, пара форм ... Хорошо, это займет некоторое время, чтобы сделать. Лучше доберись до этого. Эй, система IP, есть еще куча вещей, которые вам нужно получить. Давайте посмотрим, что мне нужно несколько таблиц стилей с i.cdn.turner.com - через HTTP и запросить файл /cnn/.element/css/2.0/common.css. А затем получите некоторые из этих сценариев на i.cdn.turner.com, я считаю до сих пор шесть ... »

TCP/IP: «Я получаю картину. Просто дайте мне адреса сервера и все такое. И оберните эти файлы в HTTP-запрос, я не хочу иметь с этим дело. "

DNS: «Проверка i.cdn.turner.com ... эй, мелочи, это на самом деле называется cdn.cnn.com.c.footprint.net. IP 4.23.41.126 "

Браузер: «Конечно, конечно ... подождите секунду, это займет несколько нсек, я пытаюсь понять весь этот сценарий ...»

TCP/IP: «Эй, вот CSS, который вы просили. О, и ... да, эти дополнительные сценарии также только что вернулись ".

Браузер: "Вот так, есть еще ... какое-то видеообъявление!"

TCP/IP: «О, мальчик, как весело это звучит ...»

Браузер: «Там тоже все виды изображений! И этот CSS выглядит немного противно ... верно, поэтому, если эта часть идет туда, и эта строка вверху ... как на земле это будет больше соответствовать ... нет, мне придется немного растянуть это сделать это... О, но этот другой CSS-файл переопределяет это правило ... Ну, это не будет легким рендерингом, это точно!"

TCP/IP: «Хорошо, хорошо, перестань отвлекать меня на секунду, здесь еще много работы».

Браузер: «Пользователь, вот небольшой отчет о проделанной работе. Извините, все это может занять несколько секунд, примерно 140 различных элементов для загрузки и до 16 пока ".

Спустя одну или две секунды ...

TCP/IP: «Хорошо, это все. Эй, послушай ... прости, что я оборвал тебя раньше, у тебя там дела? Это, конечно, кажется вам слишком тяжелым. "

Браузер: «Фу, да, это все эти веб-сайты в наши дни, они, конечно, не облегчают вам жизнь. Ну, я справлюсь. Это то, ради чего я здесь.

TCP/IP: «Я думаю, это довольно тяжело для всех нас в наши дни ... ох, прекратите злорадствовать там, DNS!"

Браузер: «Эй, пользователь! Сайт готов - иди и получай новости!"

20

Как работает Интернет: объяснение HTTP и CGI

Также отличное объяснение от CERN - alma mater of Web: как работает сеть

18
  • Браузер разбивает то, что вы вводите (URL) на имя хоста и путь.
  • Браузер формирует HTTP-запрос для запроса данных по указанному имени хоста и пути.
  • Браузер выполняет поиск DNS для преобразования имени хоста в IP-адрес.
  • Браузер формирует TCP/IP-соединение с компьютером, указанным через IP-адрес. (Это соединение на самом деле формируется из множества компьютеров, каждый из которых передает данные следующему.)
  • Браузер отправляет HTTP-запрос по соединению на указанный IP-адрес.
  • Этот компьютер получает HTTP-запрос от соединения TCP/IP и передает его программе веб-сервера.
  • Веб-сервер считывает имя хоста и путь и находит или генерирует запрашиваемые вами данные.
  • Веб-сервер генерирует HTTP-ответ, содержащий эти данные.
  • Веб-сервер отправляет этот HTTP-ответ обратно по TCP/IP-соединению на ваш компьютер.
  • Браузер получает HTTP-ответ и разделяет его на заголовки (описывающие данные) и тело (сами данные).
  • Браузер интерпретирует данные, чтобы решить, как отобразить их в браузере - обычно это данные HTML, которые определяют типы информации и их общую форму.
  • Некоторые из данных будут метаданными, которые определяют дополнительные ресурсы, которые необходимо загрузить, такие как таблицы стилей для подробной компоновки, встроенные изображения или Flash-фильмы. Эти метаданные снова указываются как URL, и весь этот процесс повторяется для каждого, пока все не будут загружены.
12

Первым шагом является поиск DNS (сервера доменных имен). Он использует DNS-серверы, указанные в настройках вашей сети (или предоставленные вам DHCP), для поиска верхнего домена (cnn.com), а затем запрашивает у сервера имен этого домена IP-адрес указанного субдомена (www.cnn.com).

Получив IP-адрес, ваш браузер начнет связь с веб-сервером. Это делается с использованием указанного протокола (который обычно по умолчанию HTTP 1.1). На сервер делается запрос «GET» для «/», который отвечает содержимым документа HTML и соответствующими заголовками (которые сообщают браузеру о типе содержимого документа, HTML и другой информации). Затем браузер анализирует документ и находит любые URL-адреса, которые ему нужно встроить в страницу (например, изображения или связанные таблицы стилей), и выполняет GET-запросы для каждого из них.

Браузер также обычно автоматически делает запрос GET для /favicon.ico (чтобы отобразить маленький значок CNN рядом с названием сайта).

Ваш браузер также, вероятно, будет указывать в своих заголовках запроса, что он хочет сжать содержимое ответа, используя алгоритм gzip. Это делает загрузку файла намного меньше, если сервер поддерживает это. Это все прозрачно для вас, даже если вы загружаете ZIP-файл и распаковываете его.

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

8

То, что происходит на стороне CNN, так далеко от других ответов.

  • Машина в CNN получает сообщение с вашего компьютера с просьбой предоставить эту страницу.
  • Он перенаправляет этот запрос на один из множества компьютеров, которые CNN использует для своего веб-сайта (причина этого в том, что таким образом вы можете распределить работу по объединению ответных веб-страниц на многих компьютерах).
  • Компьютер CNN получает ваш запрос и отвечает веб-страницей, которая, вероятно, почти полностью рассчитана, но, возможно, он изменит несколько вещей перед отправкой вам (это может быть реклама вверху, возможно, заголовок новостей). Иногда компьютеры собирают страницу из множества мелких компонентов каждый раз, когда получают запрос; не уверен, что делает CNN
  • ответ проходит через сеть к вашему компьютеру, который затем отображает его.
  • ответ не включал изображения: ваш компьютер затем отправляет еще один запрос на изображения, и в основном происходит тот же сценарий.
6

Это, очевидно, не техническое объяснение, но это симпатичная визуальная помощь (от превосходного Vladstudio.com), которая может быть полезна для некоторых:

Как работает интернет

1

Информация, которую вы только что попросили, может заполнить пару десятков книг. Но вот моя попытка объяснить это: ваш браузер говорит вашей ОС найти IP-адрес cnn.com. Затем ваша ОС запрашивает у DNS-сервера IP-адрес для cnn.com. IP-адрес отправляется брату, который связывается с IP-адресом и запрашивает страницу. Затем cnn.com отправляет вам и html-страницу. Браузеры анализируют HTML и отправляют информацию в средство визуализации HTML. Затем браузер сообщает ОС, что отображать на экране.

1

Джефф Мозер провел отличный технический анализ запроса HTTPS в своем блоге: первые несколько миллисекунд соединения HTTPS.

1

Вот действительно классное видео от "Sendung mit der Maus" (очень популярное немецкое детское телешоу, рассказывающее о технологиях для детей):

Die Sendung mit der Maus - Wie funktioniert das Internet (Как работает Интернет).

Только на немецком, к сожалению, но смешно даже без текста. Мужчины со смешными шлемами разыгрывают IP-пакеты, а данные записываются на бумажные карточки. Классика :-).

Кстати, объяснения на самом деле довольно хороши.

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