Кафедра ИСиТ УО ВГТУ
  • Специальности
    • Экономика электронного бизнеса
    • Информационные системы
    • Information Control Systems
  • Каталог
  • Сайт кафедры
  • Сервисы
    • GitLab
    • ownCloud
    • JupyterHub
    • JupyterHub 2
    • VNC
    • Soft
  1. ИСиТ
  2. ПСП
  3. Практика
  4. Лаб. работа “Протокол HTTP”
  • ИСиТ
    • АОС
      • Теория
        • Введение в операционные системы
        • Управление памятью
        • Управление процессами
        • Система ввода-вывода
        • Информационная безопасность
        • Виртуализация
      • Практика
    • РВПсИПП
      • Теория
        • Настройка среды разработки для PHP
        • Разработка web-приложений на базе фреймворков
        • Основы Laravel
        • Шаблоны в Laravel
        • Модели и базы данных в Laravel
        • Формы и валидация в Laravel
        • Аутентификация и авторизация в Laravel
        • Создание REST API в Laravel
        • Работа с файлами и изображениями в Laravel
        • Тестирование и отладка в Laravel
        • Введение в фреймворк Symfony
        • Маршруты и контроллеры в Symfony
        • Шаблоны и Twig в Symfony
        • Формы и валидация в Symfony
        • Доступ к базам данных в Symfony
        • Аутентификация и авторизация в Symfony
        • Сервисы и зависимости в Symfony
        • Создание REST API в Symfony
        • Работа с файлами и медиа в Symfony
        • Сравнение и выбор фреймворка
        • Развертывание веб-приложения
      • Практика
        • Лаб. работа 1 “Создание нового приложения Laravel”
        • Лаб. работа 2 “Добавление главной страницы и базовых маршрутов”
        • Лаб. работа 3 “Создание моделей, миграций и сидеров”
        • Лаб. работа 4 “Создание индексных страниц и пагинация”
        • Лаб. работа 5 “Создание форм для работы с сущностями”
        • Лаб. работа 6 “Работа с файлами (эмуляция S3-хранилища)”
        • Лаб. работа “Создание маршрутов в Laravel”
        • Лаб. работа “Работа с базами данных в Laravel”
        • Лаб. работа “Работа с формами в Laravel”
        • Лаб. работа “Аутентификация и авторизация в Laravel”
        • Лаб. работа “Работа с файлами в Laravel”
        • Лаб. работа “Тестирование и оптимизация в Laravel”
        • Лаб. работа “Создание REST API в Laravel”
        • Лаб. работа “Основы Symfony”
        • Лаб. работа “Шаблоны и представления в Symfony”
        • Лаб. работа “Работа с базами данных в Symfony”
        • Лаб. работа “Фомы и аутентификация в Symfony”
        • Лаб. работа “Сервисы и зависимости в Symfony”
        • Лаб. работа “REST API в Symfony”
        • Лаб. работа “Работа с медиа контентом в Symfony”
        • Лаб. работа “Создание и развертывание проекта”
    • ПСП
      • Теория
        • Введение
        • Протокол HTTP
        • Программирование с использованием сокетов
        • Введение в PHP
        • Работа с базами данных в PHP
        • Объектно-ориентированные возможности PHP
        • Настройка среды разработки для PHP
        • Разработка web-приложений на базе фреймворков
      • Практика
        • Программное обеспечение
        • Регистрация в JupyterHub
        • Лаб. работа “Почтовые протоколы”
        • Лаб. работа “Протокол FTP”
        • Лаб. работа “Протокол HTTP”
        • Лаб. работа “Программирование сетевых приложений с использованием сокетов”
        • Лаб. работа “Основы PHP”
        • Лаб. работа “Массивы в PHP”
        • Лаб. работа “Создание веб-приложений с использованием Slim”
    • Компьютерные сети
      • Теория
        • Введение в компьютерные сети
        • Топологии сетей
        • Кодирование и мультиплексирование
        • Стеки протоколов
        • Адресация в компьютерных сетях
        • Система доменных имен (DNS)
        • Программирование с использованием сокетов
        • Введение в PHP
        • Протокол HTTP
        • Введение в компьютерные сети
      • Практика
        • Программное обеспечение
        • Регистрация в JupyterHub
        • Лаб. работа “Почтовые протоколы”
        • Лаб. работа “Протокол FTP”
        • Лаб. работа “Протокол HTTP”
        • Лаб. работа “Программирование сетевых приложений с использованием сокетов”
        • Лаб. работа “Основы PHP”
        • Лаб работа “Массивы в PHP”
    • РиОИИС
      • Теория
        • Классификация оптимизационных задач
        • Генетические алгоритмы
        • Системы массового обслуживания
        • Теория игр
        • Машинное обучение
        • Глубокое обучение (Deep learning)
        • Основы функционального программирования
        • Основы программирования на Haskell
        • Введение в логическое программирование
        • Инференция и рассуждения в логическом программировании
        • Разработка экспертных систем
        • Интеллектуальные системы и их архитектура
        • Веб-скрэйпинг
        • Сбор данных с открытых API
      • Практика
        • JupyterHub
        • Лаб. работа “Методы одномерной оптимизации”
        • Лаб. работа “Методы многомерной оптимизации”
        • Лаб. работа “Функции в Python”
        • Лаб. работа “Рекурсия в Python”
        • Лаб. работа “Итераторы в Python”
        • Лаб. работа “Генетические алгоритмы”
        • Лаб. работа “Haskell”
        • Лаб. работа “Логическое программирование”
        • Лаб. работа “Сбор данных с помощью веб-скрейпинга”
    • КСКР
      • Практика
        • Лаб. работа “Одномерные и двумерные массивы в C#”
        • Лаб. работа “Обращение матриц в C#”
    • Системное программирование
      • Теория
        • Управление памятью в Windows
        • Файловые операции в Windows
        • Управление процессами в Windows
        • Графический интерфейс Windows
        • ОС Unix
      • Практика
        • Лаб. работа “Работа с динамической памятью в Windows”
        • Лаб. работа “Операции с файлами в Windows”
        • Лаб. работа “Управление процессами в Windows”
        • Лаб. работа “Работа с виртуальной машиной Linux”
        • Лаб. работа “Язык командного энтерпритатора Shell”
        • Лаб. работа “Работа с файлами в Linux”
        • Лаб. работа “Работа с процессами в Linux”

Содержание

  • Структура HTTP-запроса
  • Структура HTTP-ответа
  • Задания
  1. ИСиТ
  2. ПСП
  3. Практика
  4. Лаб. работа “Протокол HTTP”

Лаб. работа “Протокол HTTP”

Программирование сетевых приложений
Практика
Автор

Бизюк Андрей

Дата публикации

29 февраля 2024 г.

Структура HTTP-запроса

После установления соединения между клиентом и сервером, клиент отправляет запрос на сервер. В запросе указывается метод запроса, URL, версия протокола HTTP и содержание запроса: информация клиента (параметры и сопровождающая информация) и, возможно, тело сообщения.

Общая структура HTTP-запроса выглядит следующим образом:

<метод> <URL> <версия HTTP>
<общий заголовок>
<заголовок запроса>
<заголовок передаваемого сообщения>
<пустая строка>
<тело сообщения>

Каждая строка запроса должна заканчиваться символами конца строки (\x0D\x0A). Запрос заканчивается пустой строкой (\x0D\x0A\x0D\x0A).

Протокол HTTP поддерживает в запросах следующие методы:

  1. Метод GET используется для получения ресурса по заданному URL. Как правило, запрашиваемый ресурс представляет собой текстовый или графический файл. Если URL ассоциирован с исполняемым файлом или скриптом, то этот файл будет запущен, и клиен получит результаты стандартного потока вывода.

  2. Метод POST используется для передачи клиентом на сервер данных, которые должны быть обработаны ресурсом, указанным в URL. Данный метод чаще всего используется при работе с CGI-скриптами. Метод POST передаёт параметры ресурсу в теле сообщения, поэтому при его использовании не требуется соблюдать никаких ограничений на длину передаваемой строки параметров.

  3. Метод HEAD аналогичен методу GET, за исключением того, что клиенту возвращается только заголовок ответа (усечённый GET). Этот метод, в основном, используется для тестирования гиперссылок и проверки доступа к ресурсам.

  4. Метод DELETE используется для удаления определённого ресурса.

  5. Метод PUT используется, когда клиент желает сохранить на сервере передаваемый ресурс.

Структура HTTP-ответа

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

<Версия HTTP> <код возврата> <текстовое описание>
<общий заголовок>
<заголовок ответа>
<заголовок тела сообщения>
<пустая строка>
<тело сообщения>

Задания

  1. Изучите основные методы HTTP версии 1.1 - GET, HEAD, POST, PUT, DELETE, TRACE и OPTIONS, а также основные поля заголовков запросов и ответов протокола HTTP и коды ответа сервера.

  2. Подключитесь при помощи PUTTY к WWW серверу. Адрес сервера 192.168.11.119, номер порта 8088 и выполните указанные ниже действия.

  3. Получите с помощью метода GET главную страницу на сервере, используя спецификацию HTTP/0.9 (в этом случае в строке запроса необходимо указать только метод и URL).

  4. Повторите запрос, используя спецификации HTTP/1.0 и HTTP/1.1.

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

  6. Запросите любой несуществующий документ на сервере и обратите внимание на ответ, возвращенный сервером.

  7. Попробуйте просмотреть содержимое каталога examples на сервере с помощью метода GET.

  8. Получите документ mainpage.html из виртуального каталога examples на сервере.

  9. Получите документ, на который имеются ссылка в полученном документе.

  10. Определите размер и тип графического файла, на который имеется ссылка в документе index.html из каталога examples, не получая этот файл.

  11. Получите этот файл.

  12. Получите первые пятнадцать байт файла arc.zip из виртуального каталога examples на сервере. Определите по возвращенному ответу полный размер запрошенного файла. Получите последние семь байт этого файла.

  13. Отправьте запросы с помощью методов PUT и DELETE на сервер.

  14. Отправьте запрос, используя какой-нибудь несуществующий http метод, и обратите внимание на ответ, возвращенный сервером.

Наверх
Лаб. работа “Протокол FTP”
Лаб. работа “Программирование сетевых приложений с использованием сокетов”