HTTP/2 и HTTP/3

Тема дорожной карты · Компьютерные сети

HTTP/2 и HTTP/3 — это современные протоколы передачи данных, которые значительно улучшают производительность и надежность веб-приложений. HTTP/2, определенный в RFC 7540, ввел мультиплексирование через одно TCP-соединение, сжатие заголовков через HPACK, server push и приоритизацию потоков, что значительно снизило задержки по сравнению с HTTP/1.1. HTTP/3, в свою очередь, заменяет TCP протоколом QUIC на основе UDP со встроенным TLS 1.3, независимым мультиплексированием потоков (без head-of-line blocking) и быстрым установлением соединения через 0-RTT. HTTP/3 особенно эффективен в сетях с высокими потерями пакетов. Используйте curl --http2 или curl --http3 для тестирования.

Как это работает

HTTP/2 и HTTP/3 являются значительными улучшениями над HTTP/1.1. HTTP/2 использует одно TCP-соединение для мультиплексирования нескольких потоков данных, что позволяет уменьшить задержки и увеличить производительность. Сжатие заголовков через HPACK уменьшает объем передаваемых данных, а функция server push позволяет серверу отправлять данные клиенту до того, как клиент запросит их. HTTP/3, используя протокол QUIC, обеспечивает независимое мультиплексирование потоков данных, что избавляет от проблемы head-of-line blocking. Быстрое установление соединения через 0-RTT позволяет значительно сократить время загрузки страниц.

Когда применять

HTTP/2 и HTTP/3 следует использовать в любых случаях, где требуется высокая производительность и надежность. HTTP/2 особенно полезен для веб-приложений, где требуется быстрая передача данных и снижение задержек. HTTP/3, благодаря использованию QUIC, особенно эффективен в сетях с высокими потерями пакетов и низкой задержкой. Для обеспечения безопасности всегда следует использовать TLS, что делает HTTPS, SSH, SFTP, и WebSockets-WSS стандартными протоколами для передачи данных.

Типичные ошибки

Клиенты часто сталкиваются с проблемами при использовании HTTP/2 и HTTP/3. Например, использование plain FTP может привести к утечке паролей, так как они передаются в clear-text. SSH root login с использованием парольной аутентификации также представляет собой серьезную угрозу безопасности, поскольку это может привести к несанкционированному доступу. WebSocket соединения без heartbeat могут привести к появлению зомби-соединений, которые никогда не закрываются. Использование gRPC поверх HTTP/1 также является неправильным, поскольку gRPC требует HTTP/2 для работы.

Связанные понятия

Полезные ресурсы

Проверить знания (2)

Загрузка вопросов…