Литмир - Электронная Библиотека

Как показано в нашем примере, HTML-страницы могут содержать разнообразные элементы контента, а не только текст и гипертекст. Строго говоря, не всем страницам необходимо содержать HTML. Страница может содержать видео в формате MPEG, документ в формате PDF, фотографию в формате JPEG, песню в формате MP3 и еще сотни различных типов файлов. Поскольку стандартные HTML-страницы могут иметь ссылки на любые файлы, у браузера возникает проблема обработки страницы, которую он не может интерпретировать.

Вместо того чтобы наращивать возможности и размеры браузеров, встраивая в них интерпретаторы для различных типов файлов (количество которых быстро растет), обычно применяется более общее решение. Когда сервер возвращает в ответ на запрос какую-либо страницу, вместе с ней высылается некоторая дополнительная информация о ней. Эта информация включает MIME-тип страницы (см. табл. 7.6). Страницы типа text/html выводятся браузером напрямую, как и страницы некоторых других встроенных типов. Если же для данного MIME-типа внутренняя интерпретация невозможна, браузер определяет, как выводить страницу, по своей таблице MIME-типов. В данной таблице в соответствие каждому типу ставится программа просмотра.

Существует два способа отображения: с помощью подключаемого модуля, плагина (plug-in), или вспомогательных приложений. Подключаемый модуль представляет собой особый сторонний код, который браузер извлекает из специального каталога на жестком диске и устанавливает в качестве своего расширения, как показано на рис. 7.8, а. Стандартными примерами являются плагины для PDF, Flash и Quick-time, позволяющие работать с документами и проигрывать аудио и видео. Поскольку подключаемые модули работают внутри браузера, у них есть доступ к текущей странице, вид которой они могут изменять. После завершения своей работы (обычно это связано с переходом пользователя на другую страницу), подключаемый модуль удаляется из памяти браузера.

Компьютерные сети. 5-е издание - _391.jpg

Рис. 7.8. Браузер с подключаемым модулем (а); вспомогательное приложение (б)

Каждый браузер имеет набор процедур, которые должны реализовывать все подключаемые модули. Это нужно для того, чтобы браузер мог обращаться к последним. Например, существует стандартная процедура, с помощью которой базовый код браузера передает подключаемому модулю данные для отображения. Набор этих процедур образует интерфейс подключаемого модуля и является специфичным для каждого конкретного браузера.

Кроме того, браузер предоставляет подключаемому модулю определенный набор своих процедур. Среди них в интерфейс браузера обычно включаются процедуры распределения и освобождения памяти, вывода сообщений в строке статуса браузера и опроса параметров браузера.

Перед использованием подключаемого модуля его нужно установить. Этот процесс подразумевает, что пользователь копирует с веб-сайта производителя модуля установочный файл. Запуск установочного файла распаковывает подключаемый модуль, регистрирует в браузере MIME-тип и ассоциирует этот тип с модулем. Обычно в браузерах заранее загружены популярные плагины.

Вторым способом расширения возможностей браузера является использование вспомогательных приложений (helper application). Вспомогательное приложение — это полноценная программа, работающая как отдельный процесс. Это показано на рис. 7.8, б. Поскольку она никак не связана с браузером, между ними отсутствует какой бы то ни было интерфейс. Вспомогательное приложение обычно принимает от браузера имя временного файла, содержащего данные для отображения, открывает файл и отображает контент. Обычно в роли вспомогательных приложений выступают большие программы, которые существуют отдельно от браузера, например Microsoft Word или PowerPoint.

Многие вспомогательные приложения используют MIME-тип application (приложение). В результате было определено существенное число подтипов, например application/vnd.ms-powerpoint для файлов PowerPoint; vnd обозначает формат, зависящий от поставщика. Таким образом, URL может напрямую указывать на файл PowerPoint, и когда пользователь щелкает на нем, автоматически загружается PowerPoint, обрабатывает нужный файл и отображает его. Вспомогательные приложения могут пользоваться не только MIME-типом application. Так, например, Adobe Photoshop использует image/x-photoshop.

Получается, что браузер можно настроить на обработку практически любого количества типов файлов, не внося в него никаких изменений. Современные веб-серверы часто содержат сотни комбинаций типов и подтипов файлов. Новые типы файлов появляются всякий раз при установке новых программ.

Источником конфликтов является то, что большое количество плагинов и вспомогательных приложений могут обрабатывать один и тот же подтип, например video/mpg. В результате программа, которая регистрируется последней, затирает своей записью существующую ассоциацию с типом MIME и оставляет его за собой. Следствием этого является то, что каждая устанавливаемая программа может изменить метод отображения браузером некоторых типов.

Браузеры могут работать и с локальными файлами без соединения с сетью, не запрашивая информацию с удаленных серверов. Однако браузеру нужно каким-то хитрым образом определить MIME-тип файла. Стандартный метод заключается в ассоциировании на уровне операционной системы расширения файла с типом MIME. В стандартной конфигурации попытка открыть файл foo.pdf приведет к его открытию в браузере с использованием плагина application/pdf, а файл bar.doc будет открыт во вспомогательном приложении Word.

Здесь также возможны конфликты, поскольку многие программы страстно желают поддерживать, например, .mpg. Профессиональные программы при установке обычно выводят флажки, позволяющие выбрать поддерживаемые типы MIME и расширения. Таким образом, пользователь может выбрать то, что ему требуется, и таким образом избежать случайного затирания существующих ассоциаций. Программы, нацеленные на массового потребителя, полагают, что большинство пользователей понятия не имеют о типах MIME и просто захватывают все, что могут, совершенно не обращая внимания на ранее установленные программы.

Расширение возможностей браузера по поддержке новых типов файлов — это удобно, но может также привести к возникновению некоторых проблем. Когда браузер на компьютере с Windows получает файл с расширением exe, он думает, что это исполняемая программа и никаких вспомогательных средств для нее не требуется. Очевидно, следует просто запустить программу. Однако такой подход может оказаться серьезной дырой в системе защиты информации. Злоумышленнику требуется лишь создать нехитрый сайт с фотографиями, скажем, знаменитых киноактеров или спортсменов, и поставить ссылки на вирусы. Один-единственный щелчок мышкой на фотографии может в этом случае привести к запуску непредсказуемой и, возможно, опасной программы, которая будет действовать на машине пользователя. Для предотвращения подобных нежелательных ситуаций Firefox и другие программы настроены на избирательный запуск неизвестных программ, однако не все пользователи понимают, что безопасный выбор важнее удобного.

Сторона сервера

О стороне клиента сказано уже достаточно много. Поговорим теперь о стороне сервера. Как мы уже знаем, когда пользователь вводит URL или щелкает на гиперссылке, браузер производит структурный анализ URL и интерпретирует часть, заключенную между http:// и следующей косой чертой, как имя DNS, которое следует искать. Вооружившись IP-адресом сервера, браузер устанавливает TCP-соединение с 80 портом этого сервера. После этого отсылается команда, содержащая оставшуюся часть URL, в которой указывается путь к странице на сервере. Сервер возвращает браузеру запрашиваемый файл для отображения.

В первом приближении простой веб-сервер напоминает сервер, представленный в листинге 6.1. Этому серверу, как и настоящему веб-серверу, передается имя файла, который следует найти и отправить по сети. В обоих случаях в основном цикле сервер выполняет следующие действия:

230
{"b":"639789","o":1}