HTTP: что это такое и как работает протокол

Каждый раз, когда вы открываете сайт, за кулисами браузера и сервера разворачивается целая операция по обмену данными. Ее главный дирижер — HTTP, протокол передачи гипертекста. Рассказываем, как он работает и почему его заменяют на HTTPS.
Авторы и эксперты
Автор Hi-Tech Mail
Системный аналитик ГК «Иннотех», автор блога Greenplum secrets
Что это
Как работает
HTTP и HTTPS 
Почему устарел
Как перейти на HTTPS 
HTTP-коды
Эксперт
Итоги
Что это
Как работает
HTTP и HTTPS 
Почему устарел
Как перейти на HTTPS 
HTTP-коды
Эксперт
Итоги
Еще
Разработчик работает с кодом на фоне адресной строки с HTTP
Современные сайты используют разные протоколы для передачи данных между клиентом и серверомИсточник: Freepik

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

Что такое HTTP

HTTP — это протокол передачи информации в интернете. Аббревиатура расшифровывается как HyperText Transfer Protocol и дословно переводится как протокол передачи гипертекста. На самом деле, HTTP может передавать не только текст и гиперссылки, но и другой контент: изображения, видео, файлы. 

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

Как работает связь между браузером и сервером по HTTP  

Процесс обмена данными можно описать в четыре шага.

1. Запрос от браузера

Когда вы вводите URL, браузер формирует HTTP-запрос — текстовое сообщение, в котором указано, какие данные нужны от сервера. Например, GET /index.html HTTP/1.1 — это запрос на получение страницы.

Каждый HTTP-запрос состоит из трех элементов:

1. Стартовая строка указывает, что именно нужно сделать и где это найти.

2. Заголовки описывают параметры передачи: тип содержимого, язык, длина и т. д.

3. Тело запроса содержит данные, если они нужны. Например, при отправке формы.

Разберем подробнее стартовую строку — именно по ней сервер понимает суть запроса. Она включает три части.

  • Метод указывает действие. Например, GET (получить), POST (отправить данные), PUT (обновить), DELETE (удалить).

  • URL — адрес нужного ресурса (например, /news.html).

  • HTTP/Версия определяет, какую версию протокола использует браузер: HTTP/1.1, HTTP/2, HTTP/3 и т. д. Это влияет на структуру запроса и скорость обмена.

Пример: GET /news.html HTTP/1.1 — запрос на получение страницы /news.html с использованием версии HTTP/1.1.

2. Маршрутизация

Женщина с планшетом в серверной — иллюстрация к теме маршрутизации HTTP-запросов
DNS-серверы помогают браузеру найти нужный IP-адрес и направить HTTP-запрос по правильному маршрутуИсточник: Freepik

Когда браузер сформировал HTTP-запрос, его нужно доставить на нужный сервер — как письмо по адресу. Но в интернете вместо улиц и домов используются доменные имена и IP-адреса.

Допустим, вы ввели в адресной строке браузера: http://hi-tech.mail.ru/. Это понятный человеку адрес, но компьютеры общаются через числовые IP-адреса, например: 217.69.139.200.

Чтобы перевести доменное имя в IP-адрес, используется специальный механизм — DNS (Domain Name System).

Пошагово маршрутизация работает так:

  • Браузер обращается к DNS-серверу. Он спрашивает: «Какой IP-адрес соответствует имени hi-tech.mail.ru?».

  • DNS возвращает IP-адрес. Например: 217.69.139.200.

  • Запрос направляется на нужный сервер. Теперь, зная IP-адрес, браузер отправляет HTTP-запрос напрямую на этот сервер по интернету. Как курьер, который приносит заказ из ресторана к вам домой. 

  • Запрос может проходить через несколько узлов. Он проходит через цепочку маршрутизаторов и провайдеров — это называется сетевой маршрут. На каждом этапе устройство смотрит, куда дальше передать пакет данных, пока он не дойдет до нужного сервера.

Если все работает корректно, процесс занимает доли секунды и происходит автоматически. Пользователь видит только результат: страница загружается.

3. Обработка

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

Рассказываем, что делает сервер пошагово. 

1. Принимает запрос. Например: GET /news.html HTTP/1.1.

2. Разбирает запрос и анализирует стартовую строку. 

  • Метод: GET → нужно выдать данные.

  • URL: /news.html → ищем страницу news.html.

  • Версия: HTTP/1.1 → значит, поддерживаются определенные возможности, например, постоянное соединение.

3. Проверяет наличие ресурса. Сервер ищет файл или данные, указанные в запросе. Это может быть HTML-страница, медиафайл или, например, вывод новостей из базы данных.

4. Оценивает права доступа и состояние. Анализирует, есть ли у пользователя доступ к ресурсу, существуют ли ошибки, нужно ли выполнить дополнительную цепочку — например, запросить авторизацию.

5. Формирует HTTP-ответ, который, как и запрос, состоит из нескольких частей.

Иллюстрация ошибки 404 — HTTP-кода состояния, означающего, что страница не найдена
Ошибка 404 (Not Found) — один из HTTP-кодов состояния, который сигнализирует, что запрашиваемая страница не найденаИсточник: Freepik
  • Стартовая строка с кодом состояния. Например, 200 OK — все хорошо, 404 Not Found — страница не найдена.

  • Заголовки: тип контента, длина, кодировка и т. д.

  • Тело: содержимое страницы, изображение, текст, JSON-данные и т. п.

Пример: клиент запросил /news.html, сервер нашел файл и отправил ответ.

  • Код: 200 OK.

  • Тип: Content-Type: text/html.

  • Тело: HTML-код страницы.

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

Чем HTTP отличается от HTTPS 

HTTPS — это защищенная версия HTTP. Буква S в названии означает Secure — «безопасный». Главное отличие между ними в том, как передаются данные между браузером и сервером.

  • В HTTP информация идет по сети в открытом виде — ее можно перехватить и прочитать. Это все равно что отправить открытку: любой, кто взглянет на оборот, сможет узнать содержимое. 

  • В HTTPS данные шифруются с помощью протокола TLS (ранее — SSL). Перед этим браузер проверяет специальный TLS-сертификат сайта, чтобы убедиться, что соединение безопасно и сайт подлинный. Только после этого начинается защищенный обмен данными.

  • Браузер превращает все, что вы вводите (например, пароли или банковские данные), в зашифрованный набор символов вроде kX1$qL9#ZbN. Только сервер с правильным ключом может расшифровать это сообщение.

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

Почему HTTP устарел и чем он опасен  

HTTP считается устаревшим протоколом по нескольким причинам.

Вирус на ноутбуке
В HTTP нет шифрования, поэтому передаваемые данные можно подменить — например, вставить вредоносный кодИсточник: Freepik

1. Отсутствие шифрования. Все данные, передаваемые по HTTP, отправляются в открытом виде. Это значит, что злоумышленники могут получить доступ к логинам, паролям, номерам карт и другой личной информации — например, через общедоступный Wi-Fi.

2. Уязвимость к атакам. Злоумышленники могут подменить страницу, внедрить в нее вредоносный код. К примеру, подменить форму опроса, в которую пользователь введет дату рождения, адрес или другие личные данные. 

3. Снижение доверия. Современные браузеры помечают HTTP-сайты как небезопасные. В адресной строке появляется предупреждение или значок с восклицательным знаком. Это снижает доверие пользователей и может привести к отказу от взаимодействия с сайтом. У HTTPS в адресной строке виден символ замка — подключение защищено.

4. SEO-санкции. Google, Яндекс и другие поисковые системы учитывают безопасность сайта в ранжировании. 

5. Ограничения функционала. Многие новые функции браузеров работают только через HTTPS. Например, сервис определения геолокации или пуш-уведомления. 

Страница в браузере с предупреждением о небезопасности сайта, использующего HTTP
Сайты, использующие HTTP, браузеры помечают как небезопасныеИсточник: Hi-Tech Mail

Как перейти с HTTP на HTTPS  

Чтобы сайт хорошо ранжировался в поисковых системах, а данные пользователей были надежно защищены, можно перевести портал на HTTPS. Для этого понадобится SSL-сертификат. Бесплатный вариант — Let's Encrypt, платные — Comodo, Symantec и другие. 

«Обычно для большинства сайтов бесплатные сертификаты от Let's Encrypt вполне подходят. Они обеспечивают необходимый уровень безопасности и автоматизированное обновление. Платные сертификаты могут предлагать дополнительные функции, такие как более высокая степень проверки или страхование от утечки данных, но для обычного сайта, например, блога, бесплатные сертификаты будут вполне достаточными», — считает Алексей Божков, системный аналитик ГК «Иннотех», эксперт в моделировании, проектировании и разработке баз данных с 20-летним опытом и автор блога Greenplum secrets.

Подробную инструкцию мы приводили в материале о HTTPS. 

HTTP-коды состояния сайта  

Коды состояния — это «язык», на котором сервер сообщает браузеру результат обработки запроса. Самые частые из них представили в виде таблицы.

КодЗначениеКогда встречается
200ОК
Успешная загрузка страницы

301Moved Permanently
Страницу перенесли на новый URL (постоянный редирект)

404Not Found
Сервер не нашел запрашиваемую страницу, например, ее удалили

500Internal Server Error
Ошибка на стороне сервера

Мнение эксперта  

«HTTP не означает, что любая страница на нем опасна для посещения. Но его использует сайт, который требует от вас ввода конфиденциальной информации, это повод быть осторожным, ведь делает данные уязвимыми для перехвата мошенникам. Поэтому и рекомендуется переходить на HTTPS даже простым блогам, у которых нет монетизации и продаж. Ведь этот протокол защищает данные пользователей от атак злоумышленников», — резюмирует Алексей Божков.

Главное о HTTP

  • HTTP — это протокол передачи гипертекста, который используется для передачи данных между клиентом и сервером. 

  • HTTP — основа для передачи информации в интернете. Данные идут по сети в открытом виде, поэтому HTTP сейчас считается устаревшим и небезопасным.

  • Сайты переводят на HTTPS: усовершенствованный, более защищенный протокол с шифрованием данных.

  • Сайты с HTTPS выдаются в поиске на более высоких позициях, чем страницы с протоколом HTTP.

  • Некоторые API и технологии работают только через HTTPS.

  • Чтобы протокол заработал на сайте, нужно приобрести SSL-сертификат или воспользоваться бесплатным вариантом Let's Encrypt и установить его на сервер.