48421 (Протокол HTTP)

2016-07-30СтудИзба

Описание файла

Документ из архива "Протокол HTTP", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48421"

Текст из документа "48421"

23






Курсовая работа

На тему: Протокол HTTP


Содержание

Содержание 1

Введение 4

1. Исследовательский раздел 8

1.1 Постановка задачи 8

1.2 Передача данных 9

1.2.1 Протоколы передачи данных 9

1.2.2 Протокол TCP 11

1.2.3 Протокол HTTP 12

1.3 Системная информация ОС Linux 18

1.3.1 Расположение системной информации 18

1.3.2 Файловая система /proc 19

2. Технологический раздел 24

2.1 Выбор языка программирования 24

2.2 Программные средства 24

2.2.1 Потоки 24

2.2.2 Семафоры и мьютексы 25

2.2.3 Сокеты 26

2.2.4 Сигналы 27

2.3 Структура модулей программы 27

2.3.1 Система инициализации 29

2.3.2 Сервер и система управления динамическими библиотеками 31

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

2.3.3 Система безопасности 32

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

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

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

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

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

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

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

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

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

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

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

Заключение 40

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


Введение

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

В последние несколько лет все большую популярность приобретают серверы, работающий под управлением операционных систем семейства UNIX: FreeBSD, OpenBSD, Solaris, Linux. Все эти системы спроектированы в соответствии со стандартом POSIX и имеют идентичный программный интерфейс, что позволило с легкостью переносить приложения, написанные в одной системе, на другую. Кроме того, все эти системы показали себя крайне надежными и отказоустойчивыми, по большей части из-за постоянного совершенствования, которое, зачастую, выполняется бесплатно энтузиастами со всего мира.

UNIX-системы не прижились в качестве пользовательских операционных систем в силу своей сложности и необходимости изучить большое число команд, однако в сфере серверов Интернета подобные системы постепенно вытесняют серверные версии Microsoft Windows.

С появлением большого числа серверов под управлением операционных систем семейства UNIX встал вопрос об администрировании этих серверов и, в частности, производить административные действия удаленно, посредством сетей передачи данных. Необходимость подобных действий вызвана тем, что физически сервер не всегда может быть доступен: администратор может обслуживать сразу несколько серверов, физически отстоящих друг от друга на значительное расстояние, что не позволяет получить непосредственный доступ к каждой машине; также администратор не может находиться на рабочем месте постоянно, тогда как неполадки могут возникнуть в любой момент. Кроме того, серверные компьютеры, к которым предъявляются повышенные требования надежности и безопасности, часто располагают в закрытых помещениях, доступ в которые разрешен только специальному обслуживающему персоналу. Все это привело к созданию ряда программных средств, служащих одной цели – возможности осуществлять удаленное администрирование компьютера.

Одним из первых появился программный продукт под названием telnet. Он состоял из клиентской и серверной частей и позволял клиентской части подключаться к серверной, находящейся на удаленном компьютере. После этого пользователь получал в свое распоряжение так называемый виртуальный терминал – он мог набирать стандартные команды UNIX, которые затем транслировались через сеть на удаленный компьютер telnet-серверу, выполнялись, а результаты выполнения передавались обратно на клиентскую машину. Таким образом, осуществлялась удаленная работа с компьютером, аналогичная по функциональности непосредственному доступу.

Основной проблемой данной программной системы являлась безопасность доступа. Авторизация пользователя осуществлялась стандартными средствами UNIX, что приводило к передачи по сетям в открытом виде информации об учетных записях системы. Эта информация, в свою очередь, могла быть перехвачена злоумышленниками и использована в целях вывода системы из строя или получения над ней полного контроля.

Следующим шагом стало создание так называемой защищенной оболочки (secure shell или, сокращенно, ssh). Этот программный комплекс по своей структуре был похож на telnet – также выделялись клиентская и серверная часть и пользователь получал в свое распоряжение виртуальный терминал при подключении. Однако в данном случае при авторизации пользователя использовались уже не стандартные ученые записи UNIX, а собственная база данных пользователей, информация о которых передавалась в зашифрованном виде. Шифровались также и команды, передаваемые на сервер, и ответная информация. Все это сделало удаленное администрирование достаточно безопасным и привело к росту популярности ssh.

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

Программа, разработанная в рамках курсового проекта, отчасти решает данную проблему. Она позволяет получать доступ к информации о состоянии Linux-системы (как самой распространенной среди UNIX-систем) через сеть Интернет, предоставляя данные в удобочитаемом виде, что позволяет пользоваться программой не только персоналу с высокой квалификацией и детальным знанием внутреннего устройства UNIX, но и обычным пользователям.

Функциональность программы может быть легко расширена – она использует динамически подключаемые модули, что позволяет добавлять необходимые возможности без перезапуска самой программы. Хотя изначально программа была предназначена для наблюдения за системой, добавлением необходимых модулей можно обеспечить и возможность воздействия на систему.

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

Подключение к программе, находящейся на удаленном компьютере, может быть произведено из любой операционной системы, в комплект которой входит Интернет-браузер, поддерживающий стандарты HTTP и HTML, в том числе из пользовательских систем, таких как Microsoft Windows и MacOS.

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


1. Исследовательский раздел

1.1 Постановка задачи

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

В случае разработки серверной программы наблюдения за состоянием Linux-системы был выделен ряд требований, которые в процессе разработке в той или иной степени были удовлетворены:

  • Должна быть возможность подключения к программе посредством программного обеспечения, установленного на большинстве компьютеров и самых разнообразных операционных системах, например, Интернет-браузера; это приводит к тому, что программой должны в определенной степени поддерживаться распространенные протоколы передачи данных;

  • Программа должна поддерживать возможность одновременного подключения нескольких клиентов; при этом не должно быть взаимного влияния между частями программы, отвечающими за обработку запросов от различных клиентов: ошибка при работе с одним из клиентов не должна приводить к краху всей программы и не должна влиять на работу с другими клиентами;

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

  • Модули, использующиеся для получения информации о системе, должны быть динамически подключаемыми с целью возможности добавлять новые модули, не прерывая работу программы и, тем более, без ее повторной компиляции;

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

1.2 Передача данных

1.2.1 Протоколы передачи данных

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

Все современные протоколы передачи данных классифицированы организацией ISO на уровни, в результате чего появилось понятие модели OSI (open systems interconnection – соединение открытых систем). Согласно этой модели, существует семь уровней рассмотрения передачи данных:

  1. Физический (physical) – представлен линиями связи и коммуникационным оборудованием.

  2. Связи (datalink) – представлен драйверами сетевого оборудования и программным обеспечением нижнего уровня.

  3. Сетевой (network) – представлен протоколами IPv4 и IPv6.

  4. Транспортный (transport) – представлен протоколами транспортного уровня, такими как TCP, UDP, ICMP и другими.

  5. Сеансовый (session) – представлен программными средствами, поддерживающими сеансы связи.

  6. Представления данных (presentation) – представлен программными средствами, обеспечивающими независимость интерпретации данных от используемой системы.

  7. Прикладной (application) – представлен множеством протоколов, направленных на передачу определенных данных – файлов, гипертекстовых документов и т.д. К этим протоколам относятся HTTP, FTP, SMTP и др.

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

Наиболее распространенные протоколы и взаимосвязь между ними отображены на рисунке 2.1.


1.2.2 Протокол TCP

При разработке программы основным протоколом передачи информации был выбран протокол транспортного уровня – TCP (Transmission Control Protocol – протокол контроля передачи). Этот протокол является надстройкой над протоколом IP и предоставляет некоторую дополнительную функциональность:

  • Протокол обеспечивает надежную передачу данных, осуществляя, если необходимо повторную отправку или прием пакетов, делая это прозрачно для приложения, в отличие от протокола IP;

  • Последовательность получения пакетов строго контролируется: пакеты приходят в том же порядке, в каком и были отправлены; эта особенность отличает TCP от дейтаграммных протоколов, таких как UDP;

  • Протокол TCP имеет принятый в большинстве операционных систем программный интерфейс, называемый сокетами (sockets), что сильно упрощает его применение при разработке приложений.

Протокол TCP имеет долгую историю – он был разработан Министерством обороны США для создания ее внутренней оборонной сети ARPAnet и изначально предназначался для объединения приложений в составе разнородной вычислительной среды. Впервые протокол был реализован университетом Беркли в операционной системе BSD4.2. В силу популярности этой системы протокол быстро распространился на остальные UNIX-системы и фактически стал основой современной сети Интернет, а также большинства локальных сетей. Несмотря на свои преимущества по сравнению с протоколом IP, TCP имеет и свои негативные стороны – он крайне требователен к вычислительным ресурсам компьютера в силу того, что поток байтов, которым оперирует программа, при передачи посредством TCP разбивается на множество пакетов, каждый из которых может быть отправлен несколько раз, до тех пор, пока не будет получен ответ о его приеме. Кроме того, гибкая система адресации требует наличия в сети специализированных серверов, таких как DNS, DHCP и других.

1.2.3 Протокол HTTP

Протокол HTTP (HyperText Transfer Protocol – протокол передачи гипертекста) – это протокол уровня приложения, осуществляющий связь приложений в пределах распределенных, совместных или разнородных информационных систем. Протокол позволяет приложениям обмениваться данными, представленными в понятном для восприятия человеком виде.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Нет! Мы не выполняем работы на заказ, однако Вы можете попросить что-то выложить в наших социальных сетях.
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
4098
Авторов
на СтудИзбе
673
Средний доход
с одного платного файла
Обучение Подробнее