HTTP (или HyperText Transfer Protocol) лежит в основе World Wide Web и предназначен для передачи данных между веб-страницами с помощью гипертекстовых ссылок. Протокол HTTP относится к прикладным уровням и разработан с учетом других уровней стека сетевых протоколов для передачи данных по сети. Обычно протокол HTTP работает так: клиент посылает серверу свой запрос, а тот в свою очередь отправляет ответное сообщение.
Что содержится в HTTP-запросе?
Запрос HTTP представляет собой способ, с использованием которой интернет-коммуникационные платформы, например, web-браузеры, осуществляют запрос данных, требуемых при загрузке web-сайта.
В каждом запросе HTTP, отправляемом в Интернете, содержится ряд закодированных данных, несущих различную полезную информацию. Типовой запрос HTTP включает в себя:
- тип исполнения HTTP
- url
- метод HTTP
- заголовки запросов HTTP
- дополнительный текст HTTP (опционально)
Разберем более детально, как функционируют эти процессы и как с помощью тела запроса осуществляется обмен информации.
Что такое HTTP-метод?
HTTP-метод представляет собой действие, которое выполняется на сервере в ответ на HTTP-запрос. Наиболее часто встречаются два метода HTTP: "GET" и "POST"; при запросе "GET" предполагается получить в качестве ответа какую-либо информацию ( чаще всего в форме веб-страницы), а при запросе "POST" обычно указывается, что клиент передает Web-серверу данные ( такие, как имя, фамилия и пароль, указанные в форме).
Что такое заголовки HTTP-запроса?
В HTTP-запросах хранится текстовая часть данных в виде пар ключей-значений, включаемых в любой запрос (и ответ, о чем речь пойдет ниже). Такие заголовки сообщают базовую информацию, в частности, о том, какой браузер использовал клиент и о том, какие параметры были запрошены сервером.
Примеры заголовков HTTP-запросов из вкладки "Сеть" в Google Chrome:
Что находится в теле HTTP-запроса?
Тело HTTP-запроса представляет собой часть, в которой содержится передаваемая информация. В теле HTTP-запроса может содержаться разнообразная информация, такая как логин и пароль, или другие данные, внесенные в форму, и отправляемая на web-сервер.
Что содержится в HTTP-ответе?
HTTP-ответ представляет собой реакцию, получаемую web-клиентами ( в большинстве случаев браузерами) с web-сервера в результате выполнения HTTP-запроса. Ответы предоставляют важную для пользователя информацию, полученную на основе запросов, сделанных в HTTP-запросе.
Обычный отклик HTTP содержит:
- код состояния HTTP
- заголовки HTTP-ответа
- опциональный текст HTTP.
Давайте разделим их на части:
Что такое код состояния HTTP?
Коды состояния HTTP являются 3-значными кодами, чаще всего служащими для определения факта исполнения запроса HTTP. Коды состояния HTTP разделяются на 5 групп:
- 1xx (информация)
- 2xx (успешность)
- 3xx (перенаправление)
- 4xx (ошибка клиента)
- 5xx (ошибка сервера)
Под "xx" понимаются разнообразные числа от 00 до 99.
Коды состояния, которые начинаются с "2", указывают на успешность выполнения запроса. Например, при запросе веб-страницы клиент наиболее часто получает ответ с кодом состояния "200 OK", что свидетельствует об успешной обработке запроса.
В случае начала ответа с цифр "4" или "5" это означает, что возникла проблема и web-страница не будет показана. Код состояния, состоящий из "4", свидетельствует об ошибочном действии со стороны клиента ( очень распространена ситуация, когда опечатка в URL приводит к появлению статуса "404 NOT FOUND"). Код состояния, состоящий из цифр "5", свидетельствует о возникшей на стороне сервера неисправности. Статусные коды могут начинаться с "1" и "3", означающих либо информационный ответ, либо редирект(перенаправление), следовательно.
Могут ли DDoS-атаки запускаться через HTTP?
Следует помнить, о том, что протокол HTTP относится к разряду "stateless", то есть каждый HTTP-запрос обрабатывается независимо от других. В изначальной версии протокола HTTP каждый запрос создавал и закрывал соединение TCP. В более новых модификациях HTTP (HTTP 1.1 и выше) устанавливается постоянное соединение, которое позволяет отправку множества HTTP-запросов по устойчивому соединению TCP, что способствует более эффективному использованию ресурсов. В условиях DoS- или DDoS-атак для проведения нападения на целевое оборудование применяется огромное количество запросов HTTP, что считается элементом прикладного уровня или атаки седьмого уровня.