B
BashOrgRu
Дали задание, написать модельный веб-сервер без CGI: "Сайты, в которых информация (ресурсы) представляет собой набор файлов (обычно – в формате HTML – т.н. веб-страницы), называются статическими. ". То есть нужно сделать реализация модельного веб-сервера, поддерживающуго описанное ниже подмножество протокола HTTP.
HTTP-запрос
HTTP-запрос отправляется веб-клиентом к веб-серверу и имеет вид:
<заголовок запроса> <конец строки>
<HTTP- заголовок > <конец строки>
…
<HTTP- заголовок > <конец строки>
< конец строки >
<тело запроса>
Здесь и далее <конец строки> - это символ с кодом 10 (\n).
Структура заголовка запроса имеет вид:
< HTTP -метод> URI HTTP/<версия протокола>
Метод GET
Этот метод используется для запроса содержимого ресурса с
сервера. Файл ресурса определяется URI из запроса. Если URI корректен,
то сервер обязан вернуть содержимое запрашиваемого файла, если это
файл данных.
Примеры заголовков запроса GET:
GET /index.html HTTP/1.1
По этому запросу сервер возвращает текст файла index.html из
домашней директории сервера.
Метод HEAD
HTTP-ответ
Ответ веб-сервера имеет следующую структуру:
<заголовок ответа> <конец строки>
<HTTP- заголовок > <конец строки>
…
<HTTP- заголовок > <конец строки>
< конец строки >
<тело ответа>
Заголовок ответа выглядит так:
HTTP/<версия протокола> <код состояния> <пояснение>
Заголовок Date
Заголовок Host
Заголовок Referer
Заголовок User-agent
Заголовок Server
Заголовок Content-length
Заголовок Content-type
Заголовок Allow
Заголовок Last-modified
"Рекомендуется начать реализацию с двух простых программ, которые пригодятся при тестировании. Первая программа – «псевдо-сервер», цель которого – запись реальных запросов, посылаемых веб-клиентами например, различными веб-браузерами). Такой сервер должен принять запрос, записать его в лог-файл, выдать ответ с кодом 501 «Not Implemented» и немедленно закрыть соединение. Ответ можно заготовить заранее как текстовый файл и выдавать его в сокет по мере надобности. Сохраненные запросы можно использовать для отладки сервера. Для того, чтобы посылать эти запросы к серверу, понадобится еще одно простое приложение – «псевдо-браузер». Это консольное приложение, которое устанавливает связь с сервером, посылает ему заранее заготовленный запрос (тут-то пригодится «псевдо-сервер», хотя тестовые запросы можно приготовить и «вручную») и записывает ответ сервера."
Прошу помочь хоть какой-нибудь информацией по поводу этого или примеров программ. От нас требуют, чтобы мы уже сдавали этот модельный веб-сервер, хотя ни на лекциях, ни на семинарах мы ещё не дошли до сокетов.
На всякий случай, если я непонятно описал задачу, то присоединяю файл, в котором описано подробно задание, и из этого задания мне надо сделать первый этап.
Заранее блогадарен.
HTTP-запрос
HTTP-запрос отправляется веб-клиентом к веб-серверу и имеет вид:
<заголовок запроса> <конец строки>
<HTTP- заголовок > <конец строки>
…
<HTTP- заголовок > <конец строки>
< конец строки >
<тело запроса>
Здесь и далее <конец строки> - это символ с кодом 10 (\n).
Структура заголовка запроса имеет вид:
< HTTP -метод> URI HTTP/<версия протокола>
Метод GET
Этот метод используется для запроса содержимого ресурса с
сервера. Файл ресурса определяется URI из запроса. Если URI корректен,
то сервер обязан вернуть содержимое запрашиваемого файла, если это
файл данных.
Примеры заголовков запроса GET:
GET /index.html HTTP/1.1
По этому запросу сервер возвращает текст файла index.html из
домашней директории сервера.
Метод HEAD
HTTP-ответ
Ответ веб-сервера имеет следующую структуру:
<заголовок ответа> <конец строки>
<HTTP- заголовок > <конец строки>
…
<HTTP- заголовок > <конец строки>
< конец строки >
<тело ответа>
Заголовок ответа выглядит так:
HTTP/<версия протокола> <код состояния> <пояснение>
Заголовок Date
Заголовок Host
Заголовок Referer
Заголовок User-agent
Заголовок Server
Заголовок Content-length
Заголовок Content-type
Заголовок Allow
Заголовок Last-modified
"Рекомендуется начать реализацию с двух простых программ, которые пригодятся при тестировании. Первая программа – «псевдо-сервер», цель которого – запись реальных запросов, посылаемых веб-клиентами например, различными веб-браузерами). Такой сервер должен принять запрос, записать его в лог-файл, выдать ответ с кодом 501 «Not Implemented» и немедленно закрыть соединение. Ответ можно заготовить заранее как текстовый файл и выдавать его в сокет по мере надобности. Сохраненные запросы можно использовать для отладки сервера. Для того, чтобы посылать эти запросы к серверу, понадобится еще одно простое приложение – «псевдо-браузер». Это консольное приложение, которое устанавливает связь с сервером, посылает ему заранее заготовленный запрос (тут-то пригодится «псевдо-сервер», хотя тестовые запросы можно приготовить и «вручную») и записывает ответ сервера."
Прошу помочь хоть какой-нибудь информацией по поводу этого или примеров программ. От нас требуют, чтобы мы уже сдавали этот модельный веб-сервер, хотя ни на лекциях, ни на семинарах мы ещё не дошли до сокетов.
На всякий случай, если я непонятно описал задачу, то присоединяю файл, в котором описано подробно задание, и из этого задания мне надо сделать первый этап.
Заранее блогадарен.