- •Содержание
- •Раздел 1 6
- •Раздел 2 12
- •Раздел 3 19
- •Введение
- •Раздел 1 растровые изображения и задачи обеспечения авторского права
- •Сущность понятия растрового изображения.
- •Задачи обеспечения авторского права.
- •Раздел 2 технологии защиты авторского права
- •Правовые аспекты защиты авторского права.
- •Технические средства защиты авторских прав.
- •Раздел 3 теоретические основы систем испльзующиеся для будещей модели.
- •2. Модульная архитектура Apache
- •3. Базовые концепции и структуры
- •4. Обработка запросов
- •5. Фильтры
- •Заключение
- •Программы, поддерживающие exif[править | править вики-текст]
- •Microsoft Windows[править | править вики-текст]
3. Базовые концепции и структуры
В архитектуре Apache можно выделить следующие базовые объекты:
Сервер.
Коннект.
Запрос.
Процесс.
Каждый из этих объектов представлен соответствующей структурой в заголовочном файле httpd.h.
Помимо этих 4-х основных объектов в архитектуре Apache нужно отметить еще два объекта.
Первый объект — это пулы. Управлением ресурсов в Apache занимаются пулы — APR pools (apr_pool_t). Любой ресурс, выделяемый динамически, если он привязан к пулу, будет удален автоматически после использования. Пул привязывает ресурсы к жизненному циклу основных объектов, о которых мы сказали выше. Второй объект — это конфигурационный массив ap_conf_vector_t, причем каждому модулю в нем отводится свое место.
Массив хранит как глобальные конфигурационные данные, так и локальные.
В переводе на язык си основные четыре объекта представлены структурами:
request_rec
server_rec
conn_rec
process_rec
Более всего используются первые две. Каждый раз, когда на сервер приходит клиентский запрос, создается объект структуры request_rec, который передается в качестве параметра в любой обработчик, занятый обработкой запроса. Структура содержит не только стандартную информацию о HTTP-запросе, но и внутреннюю служебную информацию: пул запросов, массив глобальных и массив локальных конфигурационных записей, таблицы HTTP-заголовков, таблицу переменных окружения, указатели на сервер, коннект, фильтры, URL и его трансляцию, и т. д. Определение находится в httpd.h:
struct request_rec
{
apr_pool_t *pool;
conn_rec *connection;
server_rec *server;
request_rec *next;
request_rec *prev;
request_rec *main;
...
};
Структура server_rec представляет веб-сервер. Для каждого виртуального хоста имеется свой собственный экземпляр server_rec. Этот объект живет на протяжении всей жизни сервера. Ресурсы он берет из пула процессов. После структуры request_rec это вторая наиболее важная структура в Apache:
struct server_rec
{
process_rec *process;
server_rec *next;
const char *defn_name;
char *server_admin;
char *server_hostname;
apr_port_t port;
...
};
Структура conn_rec представляет TCP-коннект, создается при открытии коннекта и удаляется при его закрытии. Один коннект может породить несколько запросов. Запрос — это производный объект от коннекта:
struct conn_rec
{
apr_pool_t *pool;
server_rec *base_server;
void *vhost_lookup_data;
apr_sockaddr_t *local_addr;
apr_sockaddr_t *remote_addr;
...
};
Структура process_rec имеет более непосредственное отношение к операционной системе, нежели к архитектуре самого сервера. Пул процессов можно получить через нее посредством
server_rec -> process_rec -> pool.
Другие структуры Apache разнесены по разным хидерам, из которых можно выделить следующие группы:
ap_ — хидеры с таким префиксом генерируют низко-уровневое API и напрямую, как правило, не используются.
http_ — в этих хидерах находится API, представляющее наибольший интерес для разработчиков.
util_ — эти хидеры аналогичны первой группе.
mod_ — здесь находятся определения для модулей.
apr_ — APR API.
Для разработчиков наибольший интерес представляют следующие заголовки:
http_config.h
http_connection.h
http_core.h
http_log.h
http_main.h
http_protocol.h
http_request.h
http_vhost.h
httpd.h
util_filter.h
ap_provider.h
mod_dbd.h
util_ldap.h
util_script.h
В начало
