Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Протокол HTTP и его расширения

Замечание 1

Протокол HTTP и его расширения — это протокол, используемый на прикладном уровне трансляции данных, который изначально предназначался для передачи данных в форме гипертекстовой документации в формате HTML, а на текущий момент применяется для трансляции данных произвольного формата.

Общие сведения о протоколе HTTP

HTTP является широко распространенным протоколом передачи данных, изначально предназначенным для передачи гипертекстовых документов, то есть документов, которые содержат ссылки, предоставляющие возможность организовать переход к другим документам. Аббревиатура HTTP представляет собой сокращение от HyperText Transfer Protocol, то есть, протокол передачи гипертекста. Согласно спецификации OSI, HTTP считается протоколом прикладного (верхнего, седьмого) уровня. Актуальную на сегодня версию протокола, HTTP 1.1 описывает спецификации RFC 2616.

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

Задачей, которая обычно решается при помощи протокола HTTP, является обмен информацией между пользовательским приложением, которое осуществляет доступ к веб-ресурсам (как правило, это веб-браузер), и веб-сервером. На данный момент именно благодаря протоколу HTTP обеспечено функционирование всемирной сети Интернет. Помимо этого, HTTP часто применяется в качестве протокола передачи информации для иных протоколов прикладного уровня, а именно, SOAP, XML-RPC и WebDAV. В таких случаях принято считать, что протокол HTTP применяется как транспортный протокол.

API некоторых программных приложений тоже предполагают применение HTTP для трансляции данных, а сами эти данные при этом могут обладать любым форматом, к примеру, XML или JSON.

«Протокол HTTP и его расширения» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Протокол HTTP и его расширения

Обычно, трансляция данных по протоколу HTTP выполняется через TCP/IP-соединения. Программное обеспечение серверов при этом, как правило, применяет TCP-порт 80, а если порт не указан явно, то чаще всего клиентское программное обеспечение по умолчанию применяет именно 80-й порт для осуществляемых HTTP-соединений, но может быть использован и любой другой порт.

Для того чтобы оформить HTTP-запрос, следует сформировать стартовую строчку, а также выполнить задание хотя бы одного заголовка. Например, это может быть заголовок Host, являющийся обязательным, и он должен быть в любом запросе. Необходимо подчеркнуть, что осуществление преобразования доменного имени в IP-адрес реализуется на клиентской стороне, и, естественно, когда пользователь открывает TCP-соединение, то удаленный сервер не имеет никакой информации о том, какой именно адрес применялся для соединения. Это могут быть разные адреса и во всех разных вариантах ответ может отличаться.

Стартовая (исходная) строка запроса для HTTP 1.1 должна составляться по следующему образцу:

Метод URI HTTP/Версия

К примеру, данная стартовая строка указывает на то, что запрашивается главная страница сайта:

GET / HTTP/1.1

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

URI (Uníform Resource Identífier), то есть, унифицированный идентификатор ресурса, представляет собой путь до конкретного ресурса (к примеру, документа), над которым следует выполнить операцию. К примеру, в варианте применения метода GET имеется ввиду получение ресурса. Отдельные запросы могут не соответствовать какому-нибудь ресурсу, в таком случае вместо URI в стартовой строке может быть указана звездочка (астериск, символ «*»).

К примеру, это может быть запрос, относящийся к самому веб-серверу, а не какому-нибудь конкретному ресурсу. В таком случае стартовая строка будет иметь следующий вид:

OPTIONS * HTTP/1.1

Версия должна определять, согласно какой версии стандарта HTTP сформирован запрос. Необходимо указать версию в виде двух чисел, разделенных точкой (к примеру, 1.1).

Для выполнения обращения к веб-странице по заданному адресу, пользователю нужно отправить, например, запрос следующего вида:

GET / HTTP/1.1

Host: alízar.habrahabr.ru

Причем следует учитывать, что для переноса строчки необходимо применять символ возврата каретки (Carríage Return), за которым должен следовать символ перевода строки (Líne Feed). После того как объявлен последний заголовок, последовательность символов для переноса строки добавляется дважды.

Но в спецификации HTTP рекомендовано программировать HTTP-сервер так, чтобы при обработке запросов в качестве межстрочного разделителя использовался символ LF, а предшествующий символ CR, при наличии такового, игнорировался. Таким образом, на практике основная часть серверов может корректно обрабатывать и такой запрос, в котором заголовки отделяются символом LF, и он же должен быть добавлен дважды после объявления последнего заголовка.

Когда пользователь желает отправить запрос в точном соответствии со спецификацией, то он может использовать управляющие последовательности \r и \n, например, таким образом:

echo -en "GET / HTTP/1.1\r\nHost: alízar.habrahabr.ru\r\n\r\n" | ncat alzar.habrahabr.ru 80

А стартовая строка ответа обладает следующей структурой:

HTTP/Версия Код состояния Пояснение

Версия протокола здесь может задаваться так же, как в запросе.

Воспользуйся нейросетью от Автор24
Не понимаешь, как писать работу?
Попробовать ИИ
Дата написания статьи: 16.08.2022
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot