Найти в Дзене
НейроФронт

Версии HTTP: что менялось от 0.9 до 3.0 и зачем это было нужно

HTTP (HyperText Transfer Protocol) — это язык общения между браузером (или другим клиентом) и сервером. Когда ты заходишь на сайт, браузер отправляет HTTP-запрос, а сервер отвечает HTTP-ответом. Это основа всего веба. Первая версия, примитивная: Зачем нужна была новая версия:
Невозможно передавать ничего кроме HTML, нет статуса ответа, нет заголовков. уже не используется Основные фишки: Проблемы: уже не используется Что улучшили: Недостатки: Прорыв: Реально ускоряет сайты, но работает всё ещё поверх TCP → при потере пакетов страдают все потоки. Революция: Проблемы:
Оглавление

Что такое HTTP — простыми словами

HTTP (HyperText Transfer Protocol) — это язык общения между браузером (или другим клиентом) и сервером. Когда ты заходишь на сайт, браузер отправляет HTTP-запрос, а сервер отвечает HTTP-ответом. Это основа всего веба.

  • Работает поверх TCP (в HTTP/1.1 и HTTP/2), или поверх QUIC (в HTTP/3).
  • Используется для загрузки HTML, CSS, JS, картинок, API-данных — всего.

HTTP/0.9 — 1991

Первая версия, примитивная:

  • Только GET-запросы
  • Без заголовков, только HTML
  • Сейчас не используется вообще

Зачем нужна была новая версия:
Невозможно передавать ничего кроме HTML, нет статуса ответа, нет заголовков.

уже не используется

HTTP/1.0 — 1996

Основные фишки:

  • Добавлены заголовки (можно указывать тип содержимого, статус и др.)
  • Появились коды ответа (200, 404 и т.д.)
  • Поддержка других методов: POST, HEAD
  • Но соединение закрывается после каждого запроса

Проблемы:

  • На каждую картинку, CSS и JS — отдельное TCP-соединение → тормоза
уже не используется

HTTP/1.1 — 1997 (до сих пор используется!)

Что улучшили:

  • Keep-Alive: соединение одно, можно отправлять несколько запросов
  • Кэширование, сжатие, chunked-передача
  • Появился Host: → можно хостить несколько сайтов на одном IP

Недостатки:

  • Ограничение: 6 параллельных соединений на домен
  • Заголовки дублируются каждый раз
  • Head-of-line blocking: один медленный запрос блокирует остальные

HTTP/2 — 2015

Прорыв:

  • Бинарный протокол
  • Мультиплексирование: все запросы по одному соединению одновременно
  • Заголовки сжимаются (HPACK)
  • Server Push (сервер может отправить CSS/JS заранее)

Реально ускоряет сайты, но работает всё ещё поверх TCP → при потере пакетов страдают все потоки.

HTTP/3 — 2022+

Революция:

  • Работает не на TCP, а на QUIC (поверх UDP)
  • Ещё быстрее: нет потерь из-за одного медленного потока
  • Поддержка встроенного шифрования (TLS 1.3)
  • Быстрее соединяется и меньше задержки

Проблемы:

  • Не все сервера поддерживают
  • Требует прокси/балансировщики с поддержкой QUIC (например, Cloudflare)

Зачем вообще выпускали новые версии?

  • HTTP/0.9 → 1.0: Нужны заголовки и структура
  • 1.0 → 1.1: Убрать переоткрытие соединений
  • 1.1 → 2: Разрешить параллельные запросы без тормозов
  • 2 → 3: Избавиться от ограничений TCP, ускорить мобильный и нестабильный интернет

Практика: где важно понимать версию HTTP

  • Frontend-разработчики
    Знание HTTP/2/3 влияет на сборку ресурсов (нужно ли объединять файлы?)
  • Backend-разработчики
    Нужно учитывать поддержку заголовков, push, keep-alive
  • DevOps / админы
    Выбор reverse proxy (например, nginx до 1.19 не поддерживает HTTP/3 напрямую)
  • SEO и скорость сайта
    Lighthouse и WebPageTest оценивают версию HTTP