В 1994 году CERN и Массачусетский технологический институт (M.I.T., Massachusetts Institute of Technologies) подписали соглашение об основании WWW-консорциума (World Wide Web Consortium, иногда применяется сокращение W3C) — организации, цель которой заключалась в дальнейшем развитии Всемирной паутины, стандартизации протоколов и поощрении взаимодействия между отдельными сайтами. Бернерс-Ли стал директором консорциума. Хотя о Всемирной паутине уже написано очень много книг, лучшее место, где вы можете получить самую свежую информацию о ней, это сама Всемирная паутина. Домашнюю страницу консорциума можно найти по адресу http://www.w3.org. На этой странице заинтересованный читатель найдет ссылки на другие страницы, содержащие информацию обо всех документах консорциума и о его деятельности.
7.3.1. Представление об архитектуре
С точки зрения пользователя Всемирная паутина состоит из огромного количества контента в форме веб-страниц (Web pages), которые часто называются просто страницами (pages) для краткости. Каждая страница может содержать ссылки (указатели) на другие связанные с ней страницы в любой точке мира. Пользователи могут переходить по ссылке (например, просто щелкнув на ней мышью), при этом страница, на которую указывает ссылка, загружается и появляется в окне браузера. Этот процесс можно повторять бесконечно. Идея страниц, связанных между собой, ныне называемых гипертекстом (hypertext), была впервые пророчески предложена в 1945 году, задолго до появления Интернета, Ванневаром Бушем (Vannevar Bush), профессором из Массачусетского университета, занимавшимся электротехникой. На самом деле, это случилось даже до того, как появились коммерческие компьютеры, хотя в университетах уже существовали грубые прототипы, которые занимали огромные помещения, а по мощности уступали современным карманным калькуляторам.
Страницы просматриваются специальной программой, называемой браузером (browser). Самыми популярными браузерами являются программы Firefox, Internet Explorer и Chrome. Браузер предоставляет пользователю запрашиваемую страницу, интерпретирует ее контент и выводит должным образом отформатированные страницы на экран. Контент может быть представлен в виде сочетания текста, изображений и команд форматирования и выглядеть как обычный документ или как видео или программы с определенным графическим интерфейсом, в рамках которого может работать пользователь.
Пример веб-страницы дан в верхнем левом углу рис. 7.7. Это страница факультета информатики и вычислительной техники в Вашингтонском университете. На ней присутствуют текст и графические элементы (правда, не в том масштабе, чтобы все можно было хорошо разобрать). Некоторые части страницы связаны с другими страницами ссылками. Строки текста, значки, изображения и т. д., представляющие собой ссылки на другие страницы, называются гиперссылками (hyperlink). Чтобы перейти по ссылке, пользователь перемещает указатель мыши в выделенную область, при этом меняется форма указателя, и щелкает на ней. Переход по ссылке является просто сообщением браузеру того, что нужно загрузить другую страницу. Поначалу ссылки выделялись либо подчеркиванием, либо другим цветом, чтобы их можно было различить на странице. Сегодня создатели веб-страниц постоянно контролируют внешний вид ссылок, так что они могут быть выглядеть как значки, или менять внешний вид, когда в их области появляется курсор мышки. Сделать ссылки визуально отличимыми и обеспечить им подходящий интерфейс — задача создателей сайтов.
Студенты факультета могут получить дополнительную информацию, пройдя по ссылке, предназначенной специально для них. Ссылка активируется по щелчку на обведенном поле. При этом браузер получит из сети новую страницу и отобразит ее (как показано в левом нижнем углу рис. 7.7) на экране. Помимо этого на первой странице есть еще десятки ссылок. Каждая новая страница может состоять из контента, расположенного как на той же самой машине, что и первая страница, так и на компьютере, расположенном на противоположном конце Земли. Для пользователя это не заметно. Браузер добывает запрашиваемые страницы без участия пользователя.
Таким образом, пользователь может постоянно перемещаться между компьютерами, просматривая контент.
Рис. 7.7. Архитектура Всемирной паутины
Основной принцип, стоящий за отображением страниц, также показан на рис. 7.7. Браузер отображает веб-страницу на клиентской машине. Каждая страница отображается посредством отсылки запроса на один или более серверов, который отвечает, передавая контент страницы. Протокол запроса-ответа для отображения страниц — это простой текстовый протокол, который работает через TCP, так же как и в случае с SMTP. Он называется HTTP (HyperText Transfer Protocol — протокол передачи гипертекста). В качестве контента может выступать простой документ, который считывается с диска, или результат работы программы или запроса, отосланного в базу данных. Страница называется статичной (static page), если она представляет из себя статичный документ, который всегда отображается одинаково. Если страница, напротив, создается по требованию программы или сама содержит какую-либо программу, она называется динамической (dynamic page).
Контент динамической страницы может быть разным при каждом вызове. Например, главная страница электронного магазина может выглядеть различно для каждого посетителя. Если клиент книжного магазина в прошлом покупал мистические романы, при посещении главной страницы магазина он, вероятно, увидит изображения новых триллеров, в то время как человек, больше интересующийся новыми рецептами, обнаружит на этой странице новые кулинарные книги. Вкратце мы расскажем, как вебсайты следят за тем, кто что покупает. Если не вдаваться в детали, дело заключается в файлах cookie (даже в отношении тех, кто не особо интересуется кулинарией)5.
На рисунке браузер обращается к трем серверам, чтобы загрузить две страницы, cs.washington.edu, youtube.com и google-analytics.com. Контент с этих серверов интегрируется и отображается браузером. При отображении запускается обработка, тип которой зависит от типа контента. Кроме отображения текста и графических элементов, может возникнуть необходимость проиграть видеофайл или запустить скрипт, в котором прописан отдельный пользовательский интерфейс, являющийся частью страницы. В нашем случае с сервера cs.washington.edu загружается главная страница, с сервера youtube.com — размещенное на ней видео, а с сервера google-analytics.com — ничего из того, что видно пользователю; этот сервер ведет запись посетителей сайта. Позднее мы еще поговорим о трекерах.
Сторона клиента
Давайте теперь более детально рассмотрим сторону веб-браузера, основываясь на рис. 7.7. По сути дела, браузер — это программа, которая может отображать вебстраницы и распознавать щелчки мыши на элементах активной страницы. При выборе элемента браузер следует по гиперссылке и получает с сервера запрашиваемую страницу.
Когда была создана Всемирная паутина, сразу стало очевидным, что наличие ссылок с одних страниц на другие требует создания механизма именования и расположения страниц. Самыми важными вопросами, на которые необходимо было дать ответ перед отображением выбранной страницы, были следующие:
1. Как называется страница?
2. Где она расположена?
3. Как можно получить к ней доступ?
Если каждой странице приписать уникальное имя, в их идентификации не было бы никакой неоднозначности. Тем не менее это не решило бы проблему. Рассмотрим параллель между людьми и страницами. В США почти у каждого есть номер социальной страховки, который является уникальным идентификатором, так как у двух разных людей не может быть одного номера социальной страховки. Тем не менее, если у вас есть только номер этой страховки какого-то человека, вы не сможете выяснить его адрес, и уж конечно вы никак не сможете определить, на каком языке следует писать этому человеку, на английском, испанском или китайском. Во Всемирной паутине возникают примерно те же проблемы.