Лекции 2010-го года (1130544), страница 92
Текст из файла (страница 92)
Этоозначает, что будет использоваться тип доступа через протокол HTTP, схема доступаотделена двоеточием «:» и указывает на использование протокола HTTP, следующие двекосые черты отделяют последующий адрес сервера cmc.cs.msu.su; выгружаемый файл сименем /curr/cn/mac.html - путь к запрашиваемому файлу.Другими словами, URL, URI и URN - это средства для согласованной идентификацииресурсов в сети Интернет.URI ресурса может содержать не только имя ресурса, но и параметры, необходимые дляего работы.
Имя ресурса отделено от строки параметров символом «?». Строка параметровсостоит из лексем, разделяемых символом "&". Каждая такая лексема состоит из именипараметра и его значения, разделенных символом «=». Символы, не входящие в наборсимволов ASCII, заменяются знаком «%» и шестнадцатеричным значением этого символа.Для указанного ресурса вся строка параметров является одним строковым параметром,поэтому тип, очередность или уникальность имен отдельных параметров строки несущественны.7.6.1.1. HyperText Markup Language (HTML)HTML - это язык описания содержащейся в узлах Интернета информации. HTML-файлпредставляет собой обычный ASCII-текст, содержащий специальные коды, которыеобозначают присоединенную к файлу графику, видео-, аудиоинформацию илиисполняемые коды среды просмотра информации - веб-браузера - Java Script, Java Classes.Вся эта информация хранится в файлах на веб-сервере. Когда веб-браузер получает доступк этому файлу, он сначала интерпретирует закодированную в HTML-файле информацию,а затем предоставляет для пользователя всю информацию в графическом или текстовомвиде веб-страниц.HyperText в HTML - основная концепция размещения информации в Web.
HyperText илиhyperlinks (гиперссылки), содержит связи (URL) внутри текстового документа, которыепозволяют пользователю быстро переходить от одной части документа к другой или кдругому документу.Web реализует концепцию файлов с гиперссылками и использует ее на другом уровне,установив гиперссылку между веб-страницами и веб-узлами. Щелкнув мышью на одномиз объектов гиперссылки на одной веб-странице, пользователь может не толькопередвигаться внутри одного веб-узла между его страницами, но и перемещаться надругие узлы с ресурсами, расположенные в другом месте и, вероятно, использующиедругие методы. Это открывает возможности навигации по Интернету, несуществовавшейдо появления веб-серверов.HTML - стандарт, не зависящий от платформы, потому что он не содержит каких-либопараметров, специфицирующих ту или иную платформу.
Например, параметры могутопределять размер используемого шрифта, но не содержат указаний на то, какой шрифтиспользовать. Выбрать нужный шрифт предоставляется браузеру на основе тех, которыеимеются на данном компьютере.Управляющими конструкциями языка являются теги. Теги представляют собой ключевыеслова, заключенные в угловые скобки. Ключевые слова - это обычные слова английскогоязыка, обозначающие ту или иную команду, которая должна быть применена к тексту,обрамленному тегами.7.6.1.2.
Common Gateway Interface (CGI)CGI - это стандарт расширения функциональности Интернета, позволяющий веб-серверамвыполнять программы, аргументами работы которых может управлять пользователь. Вебсерверы позволяют запрашивать статические HTML-страницы и просматривать их спомощью браузера. CGI расширяет возможности пользователя и позволяет ему выполнятьпрограммы, ассоциированные с данной веб-страницей, а также получать динамическиинформацию из веб-сервера.CGI-интерфейс в основном служит как шлюз между веб-сервером и внешнимиисполняемыми программами. Он получает запрос от пользователя, передает его внешнейпрограмме и затем возвращает результаты пользователю через динамически построеннуювеб-страницу.
При этом построенные страницы могут коренным образом отличаться другот друга, если они построены в зависимости от переданных пользователем параметров.Чаще всего CGI используется для выборки информации из баз данных. Пользовательвводит запрос на веб-странице, веб-сервер его читает, передает соответствующемуприложению или запускает процесс для его обработки, получает результат запроса ипоказывает его пользователю.Механизм CGI полностью не зависит от платформы и может передавать данные междулюбыми веб-серверами, поддерживающими механизм CGI.
Поскольку CGI основан наисполняемых файлах, нет ограничений на тип программы, которая будет исполняться вCGI. Программа может быть написана на любом из языков программирования,позволяющем создавать исполняемые модули, - С/С++, FORTRAN, Pascal, Visual Basicили PowerBuilder. CGI-программа также может быть написана с использованиемкомандных языков операционных систем, таких как Perl или Shell.В последнее время бурно развивается тенденция активных серверных страниц, такназываемых ASP. По сути, это использование того же самого стандарта CGI, только науровне объектно-ориентированного подхода к построению веб-страниц.7.6.2. Принципы построения HTTP-соединенияПротокол HTTP построен по модели «запрос-ответ».
Иными словами, клиентустанавливает соединение с сервером и отправляет запрос. В нем указан тип запроса, URL(URI, URN), версия протокола HTTP (поскольку формат запроса может меняться отверсии к версии) и содержание запроса: информация клиента (параметры) и, возможно,сопровождающая информация или тело сообщения. Сервер HTTP отвечает строкойстатуса обработки запроса, которая содержит: версию поддерживаемого протокола, кодобработки запроса или код ошибки и возвращаемую по запросу информацию.Информация тела сообщения как клиента, так и сервера должна быть представлена вMIME-формате (см.
раздел 7.5).HTTP-соединение инициируется браузером пользователя. Оно состоит из запроса кресурсу определенного сервера. В простейшем случае соединение представляет собойпоток данных между клиентом - инициатором соединения и сервером (рисунок 7-60).Рисунок 7-60. HTTP-соединение (простой случай)В более сложной ситуации в процессе передачи данных принимают участие несколькопромежуточных объектов (рисунок 7-61). Они могут быть трех видов: proxy(промежуточный агент), gateway (шлюз) и tunnel (туннель).Рисунок 7-61. HTTP-соединение (сложный случай)• Proxy представляет собой промежуточный агент, который принимает запросклиента и, в зависимости от своих настроек, изменяет часть или все сообщение,содержащее запрос, и передает переформатированное сообщение далее поцепочке, например, другим серверам или запрашиваемому серверу.
В моментпринятия запросов proxy может работать как сервер, а при передаче запросов как клиент. Proxy часто используется как ретранслятор протоколов внутреннейсети в Интернет и, как правило, представляет собой «главные ворота» выходапользователей внутренней сети наружу.• Gateway (шлюз) представляет собой промежуточный сервер. В отличие от proxy,шлюз принимает запросы клиента, будто он и есть запрашиваемый сервер ипередает их далее. Работа шлюза совершенно прозрачна для клиента.
Шлюз, какправило, используется как ретранслятор запросов или протоколов внешней сетиво внутреннюю, к ресурсам сервера, т.е. это «главные ворота» входапользователей внешней сети.• Tunnel (туннель) представляет собой программу-посредник между двумясоединениями. Туннели используются в тех случаях, когда необходимоорганизовать поток данных через какой-либо промежуточный объект (например,тот же proxy), который не может интерпретировать структуру потока данных.На рисунке 7-61 показано соединение между клиентом и сервером с тремяпромежуточными объектами (А, В и С).
Сообщения запроса и ответа должны пройтичерез четыре отдельных канала, а каждый из промежуточных объектов можетодновременно поддерживать несколько соединений. Например, В может получатьодновременно запрос как от А, так и от других клиентов, и передавать сообщения на С ина другие серверы.Каждый из объектов - участников соединения, за исключением туннеля, можетподдерживать внутренний кэш запросов и ответов.• Cash (кэш) представляет собой локальную базу данных сообщений ответов исистему управления этой базой.
Кэш хранит ответы серверов и возвращает их позапросу клиента, не передавая запрос следующему объекту цепочки соединения.Эффект от использования кэша состоит в том, что он уменьшает длину цепочкии тем самым уменьшает время соединения. Однако необходимо помнить, чтодалеко не все ответы могут кэшироваться. Некоторые запросы могут содержатьпараметры, накладывающие ограничения на работу кэша.HTTP - это протокол прикладного уровня, который, как правило, работает поверх стекаTCP/IP, хотя, как всякий протокол прикладного уровня, он может работать над любымдругим транспортном протоколом, обеспечивающем надежное и достоверное соединение.При работе по ТСР сервер HTTP использует, как правило, порт 80, хотя возможноиспользование и других портов.HTTP-соединение должно открываться клиентом перед каждым запросом и закрыватьсясервером после отправки ответа.
Как клиент, так и сервер должны иметь в виду, чтосоединение может быть преждевременно закрыто либо пользователем, либо по истечениивремени соединения, либо из-за сбоя системы.7.6.3. Методы запросаПосле установления TCP-соединения между клиентом и сервером HTTP клиентотправляет на сервер запрос.