La première version stable du projet nghttp3, développant une bibliothèque en langage C pour l'implémentation du protocole HTTP/3, est disponible. Une variante de cette bibliothèque pour le protocole HTTP/2, développée par le même projet, est utilisée comme base pour le module mod_http2 intégré au serveur http Apache. Les développements du projet sont également intégrés dans l'outil Curl. Le code de la bibliothèque est distribué sous licence MIT.
La norme HTTP/3 définit l'utilisation du protocole QUIC (Quick UDP Internet Connections) comme transport pour HTTP/2. QUIC est une surcouche du protocole UDP, prenant en charge le multiplexage de plusieurs connexions et fournissant des méthodes de cryptage équivalentes à TLS/SSL. Le protocole a été créé en 2013 par Google comme alternative à la combinaison TCP+TLS pour le Web, résolvant des problèmes de latence lors de l'établissement et de la négociation de connexions TCP et éliminant les délais causés par la perte de paquets pendant le transfert des données.
Nghttp3 fournit une implémentation indépendante des spécifications RFC 9114 (HTTP/3 sur le protocole QUIC), RFC 920 (technologie de compression des en-têtes QPACK), RFC 9220 (transmission WebSockets sur HTTP/3) et RFC 9218 (schéma extensible pour la gestion des priorités d'envoi des réponses aux requêtes des clients). La bibliothèque n'est pas dépendante de certaines piles QUIC et prend en charge le fonctionnement sur différentes implémentations du protocole de transport QUIC. En outre, le projet développe également sa propre implémentation du protocole QUIC — ngtcp2, utilisée par défaut. Pour le chiffrement des données dans ngtcp2, les arrière-plans de quictls, GnuTLS, BoringSSL, Picotls et wolfSSL sont supportés. Simultanément à nghttp3 1.0, la première version stable de ngtcp2 1.0 a également été publiée.
Source : opennet.ru
