Учебник для вузов в. Олифер Н. Олифер Компьютерные Принципы, технологии, протоколы
Скачать 22.28 Mb.
|
Веб-служба Изобретение службы World Wide Web (WWW), или Всемирной паутины, стоит в одном ряду с изобретениями телефона, радио и телевидения. Благодаря WWW люди получили возможность доступа к нужной им информации в любое удобное для них время. Теперь проще найти интересующую вас статью в Интернете, чем в стопке журналов, хранящихся рядом в шкафу. Очень быстро исчезают многие традиционные приемы рациональной организации работы с информацией, заключающиеся, например, в хранении полезной ин формации в записных книжках, раскладывании вырезок из журналов и газет в картонные папки с веревочками, упорядочивании документов в каталогах путем наклеивания на них маркеров с условными кодами, помогающими быстро отыскать нужный документ и т. д. Этим приемам приходят на смену новые безбумажные технологии Интернета, среди ко торых важнейшей является сетевая служба WWW, или веб-служба. Заметим, что WWW не только предоставляет любому человеку возможность быстрого поиска нужных данных и доступа к ним, но и позволяет выносить на многомиллионную аудиторию пользователей 802 Глава 23. Сетевые службы Интернета собственную информацию — мнения, художественные и публицистические произведения, результаты научной работы, объявления и т. д. Причем он может это делать без особых организационных забот и практически бесплатно. Мы не будем долго останавливаться на описании всех возможностей этой службы, учиты вая, что для большинства из нас регулярный просмотр веб-сайтов стал не просто обыден ностью, а необходимым элементом жизненного уклада. Веб- и HTML-страницы Миллионы компьютеров, связанных через Интернет, хранят невообразимо огромные объемы информации, представленной в виде веб-страниц. О Веб-страница, или веб-документ, как правило, состоит из основного HTML-файла и,некоторого количества ссылок на другие объекты разного типа: JPEG- и GIF-изображения, другие HTML-файлы, аудио- и видеофайлы. Q Н Щ -ф яйлом , HTML-страницей или гипертекстовой страницей называют файл, который содержит текст, написанный на языке HTML (HyperText Markup Language — язык разметки гипертекста). История появления языка HTML связана с попытками программистов разработать средство, которое бы позволяло им программным путем создавать красиво сверстанные страницы для просмотра на экране. Другими словами, красивая картинка появляется на дисплее только в результате ее интерпретации специальной программой, а в исходном виде она представляет собой однообразный текст с множеством служебных пометок. Вместо применения различных приемов форматирования, таких как выделение заголовков круп ным шрифтом, а важных выводов — курсивным или полужирным начертанием, создатель документа на языках этого типа просто вставляет в текст соответствующие указания о том, что данная часть текста должна быть выведена на экран в том или ином виде. Служебные пометки такого рода в исходном тексте выглядят, например, как <Ь> Ь> (начать и за кончить вывод текста полужирным начертанием) и называются тегами. Язык HTML не является первым языком разметки текста, его предшественники существовали задолго до появления веб-службы, например в первых версиях ОС Unix существовал язык troff (с помощью этого языка отформатированы страницы электронной документации Unix, известные как тап-страницы). В язык HTML включены разные типы тегов, команд и параметров, в том числе для встав ки в текст изображений (тег <і mg s гс="..." >). Чтобы HTML-страница выглядела так, как задумал программист, она должна быть выведена на экран специальной программой, спо собной интерпретировать язык HTML. Такой программой является уже упоминавшийся веб-браузер. Существует особый тип*тега, который имеет вид <а h re f="..."> ...а> и называется гипер ссылкой. Гиперссылка содержит информацию о веб-странице или объекте, который может находиться как на том же компьютере, так и на других компьютерах Интернета. Отличие гиперссылки от других тегов состоит в том, что элемент, описываемый ею, не появляется автоматически на экране, вместо этого на месте тега (гиперссылки) на экран выводится не которое условное изображение или особым образом выделенный текст — имя гиперссылки. Чтобы получить доступ к объекту, на который указывает эта гиперссылка, пользователь Веб-служба 803 должен «щелкнуть» на ней, дав тем самым команду браузеру найти и вывести на экран требуемую страницу или объект. После того как новая веб-страница будет загружена, пользователь сможет перейти по следующей гиперссылке — такой «веб-серфинг» может продолжаться теоретически сколь угодно долго. Все это время веб-браузер будет находить указанные в гиперссылках страницы, интерпретировать все размещенные на них указания и выводить информацию на экран в том виде, в котором ее спроектировали разработчики этих страниц. URL Браузер находит веб-страницы и отдельные объекты по адресам специального формата, называемым URL (Uniform Resource Locator — унифицированный указатель ресурса). URL-адрес может выглядеть, например, так: http://www.olifer.co.uk/books/books.htm. В URL-адресе можно выделить три части: □ Тип протокола доступа. Начальная часть URL (http://) указывает на то, какой протокол должен быть использован для доступа к данным, расположение которых определяется оставшейся частью URL. Помимо HTTP, здесь могут быть указаны и другие протоколы, такие как FTP, telnet, также позволяющие осуществлять удаленный доступ к файлам или компьютерам1. □ DNS-имя сервера. Имя сервера, на котором хранится нужная страница. В нашем слу чае — это имя сайта www.olifer.co.uk. □ Путь к объекту. Обычно это составное имя файла (объекта) относительно главного каталога веб-сервера, предлагаемого по умолчанию. В нашем случае путем к объекту является /books/books.htm. По расширению файла мы можем сделать вывод о том, что это HTML-файл. Веб-клиент и веб-сервер Как мы уже отмечали, сетевая веб-служба представляет собой распределенную программу, построенную в архитектуре клиент-сервер. Клиент и сервер веб-службы взаимодействуют друг с другом по протоколу HTTP. f WOpde устанавливается ИФКОМ*' - m m іМГ Через этот интерфейс пользователь получает доступ к широкому набору услуг, главной из которых, конечно, является «веб-серфинг», включающий поиск и просмотр страниц, навигацию между уже просмотренными страницами, переход по закладкам и хранение истории посещений. Помимо средств просмотра и навигации, веб-браузер предоставляет пользователю возможность манипулирования страницами: сохранение их в файле на диске своего компьютера, вывод на печать, передача по электронной почте, контекстный поиск 1 Если в U R L -адресе не указывается т ип протокола доступа, то браузер по у м о л ч а н и ю использует протокол H T T P . 804 Глава 23. Сетевые службы в пределах страницы, изменение кодировки и формата текста, а также множество других функций, связанных с представлением информации на экране и конфигурированием самого браузера. К числу наиболее популярных сейчас браузеров можно отнести Internet Explorer компании Microsoft, Firefox компании Mozilla и последнее предложение компании Google — Chrome. Веб-браузер — это не единственный вид клиента, который может обращаться к веб-серверу. Эту роль могут исполнять любые программы и устройства, поддерживающие протокол HTTP, а также многие модели мобильных телефонов — для доступа в этом случае применя ется специальный протокол WAP (Wireless Application Protocol — протокол беспроводных приложений). Значительную часть своих функций браузер выполняет в тесной кооперации с веб сервером. Как уже было сказано, клиент и сервер веб-службы связываются через сеть по протоколу HTTP. Это означает, что в клиентской части веб-службы присутствует клиент ская часть HTTP, а в серверной — серверная часть HTTP. Веб-сервер — это программа, храиямшя Ьбь^ад ло^ьн^ компьютера, на котором она запущена, и обеспечивающая д о с т у п о б ъ е к т а м по UffiL-agpecaM. Наиболее популяр ными веб-серверами сейчас являются Apache и Microsoft internet Information Server. Корневой каталог HTTP Рис. 23.4. Отображение веб-страницы Как и любой другой сервер, веб-сервер должен быть постоянно в активном состоянии, прослушивая ТСР-порт 80, который является назначенным портом протокола HTTP. Как только сервер получает запрос от клиента, он устанавливает TCP-соединение и получает Веб-служба 805 от клиента имя объекта, например, в виде /books/books.htm, после чего находит в своем ка талоге этот файл, а также другие связанные с ним объекты и отсылает по ТСР-соединению клиенту. Получив объекты от сервера, веб-браузер отображает их на экране (рис. 23.4). После отправки всех объектов страницы клиенту сервер разрывает с ним ТСР-соединение. В дополнительные функции сервера входят также аутентификация клиента и проверка прав доступа данного клиента к данной странице. Для повышения производительности некоторые веб-серверы прибегают к кэшированию наиболее часто используемых в последнее время страниц в своей памяти. Когда приходит запрос на какую-либо страницу, сервер, прежде чем считывать ее с диска, проверяет, не находится ли она в буферах более «быстрой» оперативной памяти. Кэширование страниц осуществляется и на стороне клиента, а также на промежуточных серверах (прокси- серверах). Кроме того, эффективность обмена данными с клиентом иногда повышают путем компрессии (сжатия) передаваемых страниц. Объем передаваемой информации уменьшают также за счет того, что клиенту передается не весь документ, а только та часть, которая была изменена. Все эти приемы повышения производительности веб-службы реализуются средствами протокола HTTP Протокол HTTP HTTP (HyperText Transfer Protocol — протокол передачи гипертекста)1 — это протокол прикладного уровня, во многом аналогичный протоколам FTP и SMTP. В настоящее время используются две версии протокола HTTP 1.0 и HTTP 1.1 Обмен сообщениями идет по обычной схеме «запрос-ответ». Клиент и сервер обменива ются текстовыми сообщениями стандартного формата, то есть каждое сообщение пред ставляет собой нескольких строк обычного текста в кодировке ASCII. Для транспортировки HTTP-сообщений служит протокол TCP. При этом ТСР-соединения могут использоваться двумя разными способами: □ Долговременное соединение — передача в одном TCP-соединении нескольких объектов, причем время существования соединения определяется при конфигурировании веб службы. □ Кратковременное соединение — передача в рамках одного TCP-соединения только одного объекта. Долговременное соединение, в свою очередь, может быть использовано двумя способами: □ Последовательная передача запросов с простоями — новый запрос посылается только после получения ответа. □ Конвейерная передача — это более эффективный способ, в котором следующий за прос посылается до прибытия ответа на один или несколько предыдущих запросов (напоминает метод скользящего окна). Обычно по умолчанию степень параллелизма устанавливается на уровне 5-10, но у пользователя имеется возможность изменять этот параметр при конфигурировании клиента. В HTTP 1.1 по умолчанию применяются постоянные соединения и конвейерный режим. і RFC 1945,2616. 806 Глава 23. Сетевые службы Формат НТТР-сообщений В протоколе HTTP все сообщения состоят из текстовых строк. Сообщения как запросов, так и ответов имеют единую обобщенную структуру из трех частей: обязательной старто вой строки, а также необязательных заголовков и тела сообщения. В табл. 5.1 приведены форматы и примеры стартовых строк и заголовков для запросов и ответов. Таблица 5.1. Форматы стартовых строк и заголовков Обобщенная структура сообщения НТТР-запрос НТТР-ответ Стартовая строка (всегда должна быть первой строкой сообщения; обя зательный элемент) Формат запроса Метод/ URL HTTP/l.x. Пример: GET /books/ books.htm HTTP/1.1 Формат ответа: HTTP/l.x КодСо- стояния Фраза. Пример: НТТР/1.0 200 ОК Заголовки (следуют в произвольном порядке; могут отсутствовать) Заголовок о DNS-имени компьютера, на котором расположен веб-сервер. Пример: Host: www.olifer.co.uk Заголовок о времени отправления данного ответа. Пример: Date: 1 Jan 2009 14:00:30 Заголовок об используемом браузе ре. Пример: User-agent: Mozilla/5.0 Заголовок об используемом веб сервере. Пример: Server: Apache/1.3.0 (Unix) Заголовок о предпочтительном язы ке. Пример: Accept-language: ru Заголовок о количестве байтов в теле сообщения. Пример: Content-Length: 1234 Заголовок о режиме соединения. Пример: Connection: close Заголовок о режиме соединения. Пример: Connection: close Пустая строка Тело сообщения (может отсутствовать) Здесь могут быть расположены клю чевые слова для поисковой машины или страницы для передачи на сервер Здесь может быть расположен текст запрашиваемой страницы Как видно из таблицы, запросы и ответы имеют разные форматы стартовой строки. Каждая из них состоит из трех элементов, включающих поле версии протокола HTTP. И в запросе, и в ответе примера указана версия HTTP 1.1. Стартовая строка запроса включает в себя поле метода — это название операции, которая должна быть выполнена. Чаще всего в за просах используется метод GET, то есть запрос объекта. Именно он включен в наш пример запроса. Помимо этого метода в запросах протокол предусматривает и другие методы, такие как POST, который используется клиентом, например, для отправки электронной почты или в поисковых машинах, когда клиент запрашивает у сервера не определенный объект, а объекты, содержащие ключевые слова, помещенные в теле сообщения. Еще одним элементом стартовой строки является URL-ссылка на запрашиваемый объект — здесь это имя файла /books/books.htm. В стартовой строке ответа, помимо уже упоминавшегося указания на версию протокола HTTP, имеется поле кода состояния и поле фразы для короткого текстового сообщения, поясняющего данный'код пользователю. В настоящее время стандарты определяют пять классов кодов состояния: □ 1хх — информация о процессе передачи; □ 2хх — информация об успешном принятии и обработки запроса клиента (в таблице в примере стартовой строки ответа приведен код и соответствующая фраза 200 0К со общает клиенту, что его запрос успешно обработан); Веб-служба 807 □ Зхх — информация о том, что для успешного выполнения операции нужно произвести следующий запрос по другому URL-адресу, указанному в дополнительном заголовке L o c a t i on ; □ 4хх — информация об ошибках на стороне клиента (читатель наверняка не раз стал кивался с ситуацией, когда при указании адреса несуществующей страницы браузер выводил на экран сообщение 4 0 4 N o t F o u n d ) ; □ 5хх — информация о неуспешном выполнения операции по вине сервера (например, сообщение 5 0 5 h t t p V e r s i o n N o t S u p p o r t e d говорит о том, что сервер не поддерживает версию HTTP, предложенную клиентом). Среди кодов состояния имеется код 401, сопровождаемый сообщением a u t h o r i z a t i o n r e q u i r e d . Если клиент получает такое сообщение в ответ на попытку доступа к странице или объекту, это означает, что доступ к данному ресурсу ограничен и требует авторизации 1 пользователя. Помимо поясняющей фразы сервер помещает в свой ответ дополнительный заголовок w w w - A u t h e n t i c a t e d . .. >, который сообщает клиенту, какую информацию он должен направить серверу для того, чтобы процедура авторизации могла быть выпол нена. Обычно это имя и пароль. Веб-клиент с момента получения такого ответа сервера начинает добавлять во все свои запросы к ресурсам данного сервера дополнительный заголовок A u t h o r i z a t i o n : <гшя, паролъ>, который содержит информацию, необходимую для авторизации доступа. Динамические веб-страницы До сих пор мы подразумевали, что содержание страницы не изменяется в зависимости от действий пользователя. Когда пользователь щелкает на гиперссылке, то он переходит на новую страницу, а если выполняет команду возвращения обратно, то на экране снова появляется предыдущая страница в неизменном виде. Такие страницы называются стати ческими. Однако в некоторых случаях было бы очень желательно, чтобы содержание страницы изме нялось в зависимости от действий пользователя, например при наведении указателя мыши на определенную область страницы там появлялся бы рисунок вместо текста или значка. Динамическое воспроизведение состояния базы данных также является типичным при мером ситуации, когда статическая страница не может решить задачу. Например, многие интернет-магазины поддерживают базу данных продаваемых товаров, и вывод количества оставшихся в наличии товаров требует динамического обновления соответствующего поля веб-страницы. Веб-страницы, которые могут генерировать выводимое на экран содержание, меняющееся в зависимости от некоторых внешних условий, называются динамическими. Динамика страницы достигается п у т е м ее программирования, обычно для этого использу ются программные языки сценариев, такие как Perl, РНР или JavaScript. Различают два класса программ, предназначенных для создания динамического содержа ния веб-страниц: □ программы, работающие на стороне клиента (то есть на том компьютере, где запущен веб-браузер, воспроизводящий страницу на экране); □ программы, работающие на стороне сервера. 1 Об аутентификации и авторизации читайте в главе 24. |