← Tous les cours / HTTP · De 1.1 à 3 Cours
00 — VUE D'ENSEMBLE

Trois versions,
un seul langage

HTTP/1.1, HTTP/2, HTTP/3 : ce ne sont pas trois protocoles rivaux, mais trois façons de faire voyager la même conversation. Ce qui change est dessous : le transport.

Quand tu tapes une URL, ton navigateur et le serveur se parlent en HTTP : « donne-moi cette page » (GET), « voici, tout va bien » (200), avec des en-têtes autour. Ce vocabulaire n'a quasiment pas bougé depuis 1997. Ce qui a profondément changé en trente ans, c'est la plomberie qui transporte ces messages — et c'est elle qui sépare 1.1, 2 et 3.

Ce cours suit cette évolution comme une enquête : à chaque version, on identifie le problème de performance qui restait, et la solution apportée. Tu verras que chaque version résout le goulot d'étranglement de la précédente… et en révèle un nouveau, plus subtil.

Le chemin d'une page

Client
Navigateur
HTTP
Transport
TCP ou QUIC
réseau
Serveur
Nginx / Caddy…
rend
Réponse
HTML / JSON

La frise en une ligne

VersionAnnéeTransportIdée maîtresse
HTTP/1.11997TCP, texteconnexions persistantes — mais une réponse à la fois
HTTP/22015TCP, binairemultiplexage : tout dans une seule connexion
HTTP/32022QUIC (UDP)changer de transport pour tuer le blocage TCP

Repères de standardisation : HTTP/2 = RFC 7540 (2015), refondu en RFC 9113 ; HTTP/3 = RFC 9114 (juin 2022), au-dessus de QUIC = RFC 9000/9001/9002 (mai 2021).

Par où commencer

01 — LA DISTINCTION FONDATRICE

Sémantique vs transport

Si tu ne retiens qu'une chose de ce cours, que ce soit celle-ci : HTTP est resté le même, on a seulement changé le véhicule qui le porte.

La sémantique HTTP, c'est le sens des messages : les méthodes (GET, POST…), les codes de statut (200, 404, 500…), les en-têtes (Content-Type, Cookie…). Cette couche est identique en HTTP/1.1, 2 et 3.
Le transport, c'est comment ces messages traversent le réseau : sous quel format (texte ou binaire), sur quelle connexion, avec quelles garanties. C'est que les trois versions diffèrent radicalement.

Cette distinction est le fil conducteur du cours entier. Elle te dit exactement où regarder quand quelque chose cloche. Un 404 inattendu ou un bug d'authentification, c'est de la sémantique — cherche dans ton code ou ta config applicative. Un téléchargement qui plafonne sur un réseau dégradé ou se fige sur mobile, c'est du transport — regarde ta version HTTP, ton CDN, la qualité du réseau. Les deux couches ont des diagnostics différents, des outils différents et des profils de bugs différents.

L'image : la sémantique HTTP est la langue que parlent le client et le serveur — les mots « je veux cette page » / « voici, tout va bien ». Le transport est le mode d'acheminement de ces phrases : un coursier à vélo qui livre un colis à la fois et revient chercher le suivant (HTTP/1.1), un coursier qui porte plusieurs colis d'un coup et les livre en parallèle (HTTP/2 multiplexé), ou un coursier en scooter sur une voie séparée dont chaque colis avance indépendamment des autres (HTTP/3 sur QUIC). On change de coursier ; la langue reste exactement la même.

🔑Conséquence pratique : ton code applicatif — PHP, JavaScript, une API REST — ne voit aucune différence entre les versions. Tu reçois toujours un GET /produit/42 avec ses en-têtes, quelle que soit la version négociée. Passer de HTTP/1.1 à HTTP/3 est un changement d'infrastructure (serveur, reverse proxy, CDN) — pas de code métier. C'est précisément ce découplage qui a permis de réinventer le transport plusieurs fois sans casser le web existant.

Les deux transports en jeu

TCPQUIC
Utilisé parHTTP/1.1 et HTTP/2HTTP/3
Repose surlui-même (couche OS)UDP + logique applicative
Livraisonflux ordonné globalflux indépendants par stream
Chiffrementajouté par-dessus (TLS)intégré (TLS 1.3 inclus)
Blocage HOLun paquet perdu gèle toutisolé au stream concerné

Garde les lignes « Livraison » et « Blocage HOL » en tête : c'est l'ordre global imposé par TCP qui provoque le piège de la section 05, et l'indépendance des streams QUIC qui l'élimine en sections 06–07. Tout le reste du cours développe ce tableau.

🔒Détail pratique : les navigateurs n'utilisent HTTP/2 et HTTP/3 qu'en HTTPS. En HTTP clair (sans chiffrement), on reste en HTTP/1.1. Dans la pratique du web public, « HTTP moderne » rime donc toujours avec « chiffré ».
02 — LE POINT DE DÉPART

HTTP/1.1 & le blocage

Un protocole texte, lisible, robuste — et un défaut structurel : sur une connexion, on ne traite qu'une requête à la fois.

Ce que 1.1 a apporté

Avant, en HTTP/1.0, chaque requête ouvrait une connexion TCP, récupérait une ressource, puis fermait tout. Rouvrir une connexion pour chaque image d'une page était un gâchis. HTTP/1.1 a introduit les connexions persistantes (keep-alive) : on garde la connexion ouverte et on y enchaîne plusieurs requêtes.

Une connexion persistante reste ouverte après une réponse, pour réutiliser le même tuyau TCP (et éviter de repayer son établissement) sur les requêtes suivantes.

Le défaut : une réponse à la fois

Sur une connexion HTTP/1.1, les requêtes sont traitées en série : la réponse 1 doit partir avant qu'on s'occupe de la 2. Il existe bien une option, le pipelining (envoyer plusieurs requêtes sans attendre), mais les réponses doivent revenir dans l'ordre d'envoi : une réponse lente bloque toutes celles derrière elle. Mal supporté et source de bugs, le pipelining est resté désactivé par défaut dans les navigateurs.

Head-of-line blocking (« blocage de tête de file ») : quand le premier élément d'une file bloque tous les suivants, même s'ils seraient prêts. En HTTP/1.1, une réponse lente en tête gèle la connexion entière.

L'analogie : une caisse de supermarché qui sert un client à la fois. Si la personne en tête a un caddie immense, celle qui n'a qu'une bouteille d'eau attend quand même. C'est exactement la connexion HTTP/1.1.

La parade des navigateurs : ouvrir plusieurs caisses

Pour contourner ça, le navigateur ouvre plusieurs connexions en parallèle vers un même domaine — typiquement autour de 6 (ce n'est pas imposé par la norme, c'est une limite usuelle des navigateurs). Six caisses ouvertes, donc jusqu'à six téléchargements de front. Mais ça reste un pansement : au-delà de 6, ça fait la queue, et chaque connexion coûte (mémoire, établissement TCP + TLS).

Charge une petite page : 9 fichiers, dont un gros bundle JS en premier. Compare une seule connexion (tout en file) et six connexions parallèles.

📥 Téléchargement des ressourcest = 0

En 1 connexion, regarde le petit style.css attendre derrière le gros app.js : c'est le head-of-line blocking.
Schéma illustratif : les durées sont fictives et la bande passante supposée infinie, pour isoler l'effet « file d'attente ». Dans la vraie vie, la bande passante est partagée — six connexions ne divisent pas le temps par six.
03 — UNE SEULE CONNEXION, TOUT DEDANS

HTTP/2 : le multiplexage

La grande idée de 2015 : arrêter d'ouvrir six connexions, et faire passer toutes les requêtes dans une seule — entremêlées.

Du texte au binaire

HTTP/1.1 envoie des messages en texte (lisibles à l'œil). HTTP/2 passe à un cadre binaire : les messages sont découpés en petits frames (trames) étiquetées, regroupées en streams (flux). C'est ce découpage qui rend le multiplexage possible.

Le multiplexage : faire circuler plusieurs flux (streams) simultanés sur une seule connexion TCP. Chaque frame porte l'identifiant de son stream, donc le serveur peut entrelacer les réponses et le client les rassemble correctement.

L'analogie : au lieu de six caisses (six connexions HTTP/1.1), une seule caisse avec un tapis roulant qui mélange les articles de plusieurs clients. Comme chaque article porte une étiquette (l'ID de stream), on sait à qui il appartient. Plus besoin d'attendre qu'un client finisse pour servir le suivant : tout avance ensemble.

Bénéfice direct : fini le head-of-line blocking au niveau HTTP. Une réponse lente n'occupe plus toute la connexion ; les autres streams continuent d'avancer entre ses frames. Et on économise les coûts de 5 connexions en trop.

Même page (12 ressources) chargée des deux façons. À gauche, HTTP/1.1 plafonné à 6 connexions ; à droite, HTTP/2 qui pousse tout sur une connexion multiplexée.

🐌 HTTP/1.1 — 6 connexionst = 0

6 ressources de front, le reste attend une connexion libre.

⚡ HTTP/2 — 1 connexion multiplexéet = 0

Les 12 streams avancent ensemble sur un seul tuyau.
Toujours illustratif (bande passante non modélisée). Le multiplexage gagne surtout quand il y a beaucoup de petites ressources et que le coût d'ouvrir des connexions pèse. Si tu es limité par le débit, l'écart se réduit.

Autres apports de HTTP/2

HTTP/2 a aussi introduit la compression des en-têtes (HPACK) et la priorisation des streams (dire « ce CSS critique d'abord, cette image de pied de page ensuite »). On détaille HPACK — et le destin du défunt « Server Push » — à la fiche suivante.

04 — COMPRESSER, ET UNE FAUSSE BONNE IDÉE

En-têtes & Server Push

Deux fonctionnalités de HTTP/2 : l'une (la compression d'en-têtes) est un franc succès ; l'autre (le push) est aujourd'hui abandonnée.

HPACK : ne pas répéter ses en-têtes

À chaque requête, le navigateur renvoie une montagne d'en-têtes quasi identiques : le même User-Agent (souvent 80 à 150 octets), les mêmes cookies de session, le même Accept-Encoding… En HTTP/1.1, tout ça repart en entier à chaque fois, en texte clair. Sur une page à 80 ressources, c'est un gâchis répété — et particulièrement douloureux quand chaque requête inclut un cookie de session de 200 octets.

HPACK (RFC 7541) compresse les en-têtes HTTP/2 grâce à deux mécanismes combinés :
Table statique : 61 entrées prédéfinies (méthodes courantes, codes de statut fréquents, en-têtes standard comme content-type, cache-control, accept-encoding…), disponibles d'emblée sans aucun échange préalable.
Table dynamique : alimentée au fil des échanges. Une fois qu'un en-tête a été transmis, les messages suivants le référencent par un simple index entier au lieu de le réécrire. Les deux extrémités maintiennent une copie synchronisée de cette table.

L'image : la première fois, tu épelles ton adresse complète au livreur ; la fois d'après, tu dis juste « même adresse que tout à l'heure » et il retrouve seul. En pratique : un User-Agent de 120 octets passe à quelques octets (l'index dans la table) dès la deuxième requête. Sur 80 ressources avec ce même en-tête, c'est plus de 9 000 octets économisés rien que sur cet en-tête — multiplie par les cookies et la dizaine d'autres en-têtes répétitifs.

La table dynamique est partagée et ordonnée : les deux extrémités doivent rester synchronisées, ce qui suppose une livraison en ordre — exactement la garantie de TCP. HPACK ne peut pas fonctionner sur QUIC, où les streams arrivent hors-ordre. HTTP/3 utilise donc une variante repensée, QPACK (RFC 9204), conçue pour les livraisons hors-ordre sans réintroduire de blocage de tête de file.

Server Push : l'idée séduisante… puis abandonnée

HTTP/2 permettait au serveur de pousser des ressources que le client n'avait pas encore demandées : « tu réclames index.html ? tiens, je t'envoie aussi style.css tout de suite, tu en auras besoin ». Sur le papier, un aller-retour gagné.

⚰️En pratique, le Server Push s'est révélé contre-productif : le serveur poussait souvent des fichiers déjà en cache chez le client (bande passante gaspillée), et il s'intégrait mal aux modèles de cache des navigateurs et aux Service Workers. Résultat : désactivé dans Chrome 106 (2022) puis retiré de Firefox 132 (octobre 2024). Considère-le comme mort.

Le remplaçant recommandé est 103 Early Hints : une réponse intermédiaire où le serveur suggère au client de précharger certaines ressources (via des en-têtes Link: rel=preload), en le laissant décider — sans rien lui imposer ni gaspiller de bande passante si le fichier est déjà en cache.

🧭À retenir : si tu lis un vieux tutoriel qui vante le Server Push HTTP/2, c'est dépassé. Pour précharger des ressources, regarde <link rel=preload> dans le HTML et 103 Early Hints côté serveur — c'est la voie recommandée aujourd'hui.
05 — LE BLOCAGE QUI A SURVÉCU

Le piège qui reste

HTTP/2 a supprimé le blocage au niveau HTTP. Mais en mettant tout sur une seule connexion TCP, il a fait remonter le même problème… un cran plus bas.

Le retour du head-of-line, version TCP

HTTP/2 entrelace plusieurs streams sur une connexion TCP. Or TCP a une règle d'or : il livre les octets strictement dans l'ordre où ils ont été envoyés. Si un paquet se perd en route, TCP retient tout ce qui arrive après dans un tampon, et ne le remet à l'application qu'une fois le paquet manquant retransmis.

TCP head-of-line blocking : comme tous les streams HTTP/2 partagent une seule connexion TCP ordonnée, un seul paquet perdu gèle TOUS les streams — même ceux dont les données étaient déjà arrivées intactes. TCP les garde en otage tant que le trou n'est pas comblé.

L'analogie : un tapis roulant unique qui impose de livrer les colis dans l'ordre. Si le colis n°5 tombe, les colis 6, 7, 8 — même posés sur le tapis, même destinés à d'autres personnes — attendent qu'on ait remis le n°5. C'est absurde, mais c'est la garantie d'ordre de TCP.

Trois streams (A, B, C) envoient chacun 6 paquets, entrelacés sur la connexion. Un paquet du stream B se perd. Compare le comportement selon le transport.

livré arrivé mais bloqué (tampon) perdu
Choisis un mode et lance la transmission.
Modèle simplifié (l'entrelacement et le délai de retransmission sont scénarisés), mais le mécanisme est exact : en TCP un trou bloque la livraison de tout ce qui suit ; en QUIC, seul le stream concerné attend.

Voilà le mur. On a beau optimiser HTTP au-dessus, le transport TCP impose son ordre global. Pour aller plus loin, il fallait changer de transport. C'est tout l'objet de HTTP/3.

06 — CHANGER DE FONDATIONS

QUIC : un nouveau transport

Plutôt que de réparer TCP (quasi impossible à faire évoluer), QUIC repart d'UDP et reconstruit un transport moderne par-dessus.

QUIC (RFC 9000, 2021) est un protocole de transport bâti sur UDP. Il fournit ce que TCP offrait — fiabilité, contrôle de congestion — plus le multiplexage de streams indépendants et le chiffrement, le tout réuni dans un seul protocole évolutif.

Pourquoi UDP ?

TCP est gravé dans le noyau des systèmes d'exploitation et dans d'innombrables équipements réseau intermédiaires (pare-feux, proxys, balanceurs de charge, boîtiers NAT — les « middleboxes »). Ces équipements ont, au fil du temps, appris à inspecter les paquets TCP, parfois à les modifier. Faire évoluer TCP demanderait de convaincre et de mettre à jour des millions de machines réparties sur l'internet — un chantier de plusieurs décennies.

UDP est l'opposé : il expédie des datagrammes sans ordre ni garantie. QUIC l'utilise comme base neutre, et reconstruit par-dessus — en espace utilisateur, dans la bibliothèque réseau de l'application, pas dans le noyau — tout ce que TCP offrait, plus ce qu'il ne pouvait pas offrir.

L'image : TCP est une autoroute dont le tracé est coulé dans le béton par l'État (le noyau OS et les middleboxes). Pour modifier la route, il faut des années de travaux et l'accord de tous les acteurs. UDP est un chemin de terre : QUIC y construit son propre revêtement à la vitesse d'une mise à jour logicielle. Nouvelle fonctionnalité dans QUIC ? On déploie une nouvelle version de la bibliothèque — aucun routeur à toucher.
Ossification du réseau : les middleboxes ont tellement appris à lire les champs TCP qu'elles bloquent ou « corrigent » parfois tout paquet dont elles ne reconnaissent pas le format. C'est pourquoi QUIC chiffre ses propres en-têtes de transport : si les middleboxes ne peuvent pas lire les champs internes, elles ne peuvent pas les modifier — et le protocole reste libre d'évoluer.
🔧QUIC n'est pas magiquement fiable parce qu'il utilise UDP. Il réimplémente lui-même les mécanismes de TCP — numéros de séquence, accusés de réception (ACK), retransmission des paquets perdus, contrôle de congestion — mais en espace utilisateur, et stream par stream. La différence clé : une retransmission QUIC ne concerne que le stream dont un paquet est perdu, pas l'ensemble de la connexion.

Streams vraiment indépendants

C'est la réponse directe au piège de la section 05. QUIC gère le multiplexage au niveau du transport : chaque stream est une séquence ordonnée à lui seul. Un paquet perdu n'affecte que le ou les streams dont il portait des données — les autres continuent d'être livrés intégralement.

🧵Reprends le simulateur de la section 05 en mode QUIC : la perte d'un paquet de B laisse A et C filer sans interruption. Seul B attend la retransmission. C'est ça, l'indépendance des streams — la principale raison d'être de HTTP/3.

Le chiffrement n'est pas une option

Là où TCP est neutre et où l'on ajoute TLS par-dessus, QUIC intègre TLS 1.3 dans le protocole. Il n'existe pas de QUIC « en clair » : tout est chiffré, en-têtes de transport compris. C'est la réponse directe à l'ossification — les middleboxes ne peuvent plus inspecter ce qu'elles ne savent pas lire. On verra en section 07 que cette fusion transport + chiffrement permet aussi d'établir une connexion en un seul aller-retour au lieu de deux.

Piège de vocabulaire : HTTP/3 ≠ QUIC. QUIC est le transport (la route et le véhicule) ; HTTP/3 (RFC 9114) est la façon de faire circuler HTTP par-dessus QUIC. D'autres protocoles pourraient utiliser QUIC comme transport — HTTP/3 est simplement le premier usage massif.
07 — CE QUE QUIC FAIT GAGNER

HTTP/3 en pratique

Au-delà de la fin du blocage TCP, QUIC apporte deux atouts très concrets : une connexion qui s'établit plus vite, et qui survit aux changements de réseau.

Un handshake fusionné : moins d'allers-retours

Chaque aller-retour entre client et serveur (un RTT, round-trip time) coûte du temps, surtout sur mobile. En TCP, on paie d'abord le handshake TCP, puis le handshake TLS — deux négociations successives. QUIC les fusionne : transport et chiffrement se négocient ensemble.

Établissement de connexion : QUIC atteint 1 RTT pour une première connexion (contre ~2 pour TCP+TLS 1.3), et même 0-RTT pour un serveur déjà visité — le client renvoie sa requête dès le premier paquet, en réutilisant les clés mises en cache.

Compte les allers-retours avant que la 1ʳᵉ donnée HTTP puisse partir, selon le scénario.

📱 ClientServeur 🖥
Le 0-RTT a une contrepartie de sécurité : ces données envoyées « d'avance » peuvent être rejouées par un attaquant. On le réserve donc aux requêtes sans effet de bord (typiquement des GET idempotents), jamais à un paiement. Et le décompte de RTT ci-dessus est volontairement simplifié.

La migration de connexion

Tu télécharges un fichier en Wi-Fi, tu sors, ton téléphone bascule en 4G. En TCP, la connexion est identifiée par le quadruplet IP source : port → IP dest : port ; changer d'IP la casse, il faut tout recommencer. QUIC identifie la connexion par un Connection ID indépendant de l'adresse : la connexion te suit sur le nouveau réseau, sans coupure.

La migration de connexion : grâce au Connection ID, une session QUIC continue même si l'adresse réseau du client change (Wi-Fi ↔ cellulaire). Le transfert en cours n'est pas interrompu.

L'image : en TCP, ton identité est ton adresse postale — si tu déménages, on perd ta trace. En QUIC, tu as un badge nominatif que tu gardes quel que soit l'endroit d'où tu te connectes.

QPACK : HPACK adapté à QUIC

La compression d'en-têtes de HTTP/2 (HPACK) supposait une livraison ordonnée — exactement ce que QUIC n'offre plus entre streams. HTTP/3 utilise donc QPACK (RFC 9204), une variante conçue pour fonctionner même quand les en-têtes arrivent dans le désordre, sans réintroduire de blocage de tête de file.

08 — DANS LE VRAI MONDE

Découverte & adoption

Comment un navigateur sait qu'un site parle HTTP/3 — et où en est réellement le déploiement, sans survente.

Le problème de l'amorçage

Une connexion commence forcément « à l'aveugle ». Le navigateur ne peut pas deviner que le serveur parle HTTP/3 : il se connecte d'abord classiquement (souvent en HTTP/2 sur TCP). Le serveur lui signale alors qu'il fait mieux ailleurs.

L'en-tête Alt-Svc (Alternative Services) est la pancarte du serveur : « je suis aussi joignable en HTTP/3 sur tel port ». Le navigateur le mémorise et tente HTTP/3 aux visites suivantes. Une alternative plus rapide existe via un enregistrement DNS dédié (type HTTPS/SVCB), qui annonce le support avant même la première connexion.

Conséquence importante : beaucoup de premières visites ne passent jamais en HTTP/3 — elles se contentent du HTTP/2 négocié d'entrée. D'où un écart entre « le site sait faire du HTTP/3 » et « la connexion a réellement utilisé HTTP/3 ».

Où en est-on vraiment ? (mi-2026)

Les chiffres dépendent énormément de ce qu'on mesure. Deux angles à ne pas confondre :

MesureOrdre de grandeurCe que ça veut dire
Part des requêtes sur le fil (Cloudflare Radar)HTTP/2 ≈ 51 % · HTTP/1.x ≈ 28 % · HTTP/3 ≈ 21 %Le trafic réellement échangé. HTTP/3 plafonne depuis plusieurs mois.
Part des sites qui « supportent » HTTP/3 (W3Techs)≈ 38–39 %Sites qui annoncent HTTP/3 (via Alt-Svc), pas forcément utilisé.
📊Chiffres mi-2026, qui bougeront : prends-les comme des ordres de grandeur, pas comme une vérité figée. Le message stable, lui, est double — HTTP/2 reste majoritaire dans le trafic, et HTTP/3 progresse mais n'a pas « tout remplacé ». Une bonne partie de l'adoption HTTP/3 visible vient des grands CDN (Cloudflare, Google…), qui l'activent par défaut.

Pourquoi HTTP/1.1 ne meurt pas

Une part tenace du trafic reste en HTTP/1.1 : proxys d'entreprise et équipements réseau qui « rétrogradent » les connexions, vieux load balancers, API internes jamais migrées, bots et clients non-navigateurs. Le protocole de 1997 a la vie dure parce qu'il est simple et universellement supporté.

🧭Et la performance ? HTTP/3 brille surtout sur les réseaux à pertes ou à forte latence (mobile, lointain) : c'est là que la fin du blocage TCP et le 0-RTT comptent. Sur une connexion fibre propre, l'écart avec un bon HTTP/2 est souvent modeste. « Plus récent » ne veut pas dire « toujours plus rapide pour ton cas ».
09 — TOUT RASSEMBLER

Synthèse

Le tableau de bord des trois versions, et le réflexe à garder pour chaque idée.

Comparatif des versions

HTTP/1.1HTTP/2HTTP/3
Année199720152022
TransportTCPTCPQUIC (UDP)
Formattextebinaire (frames)binaire (frames)
Multiplexagenonouioui
Blocage HTTPouirésolurésolu
Blocage TCPouioui (subsiste)éliminé
Compression en-têtesaucuneHPACKQPACK
Établissement~2 RTT~2 RTT1 RTT, voire 0
ChiffrementTLS optionnelTLS (navigateurs)intégré
Migration réseaunonnonoui

Une phrase par concept

Sémantique HTTPLe sens des messages (méthodes, codes, en-têtes) ; identique partout.
TransportComment les messages voyagent ; c'est lui qui distingue 1.1 / 2 / 3.
MultiplexagePlusieurs flux sur une connexion ; supprime le blocage au niveau HTTP.
Head-of-line blockingLe premier de la file bloque les suivants, même prêts.
Blocage TCPUn paquet perdu gèle tous les streams partageant la connexion TCP.
QUICTransport sur UDP : streams indépendants, chiffrement intégré, évolutif.
0-RTTReprise instantanée d'une connexion connue (à réserver aux requêtes sûres).
Migration de connexionLa session QUIC survit au changement de réseau grâce au Connection ID.

Guide de choix express

🧭Le fil rouge du cours : chaque version a éliminé le goulot de la précédente. 1.1 sérialise → 2 multiplexe → mais le multiplexage bute sur l'ordre de TCP → 3 change de transport (QUIC) pour de bon. La sémantique HTTP, elle, n'a pas bougé d'un pouce.
🔗Pour relier au reste du wiki : le socket Nginx↔PHP-FPM du cours PHP — Concurrence & Runtimes est de la communication locale entre processus, alors qu'ici on parle du transport entre machines. Même esprit (un canal qui achemine des messages), deux échelles.