
Что происходит за кулисами, когда мы набираем www.cnn.com в браузере, и как информация отображается на экране?
Буду весьма признателен за техническое объяснение.
решение1
Браузер:«Итак, у меня есть пользователь, запрашивающий этот адрес: 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:«Нжоо! Клиент! Ему нужны новости! Первая полоса! Что скажете?»
Серверный скриптовый движок CNN:«Ладно, так и будет! Первая полоса, да?»
Сервер базы данных CNN:«Йей! Работай на меня! Какой контент тебе нужен?»
Серверный скриптовый движок CNN:«... эм, извини, DB, у меня есть копия первой страницы прямо здесь, в моем кэше, не нужно ничего компилировать. Но эй, возьми этот идентификатор пользователя и сохрани его, я отправлю его также клиенту, чтобы мы знали, с кем мы говорим позже».
Сервер базы данных 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!»
Браузер:«Эй, пользователь! Сайт готов — иди и получи новости!»
решение2
Как работает Интернет: объяснение HTTP и CGI
Также отличное объяснение от ЦЕРНа - альма-матер Интернета:Как работает Интернет
решение3
- Браузер разделяет введенный вами URL-адрес на имя хоста и путь.
- Браузер формирует HTTP-запрос для запроса данных по указанному имени хоста и пути.
- Браузер выполняет поиск DNS для преобразования имени хоста в IP-адрес.
- Браузер формирует TCP/IP-соединение с компьютером, указанным через IP-адрес. (Это соединение на самом деле формируется из многих компьютеров, каждый из которых передает данные следующему.)
- Браузер отправляет HTTP-запрос по соединению на указанный IP-адрес.
- Этот компьютер получает HTTP-запрос от TCP/IP-соединения и передает его программе веб-сервера.
- Веб-сервер считывает имя хоста и путь и находит или генерирует запрошенные вами данные.
- Веб-сервер генерирует HTTP-ответ, содержащий эти данные.
- Веб-сервер отправляет этот HTTP-ответ обратно по TCP/IP-соединению на ваш компьютер.
- Браузер получает HTTP-ответ и разбивает его на заголовки (описывающие данные) и тело (сами данные).
- Браузер интерпретирует данные, чтобы решить, как их отображать в браузере. Обычно это данные HTML, которые определяют типы информации и их общую форму.
- Некоторые из данных будут метаданными, которые определяют дополнительные ресурсы, которые необходимо загрузить, такие как таблицы стилей для подробной компоновки, или встроенные изображения, или Flash-ролики. Эти метаданные снова указываются как URL, и весь этот процесс повторяется для каждого, пока все не будут загружены.
решение4
Пока что среди других ответов отсутствует то, что происходит на стороне CNN:
- Машина CNN получает сообщение от вашего компьютера с просьбой открыть страницу.
- Он перенаправляет этот запрос на один из многих компьютеров, которые CNN использует для своего веб-сайта (причина этого в том, что таким образом можно распределить работу по составлению ответных веб-страниц между многими компьютерами).
- Компьютер CNN получает ваш запрос и отвечает веб-страницей, которая, вероятно, почти полностью предварительно вычислена, но, возможно, она изменит несколько вещей перед отправкой ее вам (может быть, реклама вверху, может быть, заголовок новостей). Иногда компьютеры собирают страницу из множества мелких компонентов каждый раз, когда получают запрос; не уверен, что делает CNN
- ответ передается по сети на ваш компьютер, который затем отображает его.
- ответ не включал изображения: затем ваш компьютер отправляет еще один запрос на изображения, и происходит примерно тот же сценарий.