Zum Hauptinhalt springen

3. Client Behavior (Client-Verhalten)

"SVCB resolution (SVCB-Auflösung)" ist der Prozess der Aufzählung und Sortierung der verfügbaren Endpunkte für einen Dienst, wie er vom Client durchgeführt wird. Die SVCB-Auflösung wird wie folgt implementiert:

  1. Sei $QNAME der Dienstname plus geeignete Präfixe für das Schema (siehe Abschnitt 2.3).

  2. Senden Sie eine SVCB-Abfrage für $QNAME.

  3. Wenn ein AliasMode SVCB-Datensatz für $QNAME zurückgegeben wird (nachdem CNAMEs normal gefolgt wurden), setzen Sie $QNAME auf seinen TargetName (ohne zusätzliche Präfixe) und kehren Sie zu Schritt 2 zurück, vorbehaltlich Kettenlängenbeschränkungen und Schleifenerkennungsheuristiken (siehe Abschnitt 3.1).

  4. Wenn ein oder mehrere "compatible (kompatible)" (Abschnitt 8) ServiceMode-Datensätze zurückgegeben werden, repräsentieren diese die alternativen Endpunkte. Sortieren Sie die Datensätze nach aufsteigendem SvcPriority.

  5. Andernfalls ist die SVCB-Auflösung fehlgeschlagen und die Liste der verfügbaren Endpunkte ist leer.

Dieses Verfahren hängt nicht davon ab, dass ein rekursiver oder autoritativer DNS-Server dieser Spezifikation entspricht oder irgendeine Kenntnis von SVCB hat.

Ein Client wird als "SVCB-optional (SVCB-optional)" bezeichnet, wenn er ohne Verwendung von ServiceMode-Datensätzen verbinden kann; andernfalls wird er als "SVCB-reliant (SVCB-abhängig)" bezeichnet. Clients für bereits existierende Protokolle (z.B. HTTP) MÜSSEN (SHALL) SVCB-optional-Verhalten implementieren (außer wie in Abschnitt 3.1 angegeben oder wenn durch zukünftige Spezifikationen modifiziert).

SVCB-optional-Clients SOLLTEN (SHOULD) parallel alle anderen DNS-Abfragen ausgeben, die für die Verbindungsherstellung benötigt werden könnten, wenn der SVCB-Datensatz fehlt, um die Verzögerung in diesem Fall zu minimieren und die in Abschnitt 5 diskutierten Optimierungen zu ermöglichen.

Sobald die SVCB-Auflösung abgeschlossen ist, unabhängig davon, ob sie erfolgreich war oder nicht, wenn mindestens ein AliasMode-Datensatz verarbeitet wurde, MÜSSEN (SHALL) SVCB-optional-Clients einen Endpunkt bestehend aus dem endgültigen Wert von $QNAME, der Portnummer des Autoritätsendpunkts und ohne SvcParams an die Endpunktliste anhängen. (Dieser Endpunkt wird versucht, bevor auf Nicht-SVCB-Verbindungsmodi zurückgegriffen wird. Dies stellt sicher, dass SVCB-optional-Clients einen AliasMode-Datensatz verwenden, dessen TargetName A- und/oder AAAA-Datensätze hat, aber keine SVCB-Datensätze.)

Der Client fährt mit der Verbindungsherstellung unter Verwendung dieser Endpunktliste fort. Clients SOLLTEN (SHOULD) zuerst Alternativen mit höherer Priorität versuchen, mit Rückfall auf Alternativen mit niedrigerer Priorität. Clients lösen AAAA- und/oder A-Datensätze für den ausgewählten TargetName auf und KÖNNEN (MAY) zwischen ihnen unter Verwendung eines Ansatzes wie Happy Eyeballs [HappyEyeballsV2] wählen.

Wenn der Client SVCB-optional ist und die Verbindung unter Verwendung dieser Endpunktliste fehlgeschlagen ist, versucht der Client nun, Nicht-SVCB-Verbindungsmodi zu verwenden.

Einige wichtige Optimierungen werden in Abschnitt 5 diskutiert, um zusätzliche Latenz im Vergleich zu gewöhnlichen AAAA/A-Lookups zu vermeiden.