HTTP - это протокол связи прикладного уровня на основе TCP/IP, который стандартизирует взаимодействие клиента и сервера друг с другом. Он определяет, как контент запрашивается и передается через Интернет.
Протокол передачи гипертекста (Hypertext Transfer Protocol - HTTP) является основой Всемирной паутины и используется для загрузки веб-страниц с использованием гипертекстовых ссылок. HTTP - это протокол прикладного уровня, предназначенный для передачи информации между сетевыми устройствами, он работает поверх других уровней стека сетевых протоколов. Типичный поток по протоколу HTTP включает в себя клиентское устройство/компьютер, отправляющий запрос на сервер, который затем отправляет ответное сообщение.
Что содержится в HTTP-запросе?
HTTP-запрос — это способ, с помощью которого платформы интернет-коммуникаций, такие как веб-браузеры, запрашивают информацию, необходимую им для загрузки веб-сайта.
Каждый HTTP-запрос, сделанный через Интернет, несет в себе ряд зашифрованных данных, которые несут различные типы информации. Типичный HTTP-запрос содержит:
- Тип HTTP-версии
- URL-адрес
- метод HTTP
- Заголовки HTTP-запроса
- Необязательное тело HTTP.
Давайте более подробно рассмотрим, как работают эти запросы и как можно использовать содержимое запроса для обмена информацией.
Что такое HTTP-метод?
HTTP-метод, иногда называемый HTTP-глаголом, указывает действие, которое HTTP-запрос ожидает от запрашиваемого сервера. Например, двумя наиболее распространенными HTTP-методами являются "GET" и "POST"; запрос "GET" ожидает получения информации в ответ (обычно в виде веб-сайта), в то время как запрос "POST" обычно указывает, что клиент отправляет информацию на веб-сервер (такие, как заполненные формы, например, предоставленные имя пользователя и пароль).
Что такое заголовки HTTP-запроса?
Заголовки HTTP содержат текстовую информацию, хранящуюся в парах ключ-значение, и они включаются в каждый HTTP-запрос (и ответ, подробнее об этом позже). Эти заголовки передают основную информацию, например, какой браузер использует клиент, какие данные запрашиваются.
Что находится в теле HTTP-запроса?
Тело запроса - это часть, которая содержит "тело" информации, передаваемой запросом. Тело HTTP-запроса содержит любую информацию, отправляемую на веб-сервер, такую как имя пользователя и пароль, или любые другие данные, введенные в форму.
Что содержится в HTTP-ответе?
HTTP-ответ - это то, что веб-клиенты (часто браузеры) получают от интернет-сервера в ответ на HTTP-запрос. Эти ответы передают ценную информацию, основанную на том, что было запрошено в HTTP-запросе.
Типичный HTTP-ответ содержит:
- код состояния HTTP
- Заголовки HTTP ответа
- необязательное тело HTTP
Давайте разберем все это по полочкам:
Что такое код состояния HTTP?
Коды состояния HTTP - это 3-значные коды, которые чаще всего используются для указания того, был ли успешно выполнен HTTP-запрос. Коды состояния разбиты на следующие 5 блоков:
1xx Информационный (Informational)
2xx Успех (Success)
3xx Перенаправление (Redirection)
4xx Ошибка клиента (Client Error)
5xx Ошибка сервера (Server Error)
Под “xx” подразумеваются числа от 00 до 99.
Коды состояния, начинающиеся с цифры "2", указывают на успех. Например, после того, как клиент запрашивает веб-страницу, наиболее часто встречающиеся ответы имеют код состояния "200 OK", указывающий на то, что запрос был выполнен правильно.
Если ответ начинается с ‘4" или "5", это означает, что произошла ошибка, и веб-страница не будет отображаться. Код состояния, начинающийся с ‘4’, указывает на ошибку на стороне клиента (очень часто при опечатке в URL-адресе можно столкнуться с кодом состояния ‘404 NOT FOUND’). Код состояния, начинающийся с "5", означает, что что-то пошло не так на стороне сервера. Коды состояния также могут начинаться с ‘1" или "3’, которые указывают на информационный ответ и перенаправление соответственно.
Что такое заголовки HTTP-ответов?
Подобно HTTP-запросу, HTTP-ответ поставляется с заголовками, которые передают важную информацию, такую как язык и формат данных, отправляемых в теле ответа.
Что находится в теле HTTP-ответа?
Успешные HTTP-ответы на запросы ‘GET’ обычно имеют тело, содержащее запрошенную информацию. В большинстве веб-запросов это HTML-данные, которые веб-браузер преобразует в веб-страницу.
Можно ли запускать DDoS-атаки по протоколу HTTP?
Имейте в виду, что HTTP — это протокол без сохранения состояния, что означает, что каждая команда выполняется независимо от любой другой команды. В исходной спецификации каждый HTTP-запрос создавал и закрывал TCP-соединение. В более новых версиях протокола HTTP (HTTP 1.1 и выше) постоянное соединение позволяет нескольким HTTP-запросам проходить через постоянное TCP-соединение, улучшая потребление ресурсов. В контексте атак DoS или DDoS HTTP-запросы в больших количествах могут использоваться для организации атаки на целевое устройство и считаются частью атак уровня приложений или атак уровня 7.