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 автоматически улучшает протокол.