advanced

HTTP versions

Сравнивайте HTTP/1.1 connection reuse и head-of-line behavior с HTTP/2 multiplexing и HTTP/3 over QUIC.

HTTP/1.1 переиспользует TCP (keep-alive), но страдает от head-of-line blocking: один медленный ответ блокирует остальные на том же соединении. HTTP/2 мультиплексирует потоки на одном TCP с бинарным фреймингом и HPACK. HTTP/3 использует QUIC поверх UDP — восстановление потерь по потокам снижает блокировку между запросами.

| Версия | Транспорт | Мультиплексирование | Head-of-line | |--------|-----------|---------------------|--------------| | HTTP/1.1 | TCP | Последовательно на соединении | На соединении | | HTTP/2 | TCP | Да, общий TCP | На уровне TCP возможен | | HTTP/3 | QUIC/UDP | Да | В основном на поток |

Встроенный `http` в Node — HTTP/1.1; HTTP/2 — `node:http2`. Reverse proxy часто принимает HTTP/2 или HTTP/3 от клиентов и говорит HTTP/1.1 или HTTP/2 с upstream.

На интервью: когда HTTP/2 помогает latency API; почему TLS фактически обязателен для HTTP/2 в браузерах; последствия для load balancers.

Типовые ошибки: HTTP/2 без настройки лимитов соединений; мультиплексирование ≠ нулевая latency; отладка curl по умолчанию без HTTP/2.

Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.

Чеклист:

  • Сравните reuse в 1.1 и multiplexing в 2/3.
  • Где termination в вашем стеке.
  • Границы модулей Node для HTTP/2.
  • Тестируйте клиентским протоколом.