Лаб. работа “Протокол HTTP”
Структура HTTP-запроса
После установления соединения между клиентом и сервером, клиент отправляет запрос на сервер. В запросе указывается метод запроса, URL, версия протокола HTTP и содержание запроса: информация клиента (параметры и сопровождающая информация) и, возможно, тело сообщения.
Общая структура HTTP-запроса выглядит следующим образом:
<метод> <URL> <версия HTTP>
<общий заголовок>
<заголовок запроса>
<заголовок передаваемого сообщения>
<пустая строка>
<тело сообщения>
Каждая строка запроса должна заканчиваться символами конца строки (\x0D\x0A). Запрос заканчивается пустой строкой (\x0D\x0A\x0D\x0A).
Протокол HTTP поддерживает в запросах следующие методы:
Метод GET используется для получения ресурса по заданному URL. Как правило, запрашиваемый ресурс представляет собой текстовый или графический файл. Если URL ассоциирован с исполняемым файлом или скриптом, то этот файл будет запущен, и клиен получит результаты стандартного потока вывода.
Метод POST используется для передачи клиентом на сервер данных, которые должны быть обработаны ресурсом, указанным в URL. Данный метод чаще всего используется при работе с CGI-скриптами. Метод POST передаёт параметры ресурсу в теле сообщения, поэтому при его использовании не требуется соблюдать никаких ограничений на длину передаваемой строки параметров.
Метод HEAD аналогичен методу GET, за исключением того, что клиенту возвращается только заголовок ответа (усечённый GET). Этот метод, в основном, используется для тестирования гиперссылок и проверки доступа к ресурсам.
Метод DELETE используется для удаления определённого ресурса.
Метод PUT используется, когда клиент желает сохранить на сервере передаваемый ресурс.
Структура HTTP-ответа
После получения запроса, HTTP-сервер обрабатывает его и отправляет результат обработки клиенту. В первой строке ответа сервера указывается код возврата, далее следует заголовок со служебной информацией и, через пустую строку. Содержимое запрашиваемого файла.
Задания
Изучите основные методы HTTP версии 1.1 - GET, HEAD, POST, PUT, DELETE, TRACE и OPTIONS, а также основные поля заголовков запросов и ответов протокола HTTP и коды ответа сервера.
Подключитесь при помощи PUTTY к WWW серверу. Адрес сервера 192.168.11.119, номер порта 8088 и выполните указанные ниже действия.
Получите с помощью метода GET главную страницу на сервере, используя спецификацию HTTP/0.9 (в этом случае в строке запроса необходимо указать только метод и URL).
Повторите запрос, используя спецификации HTTP/1.0 и HTTP/1.1.
Определите по ответу, возвращенному сервером, версию спецификации HTTP, которую поддерживает сервер, а также версию и спецификацию программного обеспечения работающего на сервере. Определите также дату и время, в которое был сформирован ответ, и время последней модификации главной страницы сервера.
Запросите любой несуществующий документ на сервере и обратите внимание на ответ, возвращенный сервером.
Попробуйте просмотреть содержимое каталога examples на сервере с помощью метода GET.
Получите документ mainpage.html из виртуального каталога examples на сервере.
Получите документ, на который имеются ссылка в полученном документе.
Определите размер и тип графического файла, на который имеется ссылка в документе index.html из каталога examples, не получая этот файл.
Получите этот файл.
Получите первые пятнадцать байт файла arc.zip из виртуального каталога examples на сервере. Определите по возвращенному ответу полный размер запрошенного файла. Получите последние семь байт этого файла.
Отправьте запросы с помощью методов PUT и DELETE на сервер.
Отправьте запрос, используя какой-нибудь несуществующий http метод, и обратите внимание на ответ, возвращенный сервером.