Zum Hauptinhalt springen

RFC 9298 - Proxying von UDP in HTTP

Internet Engineering Task Force (IETF) D. Schinazi Request for Comments: 9298 Google LLC Category: Standards Track 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 and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.

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.