1 (1119426)

Файл №1119426 1 (И.Г. Головин - Практикум на ЭВМ. Модельный веб-сервер)1 (1119426)2019-05-09СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Московский государственныйуниверситет им. М.В. ЛомоносоваФакультет вычислительной математики и кибернетикиИ.Г. ГоловинПрактикум на ЭВММОДЕЛЬНЫЙ ВЕБ-СЕРВЕРМетодическое пособиеМосква2009УДК 519.68ББКПечатается по решению Редакционно-издательскогофакультета вычислительной математики и кибернетикиМГУ им. М. В. ЛомоносовасоветаРецензенты:проф., д.ф.-м.н. Машечкин И. В.доцент, к.ф.-м.н. Терехин А.Н.И.Г. ГоловинПрактикум на ЭВМ. Модельный веб-сервер: Методическоепособие для студентов II курса. - М.: Издательский отдел факультетаВМиК МГУ им.

М.В.Ломоносова (лицензия ИД № 05899 от24.09.2001), 2009 – 34 с.ISBN 978-5-89407-408-5Описывается задание практикума на ЭВМ для студентов II курсафакультета ВМиК. Приведена постановка задачи, методическиерекомендации по выполнению задания, варианты заданияДля студентов факультета ВМК в поддержку основноголекционногокурса «Системыпрограммирования»и дляпреподавателей, ведущих практические занятия по этому курсу.УДК 519.68ББКISBN 978-5-89407-408-5© Издательский отдел факультетавычислительной математики икибернетики МГУим. М. В.

Ломоносова, 2009© И.Г. Головин, 20092ВВЕДЕНИЕДанное пособие содержит описание задания по практикуму на ЭВМдля студентов 2 курса факультета ВМиК МГУ. Задание поддерживаетосновной курс «Системы программирования», читаемый в четвертомсеместре, и предназначено для выполнения в среде операционной системысемейства UNIX на языке Си++. Методическая цель задания — закрепитьследующие знания и навыки:–работа в системе программирования Си/Си++ в ОС семействаUNIX;–разработка сетевых серверных приложений, использующихмеханизм сокетов;–использование элементов теории формальных языков дляреализации трансляторов с языков программирования.Предполагается, что задание будет выполняться в течениечетвертого семестра (в течение восьми недель), однако по усмотрениюпреподавателя выполнение задания можно начать и третьем семестре,поскольку задание состоит из трех частей.

Первые две части не требуютзнаний, преподаваемых в четвертом семестре (прежде всего — элементовтеории формальных языков и основ построения трансляторов) и поэтомумогут выполняться и в третьем семестре (на языке Си).Конкретный вариант задания и сроки его выполнения определяются,разумеется, конкретным преподавателем. Можно варьировать следующиеаспекты:–набор реализуемых запросов и заголовков протокола HTTP;–внутренняя организация сервера;–способ встраивания программ на модельном языке в сервер;–конкретный вариант синтаксиса и семантики модельного языка(набор типов данных и операций над ними, операторов, стандартныхфункций).В пособии приведены минимальные требования, которые должныбыть реализованы.На официальном сайте кафедры алгоритмических языковhttp://www.al.cs.msu.ru можно найти дополнительные варианты задания.ПОСТАНОВКА ЗАДАЧИЗадание практикума разбивается на следующие подзадачи:• Реализация модельного веб-сервера, поддерживающая описанноениже подмножество протокола HTTP.• Реализация поддержки общего шлюзового интерфейса (CGI) вразработанном веб-сервере.• Реализация интерпретатора модельного языка описания сценариевдля написания CGI-сценариев (варианты языков описаны ниже).Язык реализации - Си++ [1].3На каждом из шагов задания необходимо разработать тестовыепрограммы,демонстрирующиеработоспособностьпрограммы,реализованной на соответствующем шаге.

Набор этих программконкретизируется ниже в методических указаниях по реализации задания.ОСНОВНЫЕ ПОНЯТИЯВеб-сервер – это частный случай архитектуры «клиент-сервер». Вэтой архитектуре программа-сервер принимает и обрабатывает запросы отпрограмм-клиентов.Веб-архитектурахарактеризуетсядвумяособенностями: во-первых, в качестве транспортного протоколаиспользуется семейство протоколов TCP/IP, и при этом между клиентом исервером устанавливается потоковое (или надежное) соединение(подробнее об этом говорится в курсе «Операционные системы»[3]). Вовторых (и это главное), в качестве прикладного протокола взаимодействиямежду клиентом и сервером используется протокол HTTP (hyper-texttransport protocol) – протокол передачи гипертекста. Поэтому веб-серверытакже часто называются HTTP-серверами.

Ниже мы будем использоватьназвание «веб-сервер».HTTP-протокол использует простую модель «запрос-ответ». Вебсервер принимает от веб-клиентов (обычно такими клиентами являютсявеб-браузеры, но могут быть и программы – поисковые роботы, клиентывеб-служб и т.д.) HTTP-запросы, обрабатывает их и посылает клиентуHTTP-ответ. Запрос клиента, как правило, содержит так называемый URI(uniform resource identifier) – «унифицированный идентификатор ресурса».Этот идентификатор содержит ссылку на местонахождение какого-либоресурса на сервере.

Примеры ресурсов - простой текст, гипертекст,изображение, звуковой файл и т.д. В общем случае, ресурсом может бытьне только файл, но и любая информация, которая может быть программносгенерирована и передана по протоколу TCP/IP. Ответ сервера обязательносодержит код возврата, а также, возможно, и запрошенную информацию.Сайты, в которых информация (ресурсы) представляет собой наборфайлов (обычно – в формате HTML – т.н. веб-страницы), называютсястатическими.

Модельный веб-сервер, который требуется реализовать напервом этапе задания, поддерживает только статические сайты. Однаковозможности веб-серверов по-настоящему раскрываются только надинамических сайтах, в которых ресурсы могут генерироваться иобновляться программно (т.е. динамически) во время обработкиклиентского запроса. Самая простая и ранняя технология поддержкидинамических сайтов – CGI – описывается ниже. Реализация поддержкитакой технологии в модельном сервере представляет собой второй этапзадания.Особенностью HTTP-протокола, существенно упрощающей егореализацию, является т.н. отсутствие состояний.

Это означает, что вебсервер не обязан хранить историю запросов (хотя, конечно, может этоделать в целях оптимизациии т.д.). Кроме того, вся служебная4информация передается исключительно в текстовом виде (более того, в 7битной кодировке ASCII).Кроме поддержки HTTP-протокола реальные веб-серверывыполняют и множество других функций: аутентификацию доступа кресурсам, сбор статистики запросов, поддержка защищенных соединенийпо протоколу HTTPS и т.д.

Однако из соображений простоты в модельномвеб-сервере эти функции не поддерживаются.Таким образом, основные понятия, связанные с веб-серверами, - этоURI, HTTP-запрос и HTTP-ответ. Ниже мы рассмотрим эти понятияподробнее.Унифицированный идентификатор ресурсаУнифицированный идентификатор ресурса (URI) – это строкасимволов (латиницы), которая определяет какой-либо ресурс (документ,изображение, службу и т.д.). Частным случаем URI является«Унифицированный локатор ресурса» (URL), который определяет нетолько сам ресурс, но и его местонахождение в сети и/или на компьютере.Общий вид URI:<схема> : <ссылка URI><схема> чаще всего обозначает сетевой протокол (http, https, ftp,mailto и т.д.), но не только, например, схема file означает локальнуюфайловую систему, схема ed2k – файлообменную сеть eDonkey и т.д.<ссылка URI> обозначает непосредственный идентификаторресурса, вид которого зависит от схемы.

Мы не будем рассматриватьобщий вид ссылки URI (равно как и полный список зарегистрированныхсхем - см. соответствующие стандарты [2]). Для модельного серверасделаем два упрощения. Во-первых, будем считать, что модельный сервердопускает только ресурсы в виде файлов данных или исполняемых файловс CGI-программами (подробнее о CGI-программах и сценариях см. ниже).Во-вторых, будем считать, что URI имеет следующую (упрощенную)структуру:<схема>://<хост><путь к файлу-ресурсу>[?<параметры запроса>]Здесь <хост> указывает на адрес сайта в сети Интернет, возможновключающий в себя имя пользователя, пароль, порт (например,www.w3c.org, 127.0.0.1:8888, anonymous:goga1234@www.mysite.ru:8080).Общий вид задания хоста нас интересовать не будет, т.к.

задачу выделенияадреса хоста из URI берет на себя веб-клиент (например, браузер).5Так, если пользователь вводит в адресной строке браузера URIследующего вида:http://127.0.0.1:8888/cgi-bin/testcgi?name=igor&surname=golovin&mail=igolovinто браузер выделяет схему (http), адрес веб-сервера (127.0.0.1:8888),устанавливает потоковое TCP/IP-соединение с сервером (в данном случаесервер работает на той же машине, что и браузер, т.к. адрес 127.0.0.1 локальный) и посылает серверу HTTP-запрос, который начинается соследующего заголовка (строки):GETHTTP/1.0cgi-bin/testcgi?name=igor&surname=golovin&mail=igolovinТаким образом, веб-сервер видит в запросе только часть URI , аименно:- <путь к файлу-ресурсу>;- <параметры запроса>.Для модельного веб-сервера<путь к файлу-ресурсу> - этокорректный путь к запрашиваемому файлу-ресурсу, который начинаетсяот «домашней» директории веб-сервера.

Обычно такая директориязадается в параметрах конфигурации веб-сервера, а для модельногосервера будем считать, что «домашняя» директория – это директория,откуда запущен веб-сервер.<параметры запроса> - это последовательность пар «имя=значение»,разделенных знаком амперсанда &.Параметры запроса нужны только в случае, когда запрашиваемыйфайл-ресурс является исполняемой CGI-программой. В случае обычныхфайлов (HTML и т.п.) параметры не нужны.Сделаем важное замечание о кодировке URI. По стандарту URIдолжен записываться только латинскими символами (сейчас ведетсяработа по стандартизации международного идентификатора ресурса (IRI),но она ещё не закончена). Символы национальных алфавитов (русского ит.д.), а также специальные символы (пробелы, амперсанды, проценты,угловые скобки и т.п.) должны кодироваться латиницей (например, пробелкодируется последовательностью 3 символов %20).

Для простоты анализаURI будем считать, что ни путь к файлу, ни строки в параметрах запросане содержат русских букв и спецсимволов. Потребуем, чтобы имена изначения содержали только латинские буквы и цифры. Таким образом, мыигнорируем проблемы кодировки URI.HTTP-запросHTTP-запрос отправляется веб-клиентом к веб-серверу и имеет вид:6<заголовок запроса> <конец строки><HTTP- заголовок > <конец строки>…<HTTP- заголовок > <конец строки>< конец строки ><тело запроса>Здесь и далее <конец строки> - это символ с кодом 10 (\n).Структура заголовка запроса имеет вид:< HTTP -метод> URI HTTP/<версия протокола>Версия протокола – это 2 арабские цифры, разделенные точкой(версия.подверсия).

Характеристики

Тип файла PDF

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

Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6480
Авторов
на СтудИзбе
303
Средний доход
с одного платного файла
Обучение Подробнее