HTTP-Datagrams sind eine Konvention aus dem Jahr 2022, um multiplexbare, unzuverlässige Datagramme innerhalb einer HTTP-Verbindung zu übertragen. Die Grundlage bildet RFC 9297 („HTTP Datagrams and the Capsule Protocol"), ergänzt durch die QUIC-Datagramm-Erweiterung aus RFC 9221. Während klassisches HTTP Daten als zuverlässige Byte-Ströme übermittelt, erlauben HTTP-Datagrams kleine Nachrichten ohne Reihenfolge- oder Verlustgarantie — ideal für Echtzeit-Anwendungen wie Gaming, Video oder Tunnelprotokolle.

Technischer Hintergrund

In HTTP/3 werden HTTP-Datagrams unzuverlässig über die QUIC-DATAGRAM-Erweiterung (RFC 9221) gesendet. Jedes Datagramm wird dabei einem Request-Stream zugeordnet, sodass mehrere Datenströme gleichzeitig über eine einzige QUIC-Verbindung laufen können. Ist die QUIC-DATAGRAM-Unterstützung nicht verfügbar oder unerwünscht, greift als Fallback das Capsule-Protokoll: Es kapselt die Datagramme in spezielle Capsules innerhalb eines zuverlässigen Streams und sorgt so für Abwärtskompatibilität mit älteren HTTP-Versionen.

Praxis: Wozu werden HTTP-Datagrams genutzt?

  • MASQUE-Tunnel: Das Proxy-Protokoll MASQUE baut auf HTTP-Datagrams auf, um UDP-Datenverkehr über HTTP/3 zu tunneln.
  • WebTransport: Die Browser-API WebTransport nutzt HTTP-Datagrams für unzuverlässige Echtzeit-Kommunikation.
  • Echtzeit-Spiele und Live-Streaming: Verspätete Daten sind nutzlos — ein verworfener Frame ist besser als ein Nachzügler.

Die Verhandlung der Unterstützung erfolgt über die HTTP/3-SETTINGS: Da diese in einem unidirektionalen Stream gesendet werden, steht die Information nicht sofort nach dem QUIC-Handshake fest. Implementierungen wie quic-go oder das HTTP/3-Modul moderner Browser bieten entsprechende APIs.

Abgrenzung

HTTP-Datagrams ergänzen HTTP/3 um eine Datagramm-Ebene; QUIC selbst liefert mit RFC 9221 die zugrunde liegende Transport-Erweiterung. Die Verbindung zu HTTP/2 besteht nur über das Capsule-Protokoll als Fallback — natives HTTP/2 kennt keine Datagramme.

Verwandte Grundlagen: Capsule-Protokoll, CONNECT-UDP.