Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lec.doc
Скачиваний:
16
Добавлен:
05.12.2018
Размер:
2.61 Mб
Скачать

1.6.4 Mime, типы и расширения

Как мы знаем, в World Wide Web доступна информация самого различного рода, закодированная во множестве разнообразных форматов. Некоторые из этих форматов "понимает" сама программа просмотра, другие она передает программам-помощникам. Возникает вполне законный вопрос о том, как программа просмотра распознает формат файла, загруженного с локального диска или с удаленного WWW-сервера. Ответ таков: При загрузке файлов с локального диска программа просмотра определяет тип по расширению имени файла. Если же файл приходит с удаленного WWW-сервера, то сервер высылает программе просмотра некоторую служебную информацию перед тем, как передавать собственно содержимое требуемого файла. Эта служебная информация включает стандартный идентификатор типа файла (Content-Type), на который в этом случае и ориентируется программа просмотра. Такой идентификатор типа получил название MIME-type, где MIME - аббревиатура начальных букв Multiporpose Internet Mail Extensions (Многоцелевые Расширения Электронной Почты Internet). Для MIME в последнее время используется также название Internet Media Types. Идентификатор типа MIME состоит из двух частей: идентификатора типа и идентификатора подтипа, разделенных косой чертой /. Некоторые из наиболее часто встречающихся типов файлов, их расширения и стандартные MIME-типы приведены в нижеследующей таблице.

Вам, как пользователю программы просмотра, возможно, придется столкнуться с MIME-типами при настройке так называемых программ-помощников (Helper Applications, Helpers). Если программа просмотра не знает, у какой программы попросить помощи при интерпретации данного файла то она предлагает вам выбрать, какую программу, установленную на вашем компьютере, запускать для обработки файлов данного MIME-типа. Можно настроить программу-помощника для данного MIME-типа и заранее. В Netscape Navigator 3.0 для этого следует выбрать меню Options | General Preferences, а затем ввести соответствующую информацию в диалоговом окне в категории Helpers.

1.6.5 Этапы транзакции http

Сеанс взаимодействия клиента и сервера на основе протокола HTTP называется HTTP-транзакцией. В простейшем случае HTTP-транзакция состоит из четырех последовательных этапов:

- установка соединения (инициируется клиентом);

- передача сообщения запроса от клиента серверу;

- передача сообщения ответа от сервера клиенту;

- разрыв соединения (инициируется сервером).

В рамках HTTP 0.9 и 1.0 такая схема является единственно возможной. Она, однако, далека от совершенства. Судите сами — передача веб-страницы с 10 графическими изображениями в описываемом случае требует установить и разорвать TCP-соединение между одной и той же парой клиент — сервер как минимум 11 раз (по одному разу на HTML-код и каждую картинку). Это число, разумеется, возрастет, если с веб-страницей, помимо упомянутого десятка изображений, будут связаны и другие объекты — например, внешние листы стилей, сценарии на языке JavaScript, Flash-ролики и т. д.

В глобальных масштабах рассматриваемое явление, как вы понимаете, далеко не самым лучшим образом отражается на загруженности веб-серверов, каналов связи и промежуточного сетевого оборудования. Для конечного пользователя все это проявляется в виде ощутимых задержек при загрузке страниц.

Как уже говорилось выше, веб-сервер запускается обычно от имени суперпользователя. Сказанное относится, однако, только к главному исполняемому модулю сервера. Каждое соединение обрабатывается отдельным дочерним процессом, запускаемым от имени непривилегированного пользователя (в UNIX-системах это обычно пользователь с именем nobody). Чем больше соединений открывает сервер, тем большее количество обслуживающих их дочерних процессов порождается. (Предельное их число, разумеется, контролируемо при помощи соответствующего параметра конфигурации.)

Обсуждаемый недостаток был преодолен за счет механизма постоянных соединений, реализованного в HTTP 1.1. Благодаря этому нововведению стало возможным обрабатывать несколько HTTP-запросов в ходе одного TCP-соединения.

Конфигурация большинства современных веб-серверов по умолчанию разрешает постоянные соединения. Разрыв соединения производится сервером по тайм-ауту или же по факту превышения некоторого порогового количества HTTP-запросов, разрешенного к обработке в рамках одного соединения. Так, Apache 1.3x (в конфигурации по умолчанию) ожидает следующего запроса клиента в течение 15 секунд, после чего, в случае «молчания» клиента, разрывает соединение; максимально возможное количество запросов в ходе одного соединения при этом равно 100. Разумеется, администратор сервера может произвольным образом изменять указанные настройки, в том числе и таким образом, чтобы полностью отменить ограничение на количество запросов в рамках постоянного соединения.

Несмотря на то, что разрыв соединения является прерогативой сервера, как клиент, так и сервер должны корректно отрабатывать незапланированные разрывы соединений (например, при нажатии пользователем кнопки Остановить в панели инструментов браузера или же вследствие каких-либо программных или аппаратных сбоев).

Схема HTTP-транзакции нередко усложняется еще и за счет возможного применения пользователями прокси-серверов при доступе к ресурсам Web. В данном случае в цепочку клиент — сервер включается дополнительное звено (или даже несколько звеньев, поскольку один прокси-сервер может работать через посредство другого прокси-сервера).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]