
Гайд по протоколу HTTP: расшифровка, структура и механизм работы
Статья
Время чтения
9 минут
Каждый раз, когда мы открываем браузер и вводим адрес веб-сайта, протокол HTTP доставляет веб-страницы на наш экран. Задумывались ли вы, как это происходит? В этой статье раскроем тонкости HTTP: расскажем, что скрывается за аббревиатурой, разберем структуру протокола и покажем, как он делает интернет таким, каким мы его знаем.
Что такое HTTP и как он работает
Начнем с того, что HTTP — это протокол седьмой ступени в модели OSI, которая пошагово описывает то, как устройства обмениваются данными в глобальных и локальных сетях. Седьмой прикладной уровень отвечает за доставку информации до пользователя в понятном формате.
HTTP (HyperText Transfer Protocol) — это протокол передачи гипертекста. Гипертекстом называют систему текстовых страниц с перекрестными ссылками. HTTP берет данные с этих страниц и доставляет на ваш экран в разном формате. Это могут быть изображения, текст или видео.
HTTP использует архитектуру «клиент-сервер». Она так называется, потому что содержит в себе двух участников:
Клиент — это браузер или командная строка, с которых пользователь посылает запрос.
Сервер — это компьютер или кластер, обрабатывающий запросы клиента.
Для «общения» клиента с сервером можно использовать прокси-серверы. Они находятся между клиентом и главным сервером и обрабатывают HTTP-запросы и ответы на них, чтобы дополнительно шифровать, кешировать и сохранять анонимность запроса.

Из чего состоят запросы HTTP
Запросы — это информация, которую клиент посылает на сервер, чтобы получить доступ к ресурсу. В них входят:
Стартовая строка, в которой описывают версию протокола, запрашиваемые ресурсы или код ответа.
HTTP-заголовки — строки текста конкретного формата, которые конкретизируют запрос, называют контент тела сообщения.
Тело сообщения с информацией, которая соединяет запрос или документ в передаваемом ответе.
Стартовая строка и ее компоненты
В строке запроса есть методы, URL и версия протокола. Разберем детально их ниже.
Разновидности методов HTTP
Метод — это действие, которое означает, что нужно сделать со страницей после запроса: обратиться к серверу за определенными данными, послать данные на него и так далее.
Например, в строке браузера введем https://cloud.ru/blog. Чтобы эта страница открылась, нужен метод GET. Протокол HTTP использует GET, чтобы передавать сообщения.

Что такое URL
URL (Uniform Resource Locator) — единый идентификатор ресурса. Это строка, где мы сообщаем необходимый ресурс и часть параметров: IP-адрес, путь к ресурсу на сервере, запрос (query).
Версии HTTP-протокола
HTTP появился в 1989 году. Создал его британец Тим Бернерс-Ли, который работал в Европейском Совете по ядерным исследованиям (CERN). Тим хотел создать распределенную систему, которая давала бы доступ другим сотрудникам к информационным ресурсам CERN с помощью гиперссылок — выделенных частей текста на странице, которые содержат скрытый адрес. Переходя по гиперссылкам, можно было бы увидеть нужную информацию организации на этой или другой странице. Протокол стал настолько удобным, что с 1991 года начали выходить его версии, которые с каждым годом улучшали интернет.
Зачастую в стартовой строке запроса стоят версии HTTP/1.1 или HTTP/2.

Четыре категории заголовков протокола
Заголовки передают информацию между клиентами и серверами. Они содержат метаданные о query или ответе, которые помогают правильно понимать и обрабатывать данные.
Заголовки (Headers) — это строки в HTTP-сообщении с форматом «Имя-Заголовок:Значение». С их помощью клиент и сервер отправляют дополнительные данные с запросом.
Query передают много разных заголовков, но их обычно делят на эти категории:
Основные заголовки (General Headers) — есть в каждом сообщении клиента и сервера.
Заголовки запроса (Request Headers) — есть в запросах клиента.
Заголовки ответа (Response Headers) — используются только для ответов, которые приходят от сервера.
Заголовки сущности (Entity Headers) — следуют за каждой сущностью сообщения.

Тело запроса
Тело — последняя составляющая HTTP-запроса. Не каждому методу протокола обязательно иметь тело. Например, у DELETE, HEAD, GET и OPTIONS его нет. Но POST нуждается в теле, так как в нем он передает данные на сервер.
Как выглядят ответы HTTP и что в них скрыто
HTTP-ответ — это сообщение, которое клиент получает от сервера, когда отвечает на запрос. Состоит ответ из того же, из чего состоит запрос: стартовая строка, заголовки, тело ответа.
Стартовая строка или строка статуса
Стартовая строка HTTP-ответа называется строкой статуса или status line. Ее используют для контакта между клиентом и сервером. Строка передает информацию о результате выполнения запроса. Браузер понимает, что произошло с его запросом и что ему делать дальше.
Status line содержит три составляющих:
Версия протокола HTTP/1.1.
Код состояния, показывающий удачную или провальную обработку query.
Код состояния и текст с сокращенным описанием кода. Его применяют, чтобы человек сразу понял, о чем идет речь в ответе.

Коды состояния и текст статуса
Коды и текст нужны для того, чтобы показать клиенту статус их запроса. Сервер может послать обратно код, относящийся к одной из пяти разновидностей кодов состояния:
1xx
Коды этой категории просто информируют, что первую часть запроса сервер получил и не отклонил ее.
2xx
Коды состояния из этой категории приходят, если запрос клиента сервер обработал успешно.
3xx
Категория отвечает за коды, которые приходят, когда серверу нужно перенаправить клиента.
4xx
В этой категории коды показывают, что от клиента пришел неверный запрос. Такое бывает, если клиент прописал в нем метод, который не поддерживается, либо обратился к ресурсу, к которому нет доступа.
5xx
Коды этой категории можно увидеть, если на сервер выдал ошибку.
Подробное объяснение кодов, чтобы понимать их статус в ответе:
200 OK — данные успешно получены.
201 Created — запрос прошел и данные созданы. Статус подтверждает успех POST и PUT.
300 Moved Permanently — перманентное изменение URL-адреса.
400 Bad Request — запрос создан неправильно. Часто это происходит вместе с методами PUT и POST, когда данные не прошли проверку, либо их представили в неправильном формате.
401 Unauthorized — сначала сделайте аутентификацию, а уже после запросите доступ к ресурсу.
404 Not Found — запрашиваемый ресурс не найден.
405 Forbidden — запрашиваемый ресурс не поддерживает упомянутый метод HTTP.
409 Conflict — возник конфликт на стороне браузера при попытках создать данные с помощью PUT.
500 Internal Server Error — появилась ошибка на сервере.
Заголовки ответа
Заголовки ответа (Response Headers) браузер использует, чтобы разобраться с полученными данными и представить их в нужном виде. Они уточняют ответ и не отражаются на содержимом тела.
WWW-Authenticate
Как выглядит: WWW-Authenticate: BASIC realm=»localhost». Он говорит клиенту о типе аутентификации, который нужен, чтобы получить доступ к запрашиваемому ресурсу.
Server
Пример — Server: nginx. В заголовке ответа заложена информация о сервере, обрабатывающего запрос.
Set-Cookie
Как выглядит: PHPSESSID=bf42938f. Внутри заголовка есть cookie, нужные для определения клиента. Браузер парсит их и держит куки в хранилище для будущих запросов.
Тело ответа
Последняя часть ответа — это его тело. В зависимости от типа query и ресурса тело может содержать изображения, видео, JSON-объекты, HTML-документы и другие файлы. Но оно необязательно. Например, у кода «204 No Content» тела нет, потому что большую часть данных для ответа на запрос код передал в заголовке.
Отправляем HTTP-запрос: как это сделать и как понять его ответ
Чтобы отправить HTTP-запрос, нужны два инструмента, которые помогут написать его в браузер, отправить на сервер и получить ответ. Это инструменты разработчика и утилита cURL.
Инструменты разработчика
Главная программа на устройствах пользователей, которая взаимодействует с протоколом передачи гипертекста — это браузер. Кроме пользователей, браузеры часто используют разработчики веб-приложений.
Если в браузере нажать на [f12] или комбинацию клавиш [Ctrl+Shift+I], то откроется окно инструментов разработчика. Выглядит это как панель с несколькими вкладками.

Посмотрите на вкладку Network. Чаще всего во всех браузерах эта вкладка называется одинаково. Откройте ее и на этой странице браузера, впишите в адресной строке URL сайта, куда хотите перейти. Наш пример — блог Cloud.ru https://cloud.ru/blog. Далее нажмите Enter, сайт загрузится, а во вкладке Network появятся новые элементы: список ресурсов, чтобы сайт работал правильно.

Чтобы увидеть подробности обработки и переданного запроса, нажимаем на blog и справа видим запрос.

В запросе отражены:
URL — https://cloud.ru/blog.
Метод GET подтверждает, что мы получили страницу блога, которую запросили у сервера.
Код со статусом 200 OK, который показывает, что сервер успешно получил данные.
Remote Address указывает на IP-адрес и порт сервера, с которым браузер установил соединение, чтобы выполнить HTTP-запрос.
Referrer Policy определяет, как и когда браузер отправляет заголовок Referrer с HTTP-запросами. Он содержит URL страницы, на которой был инициирован запрос.
Утилита cURL
Утилита — это инструмент командной строки, который посылает HTTP-запросы на любой сервер и получает на них ответы.
Чтобы отправить запрос и дождаться ответа, нужно задействовать флаг -v, а также прописать URL ресурса, который надо получить.
Что мы получим после запуска утилиты:
соединение с сервером;
важные вопросы для отправки запроса автоматически решены;
запрос с содержимым отправлен с помощью флага -v;
принятый ответ от сервера показывается в командной строке как есть.
Безопасность HTTP-запросов: что такое HTTPs
HTTP — это расширяемый протокол, поддерживающий передачу текста, ссылок, гиперссылок, картинок, видео и другого. Но у него есть один минус, который не зависит от версии: HTTP-запрос может увидеть или получить кто угодно, потому что данные не зашифрованы.
Но как тогда безопасно оплачивать покупки на сайте интернет-магазина или переводить деньги в банковских приложениях? За сохранность данных пользователя отвечает расширение HTTPS.
HTTPs (HyperText Transfer Protocol, secure) — это расширение для HTTP-протокола, которое работает через шифрованные механизмы TLS и SSL. HTTPs защищает данные посетителей от несанкционированных атак и атак посредника. Украсть могут реквизиты кредитных карт, пароли или другую чувствительную информацию. Поэтому для любого сайта очень важно иметь данное расширение.
Сертификат SSL обеспечивает безопасность HTTPs. С его помощью данные шифруются сперва в браузере. После шифрования они выглядят как набор произвольных символов и затем в таком виде передаются на сервер. Во время запроса шифр всегда изменяется, из-за этого злоумышленникам сложно найти ключ и похитить данные.
Сегодня почти на всех сайтах установлено защищенное соединение. И многие браузеры используют только расширение HTTPS. Увидеть и проверить это можно просто посмотрев на адресную строку. Обычно она выделена зеленым цветом или в ней есть замок. Пример — сайт https://cloud.ru/.

Подведем итоги
Протокол HTTP — неотъемлемая составляющая интернета. Мы разобрали аббревиатуру протокола, его структуру и механизм работы. Изучили, как протокол передает данные между клиентом и сервером, разобрали методы, URL. Показали все версии HTTP-протокола. Выяснили важность заголовков и кода состояния. Рассмотрели, как отправить запрос и прочитать его ответ. А также рассказали, как расширение HTTPs делает интернет безопасным местом для важных данных пользователей.
Вам может понравиться


REST API: что это и как использовать

Как создать Telegram Web App: инструкция по разработке Mini App

Как привлекать клиентов и зарабатывать до 20% на рекомендациях: готовые инструменты

Коды ошибок HTTP: что нужно знать о серверных и клиентских ошибках

Лучшие дистрибутивы Linux: выбор популярных версий

Система управления базами данных (СУБД): что это такое и зачем нужна

Все о Telegram-ботах: какие бывают и как их сделать самому

VPS/VDS: что это такое и чем они отличаются? Полное руководство

Что такое NVMe и как он отличается от SATA SSD и M.2

Микросервисная архитектура: чем она хороша и кому нужна

Как развернуть WordPress в облаке: инструкция для новичков

Применение LLM в бизнесе: опыт лидеров и роль облачного провайдера

Центры обработки данных (ЦОД): что это и как они работают

Какие новости за январь — дайджест Cloud.ru

Команда grep в Linux: как искать строки и шаблоны

PostgreSQL: что это за СУБД и чем она хороша

Что может chmod: как управлять доступами к файлам и папкам в Linux

Как узнать IP-адрес в Linux через командную строку

Как узнать IP-адрес своего компьютера

Система MySQL: что это и для чего нужна

Команды kill и killall в Linux: как завершить ненужные процессы

Работа с файлами в Linux: их создание и организация через терминал

Стандарт Tier III для дата-центра: что значит и почему это круто

Какие новости за декабрь и начало января — дайджест Cloud.ru

Что такое FTP-протокол и как настроить FTP сервер

Белые и серые IP, динамические и статические - в чем различие

Как защищать сайты и приложения в облаке от DDoS-атак

Какие новости за ноябрь — дайджест Cloud.ru

BAT-файлы: что это такое, зачем они нужны и как их создавать

Межсетевой экран, firewall и брандмауэр: что это, в чем между ними разница и зачем они нужны

Kubernetes на Cloud.ru Evolution: возможности и преимущества

Какие новости за октябрь — дайджест Cloud.ru

Как создать сетевую архитектуру для размещения межсетевых экранов на платформе Облако VMware

Рассказать про технологии лампово, или Как мы провели конференцию GoCloud Tech для инженеров и...

Какие новости за сентябрь — дайджест Cloud.ru

Высокоресурсные вычисления: роль суперкомпьютеров в жизни и бизнесе

Реферальная программа Cloud.ru: как устроена и как на ней зарабатывать

Сетевая модель OSI: что это такое и зачем она нужна

Какие новости за август — дайджест Cloud.ru

Сетевые протоколы передачи данных — что это такое и какие бывают

Какие новости за июль — дайджест Cloud.ru

Как новые возможности в юридических документах Cloud.ru облегчают работу с договорами и не только

Какие новости за июнь — дайджест Cloud.ru

Как обновления VMware Cloud Director облегчают управление и делают работу с инфраструктурой в ...

Как мы рассчитывали «Панораму российского IT-рынка» за 2022 год

Как снизить риски утечки данных и санкций госрегуляторов: 152-ФЗ в Cloud.ru

Бесплатный курс по работе с Cloud.ru Advanced: рассказываем, в чем польза, кому подойдет и как...

Как модель Anything as a Service упрощает IT-процессы

Снижение рисков на производстве: AI-сервис распознает нарушения ношения СИЗ

Kandinsky 2.1: новый уровень в генерации изображений по текстовому описанию

Облачные сервисы для стартапов: как пройти путь от идеи до цифрового продукта и не разориться

Создать пользователя, настроить 2FA, связаться с поддержкой — новые возможности личного кабине...

VDI: что это, как работает и в чем выгода для бизнеса

Как защитить облачную инфраструктуру — рассказываем на примере межсетевого экрана нового покол...

Как начать использовать AI/ML на практике

Бессерверные вычисления: что это за технология и кому она нужна

Чек-лист: как обеспечить безопасность облачной инфраструктуры

Искусственный интеллект

Что такое IaaS?

Что такое PaaS

Machine Learning

Data Science

Машинное обучение без учителя

Классическое машинное обучение

Нейронные сети

Глубокое обучение

Защита персональных данных: как легче соблюдать закон с Cloud.ru и сохранять спокойствие

Как сохранить IT-инфраструктуру и бизнес: руководство к действию

Машинное обучение и Big Data в кибербезопасности

Ответы на актуальные вопросы

Что такое DDoS-атаки, чем они опасны и как от них защититься

Аудит информационной безопасности: что это, зачем и когда его проводить

Межсетевые экраны: UTM, NGFW-системы, NTA, NDR

Обзор межсетевых экранов, систем IPS и IDS

PostgreSQL vs MySQL: какая система подходит вашему бизнесу

Основы резервного копирования

Специальное предложение «180 дней тестового периода резервного копирования» для всех клиентов
Платформа SberCloud Advanced теперь обеспечивает максимальный уровень защиты персональных данных

Что такое объектное хранилище S3 и как его используют

Customer Enablement: как SberCloud работает с клиентами, чтобы сделать миграцию в облако комфо...

Сеть доставки контента CDN: новые функциональные возможности и преимущества

Объясняем на кейсах: польза CDN для бизнеса

Новая Windows Server 2022 в облаке SberCloud — новые возможности клиентов

Запуск нового сервиса Managed OpenShift в облачной среде SberCloud

Как работает технология DNS

SberCloud Advanced запустила третью ресурсную зону доступности для комфортной работы клиентов

PostGIS в PostgreSQL — как можно использовать

GitLab для начинающих: как и для чего используется

Краткий обзор методологии CI/CD: принципы, этапы, плюсы и минусы

Персональные данные: правильно обрабатываем и храним

Кто и зачем использует облачные модели IaaS и PaaS

152-ФЗ в облаке: хранение персональных данных в облаке

Как работает CDN (Content Delivery Network)?

Service Level Agreement (SLA): все о соглашении об уровне сервиса

Что такое «интернет поведения» (IoB)?

Чек-лист: 6 шагов для успешной миграции в облако

Машинное обучение: просто о сложном

Профессия DevOps-инженер: кто это и чем занимается

Гайд по Kubernetes. Эпизод I: k8s для неразработчиков

Публичные, частные и гибридные облака: в чем разница?
