hostprofi.ru
Подобрать хостинг
Термин·буква H

HTTP/1.1

краткое определение

HTTP/1.1 — версия протокола HTTP, принятая в 1997 году. Ввела постоянные соединения (keep-alive), виртуальные хосты (заголовок Host), передачу по частям (chunked transfer). Оставалась стандартом de-facto до широкого распространения HTTP/2 в 2015–2016 годах.

HTTP/1.1 (Hypertext Transfer Protocol версия 1.1) — протокол прикладного уровня для передачи гипертекстовых документов в интернете. Опубликован как RFC 2068 в 1997 году и обновлён до RFC 2616 в 1999 году. Стандарт действовал без принципиальных изменений до 2014 года.

Ключевые улучшения над HTTP/1.0

Keep-Alive (постоянные соединения): HTTP/1.0 открывал новое TCP-соединение под каждый запрос. HTTP/1.1 по умолчанию удерживает соединение для нескольких запросов, снижая накладные расходы на TLS Handshake и TCP установку соединения (SYN/SYN-ACK).

Обязательный заголовок Host: HTTP/1.1 требует заголовок Host: example.com в каждом запросе, что позволило одному IP-адресу обслуживать несколько сайтов (виртуальный хостинг). В HTTP/1.0 этого механизма не было.

Chunked Transfer Encoding: сервер может начать отправку ответа до того, как знает итоговый размер — полезно для динамически генерируемых страниц.

Pipeline: клиент может отправить несколько запросов без ожидания ответа, но ответы приходят строго по порядку (Head-of-Line Blocking) — это ограничение устранено только в HTTP/2.

История

HTTP/1.0 разработан CERN в 1991–1994 годах и формализован в RFC 1945 (1996). HTTP/1.1 стандартизирован RFC 2068 (1997), пересмотрен RFC 2616 (1999), детализирован в RFC 7230–7235 (2014). HTTP/2 принят IETF в 2015 году (RFC 7540). HTTP/3 стандартизирован в 2022 году (RFC 9114) на основе QUIC.

Ограничения HTTP/1.1

  • Head-of-Line Blocking: в одном соединении ответы строго последовательны.
  • Браузеры открывают 6–8 параллельных соединений к одному домену для обхода HoL.
  • Текстовые заголовки — избыточны и не сжимаются (кроме тела).
  • Нет серверного push — сервер не может превентивно отправить ресурсы.

Связь с хостингом

HTTP/1.1 поддерживается всеми веб-серверами без исключений. Nginx включает HTTP/2 директивой listen 443 ssl http2. Для клиентов, не поддерживающих HTTP/2 (старые устройства), автоматически используется HTTP/1.1. HTTP/1.1 остаётся стандартом для коммуникации Nginx с бэкенд-серверами в конфигурации reverse proxy — HTTP/2 к upstream не применяется в большинстве сценариев.

Отличия HTTP/1.1 от HTTP/1.0

Persistent connections: одно TCP-соединение для нескольких запросов (Connection: keep-alive по умолчанию). Chunked transfer encoding. Виртуальный хостинг: Host-заголовок обязателен. Условные запросы: If-Modified-Since, ETag.

Ограничения HTTP/1.1

Head-of-line blocking: запросы в рамках одного соединения строго последовательны. Браузеры обходят это, открывая 6 параллельных соединений на домен. HTTP/2 решает HOL blocking через мультиплексирование потоков. HTTP/3 (QUIC) — устраняет HOL на транспортном уровне.

HTTP/1.1 в современном хостинге

Большинство сайтов поддерживают HTTP/2 (77% по данным W3Techs, 2024). HTTP/1.1 остаётся для устаревших клиентов и API. В Nginx: listen 443 ssl http2 включает HTTP/2. Fallback к HTTP/1.1 происходит автоматически через ALPN в TLS-рукопожатии.

Диагностика HTTP/1.1 производительности

Head-of-line blocking проявляется при загрузке 10+ ресурсов последовательно. Инструмент: WebPageTest (waterfall view). Решение: HTTP/2 в Nginx, Domain Sharding (несколько поддоменов) для HTTP/1.1. Connection: keep-alive с keepalive_timeout 65 в Nginx снижает overhead повторных соединений.

HTTP/1.1 используется Nginx, Apache и другими веб-серверами. Reverse proxy с HTTP/2 принимает клиентские запросы, проксируя их через HTTP/1.1 на бэкенд. SSL/TLS обязателен — HTTP/2 требует HTTPS. CDN автоматически улучшает протокол.

Другие термины