на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Протокол HTTP
p align="left">1. Создание и настройка серверного сокета.

2. Прием входящего подключения.

3. Создание потока, который будет обрабатывать запрос.

Пункты 2 и 3 повторяются в течение всего времени работы сервера.

Поток, обрабатывающий запрос, выполняет следующие действия:

1. Принимает запрос от клиента.

2. Проверяет корректность запроса.

3. В случае корректного запроса обращается к системе безопасности для подтверждения доступа.

4. В случае разрешения доступа обращается к системе управления динамическими библиотеками, передав ей имя запрошенного модуля.

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

Работа сервера продолжается до тех пор, пока не равна нулю переменная, адрес которой был передан серверному модулю при старте. Эта переменная обнуляется при получении процессом сигнала SIGINT (соответствующего комбинации Ctrl+C на клавиатуре). Использование сигналов описано в п. 3.2.4.

2.3.3 Система журналирования

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

· Старт сервера - с указанием адреса и порта привязки.

· Входящее подключение - с указанием адреса клиента.

· Авторизация клиента.

· Запрос модуля.

· Сообщения о разнообразных ошибках в работе сервера.

Система журналирования самостоятельно генерирует имя файла на основании текущей даты: журнальные файлы имеют имена вида dd-mm-yyyy.log.

Для защиты своих статических данных система использует мьютекс (см. п. 3.2.2), что приводит к монополизации доступа потоков к системе. Это может несколько замедлить работу, однако разработанное приложение не является критичным ко времени, поэтому возникающие задержки вполне допустимы.

Система безопасности служит для проверки возможности доступа клиента к каким-либо модулям сервера.

Система безопасности может функционировать в двух режимах:

· Режим проверки доступа - сервер передает системе имя пользователя и пароль, которые она пытается найти в файле учетных записей. В случае нахождения совпадения доступ предоставляется, в противном - не предоставляется.

· Режим предоставления доступа - в этом случае доступ предоставляется для всех клиентов независимо от указанных имени и пароля. Используется только для тестирования сервера.

Режим работы системы и адрес файла с учетными записями могут быть заданы в конфигурационном файле.

Система безопасности, как и система журналирования, использует мьютекс (см. п. 3.2.2) для защиты доступа к своим статическим переменным.

2.4 Динамические библиотеки

Динамические библиотеки, подключаемые серверным модулем во время работы программы, реализуют функциональные возможности программы. Функции, содержащиеся в этих библиотеках, служат для получения разнообразной системной информации и выдачи ее в HTML-формате клиенту (браузеру).

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

2.4.1 PROCESSES - информация о процессах

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

· Идентификатор (PID) процесса - получается путем чтения списка каталогов файловой системы /proc и выбора тех из них, название которых состоит только из цифр. В этом случае имя каталога и будет являться идентификатором процесса.

· Имя исполняемого файла - считывается из файла stat каталога процесса в /proc.

· Состояние процесса - считывается из файла status каталога процесса.

· Имя владельца процесса - получается с помощью функции stat(), примененной к каталогу процесса. Имя владельца процесса совпадает с именем владельца каталога процесса.

· Имя группы владельца процесса - аналогично имени владельца процесса, получается с помощью функции stat().

· Размер резидентной части процесса - считывается из файла statm из каталога процесса.

Результаты работы динамической библиотеки отображаются в клиентском браузере в виде таблицы.

2.4.2 MEMINFO - информация о системной памяти

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

· Общее количество доступной физической памяти.

· Размер свободной части памяти.

· Размер памяти, разделяемой между процессами.

· Количество буферов ввода-вывода.

· Информация об области подкачки.

Предоставляемая информация извлекается из файла /proc/meminfo.

2.4.3 DISKFREE - информация о свободном месте на дисках

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

Информация получается с помощью команды оболочки fd (файл /bin/fd). Для того, чтобы перенаправить данные, выдаваемые при выполнении команды, используется дублирование процесса с помощью функции fork() и загрузка в адресное пространство порожденного процесса данных программы fd с помощью функции execv(). Вывод информации в дескриптор сокета вместо вывода на консоль осуществляется отображением потока данных, выводимых в стандартный поток вывода, на дескриптор сокета с помощью функции dup2().

2.4.4 NETWORK - информация о сетевых устройствах

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

· Количество принятых и отправленных байтов и пакетов.

· Количество возникших за время приема и передачи ошибок.

· Количество потерянных при приеме и передаче пакетов.

· Количество коллизий при передаче.

Информация получается посредством анализа файла /proc/net/dev, содержащего подробную статистическую информацию о сетевых устройствах. Некоторая информация, полученная из файла, не учитывалась, так как не представляет большой ценности для системного администратора.

2.4.5 VERSION - версия операционной системы

Данная динамическая библиотека отображает в окне браузера версию операционной системы, под управлением которой работает сервер. Информация о версии системы получается из файла /etc/issue.

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

2.4.6 INDEX - страница помощи

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

Эту страницу пользователь получит, явно указав имя модуля «index», или в случае отсутствия указания имени модуля. Однако, в случае работы системы безопасности в режиме проверки доступа и указания пустого имени модуля будет выдана страница ошибки авторизации, а не страница помощи.

2.5 Использование программы

2.5.1 Настройка сервера

Конфигурирование систем программы может быть осуществлено одним из трех способов:

· Установка значений по умолчанию - параметры всех систем устанавливаются по умолчанию; значения параметров по умолчанию устанавливаются на этапе компиляции программы.

· Загрузка конфигурации из файла - все параметры загружаются из файла, состоящего из строк вида «имя_параметра=значение». Для хранения параметров используется файл linspy.conf, находящийся в одном каталоге с исполняемым файлом программы.

· Установка значений из командной строки - в этом случае параметры системы устанавливаются в соответствии с переданными аргументами командной строки.

Последний способ наиболее удобен для быстрого изменения настроек сервера. Все опции командной строки, поддерживаемые программой, представлены в таблице 3.1:

Таблица 3.1

Опция командной строки

Пояснение

-h, --help

программа выводит описание опций командной строки и завершается;

-m dir, --moddir dir

устанавливает каталог загрузки динамических библиотек равным dir; может быть использовано для быстрой смены набор библиотек;

-v, --verbose

включает расширенный режим ведения журнального файла

-s mode, --security mode

включает или выключает режим проверки доступа в зависимости от значения mode; если mode=“on”, проверка доступа включается, а если mode=“off” - выключается;

-a ip, --addr ip

устанавливает адрес привязки серверного сокета равным ip;

-p num, --port num

устанавливает порт привязки серверного сокета равным num;

-d, --daemon

программа загружается в фоновом режиме (режиме демона).

2.5.2 Доступ к серверу

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

Например, при обращении к модулю «somemodule» при подключении к серверу, привязанному к адресу 123.123.123.123 и порту 8080, при включенной системе безопасности, зная имя пользователя - «mylogin» - и пароль - «mypassword» - строка адреса, которая должна быть введена в браузере, будет выглядеть следующим образом: http://123.123.123.123:8080/somemodule?login=mylogin&password=mypassword

В случае отключенной системы безопасности строка изменится: http://123.123.123.123:8080/somemodule

При возникновении какой-либо ошибки при обработке запроса - как со стороны корректности запроса, так и со стороны возможности выполнить запрошенные действия - в окно браузера выдается сообщение об ошибке.

Ошибка может возникнуть в одной из следующих ситуаций:

· Полученный сервером запрос некорректен - указана неверная версия протокола HTTP, неподдерживаемый метод или сама структура запроса содержит ошибки.

· Запрошенный модуль не может быть найден, либо он поврежден.

· Указанные имя пользователя и пароль недействительны.

2.5.3 Завершение работы сервера

Завершение работы сервера возникает в результате приема серверным процессом сигнала SIGINT, соответствующего нажатию клавиатурной комбинации Ctrl+C. Однако, если сервер запущен в фоновом режиме (режиме демона), воздействие на него с помощью клавиатуры не представляется возможным. В этом случае следует послать процессу сигнал с помощью команды оболочки kill или killall:

· kill -INT pid, в этом случае необходимо знать PID запущенного процесса;

· killall -INT linspy - здесь поиск процесса ведется по имени исполняемого файла.

Вторая команда включена в файл shutdown.sh, представляющий собой сценарий оболочки и завершающий работу программы.

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

Заключение

Разработанная программа позволяет удаленно наблюдать за состоянием компьютера, работающего под управлением операционной системы Linux. В программе реализована частичная поддержка протокола HTTP/1.1, что позволяет подключиться к ней с помощью браузера, работающего под управлением любой современной операционной системы. Также программа с минимальными изменениями может быть перенесена на большинство современных UNIX-подобных систем в силу того, что при разработке использовались исключительно средства API POSIX.

Программа полностью удовлетворяет требованиям технического задания, обеспечивая:

· Возможность гибкой настройки программы, в том числе ее привязка к любому адресу и порту.

· Возможность одновременной обработки запросов от удаленных клиентов за счет использования механизма многопоточности.

· Возможность ограничения количества одновременно обрабатываемых запросов.

· Обеспечение безопасности за счет необходимости указывать имя пользователя и пароль при подключении к серверу; программа использует собственный файл учетных записей.

· Возможность подключения с помощью любого браузера, поддерживающего протокол HTTP/1.0 или HTTP/1.1.

Хотя для решения административных задач уже существуют готовые программные решения, а в качестве HTTP_сервера в среде Linux, как правило, используется сервер Apache, разработанная программа имеет перед ними определенные преимущества:

· Скорость работы, обеспечиваемая небольшим размером программы и простотой логики ее работы.

· Простота доступа к системной информации Linux.

· Удобочитаемость получаемой информации, что не накладывает требований на квалификацию пользователя.

Список использованной литературы

1. M.Mitchel, J.Oldham, A.Samuel Advanced Linux Programming / Indianapolis, Indiana: Williams, 2004 - 288 с.

2. RFC 1945 - HTTP/1.0 Protocol

3. RFC 2616 - HTTP/1.1 Protocol

4. E.Nemeth, G.Snyder, S.Seebass, T.Hein UNIX System Administration Handbook 3rd Edition / New Jersey: Prentice Hall, 2003 - 925 c., илл.

5. R.Stevens, B.Fenner, A.Rudoff UNIX Network Programming / Addison Wesley, 2003 - 1024 c., илл.

Страницы: 1, 2, 3, 4



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.