Zum Hauptinhalt springen

RFC 9298 - Proxying von UDP in HTTP

Internet Engineering Task Force (IETF) D. Schinazi Request for Comments: 9298 Google LLC Kategorie: Standardisierungsprozess August 2022 ISSN: 2070-1721

                      Proxying von UDP in HTTP

Zusammenfassung

Dieses Dokument beschreibt, wie UDP in HTTP geproxt wird, ähnlich wie die HTTP CONNECT-Methode das Proxying von TCP in HTTP ermöglicht. Genauer gesagt definiert dieses Dokument ein Protokoll, das es einem HTTP-Client ermöglicht, einen Tunnel für UDP-Kommunikation durch einen als Proxy fungierenden HTTP-Server zu erstellen.

Status dieses Memos

Dies ist ein Internet Standards Track-Dokument.

Dieses Dokument ist ein Produkt der Internet Engineering Task Force (IETF). Es repräsentiert den Konsens der IETF-Community. Es wurde einer öffentlichen Überprüfung unterzogen und von der Internet Engineering Steering Group (IESG) zur Veröffentlichung genehmigt. Weitere Informationen zu Internet-Standards finden Sie in Abschnitt 2 von RFC 7841.

Informationen zum aktuellen Status dieses Dokuments, etwaige Errata und Hinweise zur Abgabe von Feedback finden Sie unter https://www.rfc-editor.org/info/rfc9298.

Urheberrechtshinweis

Copyright (c) 2022 IETF Trust und die als Autoren dieses Dokuments bezeichneten Personen. Alle Rechte vorbehalten.

Dieses Dokument unterliegt BCP 78 und den zum Zeitpunkt seiner Veröffentlichung geltenden rechtlichen Bestimmungen des IETF Trust für IETF-Dokumente (https://trustee.ietf.org/license-info). Bitte lesen Sie diese Dokumente sorgfältig, da sie Ihre Rechte und Einschränkungen in Bezug auf dieses Dokument beschreiben. Aus diesem Dokument entnommene Codebestandteile müssen den in Abschnitt 4.e der rechtlichen Bestimmungen des Trust beschriebenen Text der überarbeiteten BSD-Lizenz enthalten und werden, wie dort beschrieben, ohne Gewährleistung bereitgestellt.

Inhaltsverzeichnis

  1. Einführung 1.1. Konventionen und Definitionen

  2. Client-Konfiguration

  3. Tunneln von UDP über HTTP 3.1. UDP-Proxy-Handhabung 3.2. HTTP/1.1-Anfrage 3.3. HTTP/1.1-Antwort 3.4. HTTP/2- und HTTP/3-Anfragen 3.5. HTTP/2- und HTTP/3-Antworten

  4. Kontext-Identifikatoren

  5. HTTP-Datagramm-Nutzlastformat

  6. Leistungsüberlegungen 6.1. MTU-Überlegungen 6.2. Tunneln von ECN-Markierungen

  7. Sicherheitsüberlegungen

  8. IANA-Überlegungen 8.1. HTTP-Upgrade-Token 8.2. Well-Known URI

  9. Referenzen 9.1. Normative Referenzen 9.2. Informative Referenzen Danksagungen Adresse des Autors

  10. Einführung

Während HTTP die CONNECT-Methode (siehe Abschnitt 9.3.6 von [HTTP]) bereitstellt, um einen TCP-[TCP]-Tunnel zu einem Proxy zu erstellen, fehlte vor dieser Spezifikation eine Methode, um dies für UDP-[UDP]-Verkehr zu tun.

Dieses Dokument beschreibt ein Protokoll zum Tunneln von UDP zu einem Server, der als UDP-spezifischer Proxy über HTTP fungiert. UDP-Tunnel werden häufig verwendet, um eine Ende-zu-Ende-Verbindung zu erstellen, die dann mit QUIC [QUIC] oder einem anderen über UDP laufenden Protokoll gesichert werden kann. Im Gegensatz zur HTTP CONNECT-Methode wird der UDP-Proxy selbst mit einer absoluten URL identifiziert, die das Ziel des Verkehrs enthält. Clients generieren diese URLs unter Verwendung eines URI-Templates [TEMPLATE], wie in Abschnitt 2 beschrieben.

Dieses Protokoll unterstützt alle bestehenden Versionen von HTTP durch die Verwendung von HTTP-Datagrammen [HTTP-DGRAM]. Bei Verwendung von HTTP/2 [HTTP/2] oder HTTP/3 [HTTP/3] verwendet es HTTP Extended CONNECT wie in [EXT-CONNECT2] und [EXT-CONNECT3] beschrieben. Bei Verwendung von HTTP/1.x [HTTP/1.1] verwendet es HTTP Upgrade wie in Abschnitt 7.8 von [HTTP] definiert.

1.1. Konventionen und Definitionen

Die Schlüsselwörter "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" und "OPTIONAL" in diesem Dokument sind so zu interpretieren, wie in BCP 14 [RFC2119] [RFC8174] beschrieben, wenn und nur wenn sie wie hier gezeigt in Großbuchstaben erscheinen.

In diesem Dokument verwenden wir den Begriff "UDP-Proxy", um den HTTP-Server zu bezeichnen, der auf die UDP-Tunneling-Anfrage des Clients hin einen UDP-Socket zu einem Zielserver öffnet und die Antwort auf diese Anfrage generiert. Wenn zwischen dem Client und dem UDP-Proxy HTTP-Zwischenhändler (wie in Abschnitt 3.7 von [HTTP] definiert) vorhanden sind, werden diese in diesem Dokument als "Zwischenhändler" bezeichnet.

Beachten Sie, dass, wenn die verwendete HTTP-Version das Multiplexen von Streams nicht unterstützt (wie z. B. HTTP/1.1), jeder Verweis auf "Stream" in diesem Dokument die gesamte Verbindung darstellt.