Zum Hauptinhalt springen

4. Der ALTSVC HTTP/2 Frame

Der ALTSVC HTTP/2 Frame ([RFC7540], Abschnitt 4) kündigt die Verfügbarkeit eines alternativen Dienstes an einen HTTP/2-Client an.

Der ALTSVC-Frame ist eine nicht-kritische Erweiterung von HTTP/2. Endpunkte, die diesen Frame nicht unterstützen, werden ihn ignorieren (gemäß den in Abschnitt 4.1 von [RFC7540] definierten Erweiterungsregeln).

Ein ALTSVC-Frame von einem Server an einen Client auf einem Stream, der nicht Stream 0 ist, zeigt an, dass der übermittelte alternative Dienst mit dem Ursprung dieses Streams verknüpft ist.

Ein ALTSVC-Frame von einem Server an einen Client auf Stream 0 zeigt an, dass der übermittelte alternative Dienst mit dem Ursprung verknüpft ist, der im Origin-Feld des Frames enthalten ist. Eine Verknüpfung mit einem Ursprung, den der Client für die aktuelle Verbindung nicht als autoritativ betrachtet, MUSS ignoriert werden.

Der ALTSVC-Frame-Typ ist 0xa (dezimal 10).

+-------------------------------+-------------------------------+
| Origin-Len (16) | Origin? (*) ...
+-------------------------------+-------------------------------+
| Alt-Svc-Field-Value (*) ...
+---------------------------------------------------------------+

ALTSVC Frame Payload

Der ALTSVC-Frame enthält die folgenden Felder:

  • Origin-Len: Eine vorzeichenlose 16-Bit-Ganzzahl, die die Länge des Origin-Feldes in Oktetten angibt.
  • Origin: Eine OPTIONALE Zeichenfolge, die die ASCII-Serialisierung eines Ursprungs ([RFC6454], Abschnitt 6.2) enthält, auf den der alternative Dienst anwendbar ist.
  • Alt-Svc-Field-Value: Eine Oktettsequenz (Länge bestimmt durch Subtraktion der Länge aller vorangehenden Felder von der Frame-Länge), die einen Wert enthält, der mit dem in Abschnitt 3 definierten Alt-Svc-Feldwert identisch ist (ABNF-Produktion "Alt-Svc").

Der ALTSVC-Frame definiert keine Flags.

Der ALTSVC-Frame ist für den Empfang durch Clients bestimmt. Ein Gerät, das als Server fungiert, MUSS ihn ignorieren.

Ein ALTSVC-Frame auf Stream 0 mit leeren (Länge 0) "Origin"-Informationen ist ungültig und MUSS ignoriert werden. Ein ALTSVC-Frame auf einem anderen Stream als Stream 0, der nicht leere "Origin"-Informationen enthält, ist ungültig und MUSS ignoriert werden.

Der ALTSVC-Frame wird Hop-by-Hop verarbeitet. Ein Vermittler DARF ALTSVC-Frames NICHT weiterleiten, obwohl er die in ALTSVC-Frames enthaltenen Informationen verwenden kann, um neue ALTSVC-Frames zu bilden, die an seine eigenen Clients gesendet werden.

Der Empfang eines ALTSVC-Frames ist semantisch gleichbedeutend mit dem Empfang eines Alt-Svc Header-Feldes. Infolgedessen führt der ALTSVC-Frame dazu, dass alternative Dienste für den entsprechenden Ursprung ersetzt werden. Beachten Sie, dass es unklug wäre, die Verwendung von Alt-Svc Header-Feldern mit der Verwendung von ALTSVC-Frames zu mischen, da die Empfangsreihenfolge schwer vorhersehbar sein könnte.