Das Capsule-Protokoll (englisch Capsule Protocol) ist ein in RFC 9297 definiertes Verfahren, um Daten in HTTP-Verbindungen zu kapseln — insbesondere HTTP-Datagrams. Eine Capsule ist eine einzelne, in sich geschlossene Nachricht mit Typ, Länge und Nutzdaten. Damit lassen sich Datagramme auch über Verbindungen transportieren, die nur zuverlässige Datenströme kennen, etwa HTTP/1.1 oder HTTP/2.
Wie funktioniert die Kapselung?
Jede Capsule beginnt mit einem Typ-Feld und einer Längenangabe, gefolgt von den eigentlichen Nutzdaten. Die wichtigste Variante ist die Datagram-Capsule, die ein HTTP-Datagramm innerhalb eines normalen Request- oder Response-Streams überträgt. Dadurch entsteht eine einheitliche Abstraktion: Auf der oberen Ebene sieht eine Anwendung immer „Datagramme", egal ob sie unzuverlässig per QUIC-DATAGRAM oder zuverlässig gekapselt im Stream laufen.
Verwendung in der Praxis
- CONNECT-UDP-Tunnel: Beim erweiterten CONNECT für UDP-Proxying signalisiert der Header
Capsule-Protocol: ?1(bzw. in HTTP/3 ein eigener SETTINGS-Parameter), dass beide Seiten das Capsule-Protokoll beherrschen. - Abwärtskompatibilität: Auch wenn die QUIC-DATAGRAM-Erweiterung fehlt, bleiben HTTP-Datagrams über Capsules nutzbar.
- Erweiterbarkeit: Das Protokoll sieht private und zukünftige Capsule-Typen vor; unbekannte Typen werden von Endpunkten nach festen Regeln behandelt.
Einordnung
Das Capsule-Protokoll ist die Kapselungs-Ebene für HTTP-Datagrams. Es spielt seine Stärke vor allem in Verbindung mit MASQUE-Tunneln und WebTransport aus, wo es zuverlässige und unzuverlässige Datenpfade vereinheitlicht.
Verwandte Grundlagen: HTTP-Datagrams, CONNECT-UDP.