Открыть сервис

Протокол HTTP

HTTP (англ. HyperText Transfer Protocol — «протокол передачи гипертекста») — прикладной протокол передачи данных, используемый в клиент-серверной модели для обмена информацией между веб-браузерами и веб-серверами. Основное назначение HTTP — передача гипертекстовых документов (HTML-страниц), а также других типов данных (изображений, видео, файлов) в рамках Всемирной паутины. Протокол работает поверх транспортного уровня TCP/IP, по умолчанию использует порт 80. HTTP относится к числу наиболее распространённых сетевых протоколов.

История развития

Ранние версии

Протокол HTTP был разработан в 1989–1991 годах Тимом Бернерсом-Ли (Tim Berners-Lee) в Европейской организации по ядерным исследованиям (CERN) как основа для гипертекстовой информационной системы, которая впоследствии получила название World Wide Web. Первая официальная спецификация HTTP/0.9 (1991 год) описывала простейшую однострочную команду GET, позволяющую запрашивать только HTML-документы без заголовков или метаданных. В 1996 году вышла версия HTTP/1.0 (RFC 1945), расширившая функциональность протокола поддержкой заголовков, кодов состояния и возможностью передачи файлов разных типов.

HTTP/1.1

В 1997 году была опубликована спецификация HTTP/1.1 (RFC 2068, позже обновлённая до RFC 2616 в 1999 году), которая стала основным стандартом на протяжении более десяти лет. Ключевые нововведения: постоянные соединения (keep-alive), конвейерная обработка запросов, виртуальные хосты (Host-заголовок), поддержка кэширования и дополнительные методы (PUT, DELETE, OPTIONS). HTTP/1.1 остаётся наиболее распространённой версией протокола в сетевой инфраструктуре.

HTTP/2

В 2015 году IETF утвердил стандарт HTTP/2 (RFC 7540), основанный на протоколе SPDY, разработанном компанией Google. HTTP/2 вводит бинарное кодирование вместо текстового, мультиплексирование потоков (параллельная передача запросов в рамках одного соединения), сжатие заголовков (HPACK) и приоритизацию ресурсов. Эти улучшения позволили значительно увеличить скорость загрузки веб-страниц, особенно при большом количестве запросов к серверу.

HTTP/3

В 2022 году IETF выпустил стандарт HTTP/3 (RFC 9114), который заменил транспортный протокол TCP на QUIC (на базе UDP). HTTP/3 обеспечивает снижение задержек соединения, улучшенную устойчивость к потере пакетов и встроенное шифрование (TLS 1.3). На 2024 год протокол используется крупными интернет-сервисами (Google, YouTube, Facebook) и набирает популярность среди браузеров и веб-серверов.

Архитектура и принципы работы

Клиент-серверная модель

HTTP функционирует по схеме «запрос — ответ». Клиент (обычно веб-браузер) инициирует соединение с сервером, отправляя HTTP-запрос, содержащий метод, URI, заголовки и иногда тело данных. Сервер обрабатывает запрос и возвращает HTTP-ответ, включающий строку состояния, заголовки и тело ответа. После завершения обмена соединение может быть закрыто или сохранено для последующих запросов (persistent connection).

Методы HTTP

Стандарт определяет несколько методов, указывающих действие, которое необходимо выполнить на сервере:

Структура запроса

HTTP-запрос состоит из трёх частей:

  1. Стартовая строка: метод, URI, версия протокола (например, GET /index.html HTTP/1.1).
  2. Заголовки: набор полей в формате «Ключ: Значение» (например, Host: example.com, User-Agent: Mozilla/5.0).
  3. Тело запроса (опционально): передаваемые данные, например, параметры формы или файлы.

Структура ответа

HTTP-ответ включает:

  1. Строку состояния: версия протокола, код состояния, текстовое описание (например, HTTP/1.1 200 OK).
  2. Заголовки: метаданные ответа (время, тип содержимого, длина, параметры кэширования).
  3. Тело ответа: запрашиваемый ресурс (HTML, JSON, изображение и т.д.).

Коды состояния

Коды состояния сгруппированы в пять классов:

Безопасность

HTTPS

Для защиты конфиденциальности и целостности данных используется протокол HTTPS (HTTP Secure), работающий поверх TLS (Transport Layer Security) или ранее SSL (Secure Sockets Layer). HTTPS шифрует весь трафик между клиентом и сервером, что предотвращает перехват и подмену данных. По умолчанию использует порт 443. С 2010-х годов HTTPS стал обязательным стандартом для большинства веб-сайтов.

Основные уязвимости

Несмотря на защиту HTTPS, HTTP-протокол уязвим для ряда атак:

Связь с другими технологиями

HTML и URI

HTTP тесно интегрирован с языком гипертекстовой разметки HTML и системой унифицированных идентификаторов ресурсов (URI). Каждый веб-ресурс имеет уникальный URI (или URL), который используется в HTTP-запросах для указания местоположения данных.

Cookie и сессии

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

Кэширование

HTTP включает заголовки управления кэшированием (Cache-Control, Expires, ETag), которые позволяют браузерам и промежуточным прокси-серверам хранить копии ответов. Это снижает нагрузку на сервер и ускоряет загрузку страниц для пользователей.

Альтернативы и расширения

WebSocket

WebSocket — протокол полноценного двустороннего обмена данными поверх одного TCP-соединения, инициируемый через HTTP Upgrade-запрос. Используется для приложений реального времени (чаты, онлайн-игры, торговые терминалы). В отличие от HTTP, WebSocket не требует постоянного перезапроса страниц.

gRPC

gRPC (Google Remote Procedure Call) — протокол удалённого вызова процедур на основе HTTP/2. Использует сериализацию Protobuf для бинарного кодирования данных и потоковую передачу. Применяется в микросервисной архитектуре для высоконагруженных систем.

Интересные факты

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →