HTTP/1.1 ≠ HTTP/2 ≠ HTTP/3 Все они передают веб-страницы… Но каждое поколение устраняло существенное ограничение производительности.
Вот простой способ запомнить различия:
HTTP/1.1
➜ Один запрос за раз на соединение. Просто, но медленно для современных сайтов.
HTTP/2
➜ Несколько запросов могут использовать одно TCP-соединение благодаря мультиплексированию.
HTTP/3
➜ Работает поверх QUIC на базе UDP, снижая задержки и устраняя блокировку начала очереди на транспортном уровне.
Как быстро запомнить
HTTP/1.1 = последовательная обработка.
HTTP/2 = мультиплексирование.
HTTP/3 = мультиплексирование + более быстрое восстановление.
Какие изменения принесла каждая версия?
HTTP/1.1
• Для загрузки множества ресурсов нужны несколько TCP-соединений.
• Текстовый протокол.
• Блокировка начала очереди (head-of-line blocking) на уровне приложения.
HTTP/2
• Мультиплексирование в рамках одного TCP-соединения.
• Бинарный протокол.
• Сжатие заголовков с помощью HPACK.
• Меньше соединений, выше производительность.
HTTP/3
• QUIC вместо TCP.
• Более быстрое установление соединения.
• Лучшая производительность в нестабильных и мобильных сетях.
• Повышенная устойчивость к потере пакетов.
Частый вопрос на собеседовании: Если HTTP/2 уже поддерживает мультиплексирование, зачем понадобился HTTP/3?
Потому что HTTP/2 по-прежнему использует TCP. При потере пакета TCP может задерживать другие потоки в том же соединении. HTTP/3 использует QUIC поверх UDP, позволяя потокам восстанавливаться более независимо и снижая задержки в ненадёжных сетях.
Одна формулировка, чтобы запомнить навсегда:
• HTTP/1.1 = по одному
• HTTP/2 = несколько одновременно
• HTTP/3 = несколько одновременно, даже в плохой сети
Сохранил эту рукописную шпаргалку для всех, кто изучает сети, бэкенд-разработку или готовится к собеседованиям по проектированию систем.
👉 @BackendPortal
Post #3675
685
