3. Client Behavior (Comportement du client)
La "SVCB resolution (résolution SVCB)" est le processus d'énumération et d'ordonnancement des points de terminaison disponibles pour un service, tel qu'effectué par le client. La résolution SVCB est mise en œuvre comme suit:
-
Soit $QNAME le nom du service plus les préfixes appropriés pour le schéma (voir Section 2.3).
-
Émettre une requête SVCB pour $QNAME.
-
Si un enregistrement SVCB AliasMode est retourné pour $QNAME (après avoir suivi les CNAME normalement), définir $QNAME comme son TargetName (sans préfixes supplémentaires) et boucler vers l'étape 2, sous réserve des limites de longueur de chaîne et des heuristiques de détection de boucle (voir Section 3.1).
-
Si un ou plusieurs enregistrements ServiceMode "compatible (compatibles)" (Section 8) sont retournés, ceux-ci représentent les points de terminaison alternatifs. Trier les enregistrements par SvcPriority croissant.
-
Sinon, la résolution SVCB a échoué et la liste des points de terminaison disponibles est vide.
Cette procédure ne dépend d'aucun serveur DNS récursif ou autoritaire pour se conformer à cette spécification ou avoir une quelconque connaissance de SVCB.
Un client est appelé "SVCB-optional (SVCB optionnel)" s'il peut se connecter sans utiliser les enregistrements ServiceMode; sinon, il est appelé "SVCB-reliant (dépendant de SVCB)". Les clients pour les protocoles préexistants (par exemple, HTTP) DOIVENT (SHALL) implémenter le comportement SVCB-optional (sauf indication contraire dans la Section 3.1 ou lorsqu'il est modifié par des spécifications futures).
Les clients SVCB-optional DEVRAIENT (SHOULD) émettre en parallèle toutes autres requêtes DNS qui pourraient être nécessaires pour l'établissement de la connexion si l'enregistrement SVCB est absent, afin de minimiser le délai dans ce cas et d'activer les optimisations discutées dans la Section 5.
Une fois la résolution SVCB terminée, qu'elle ait réussi ou non, si au moins un enregistrement AliasMode a été traité, les clients SVCB-optional DOIVENT (SHALL) ajouter à la liste des points de terminaison un point de terminaison constitué de la valeur finale de $QNAME, du numéro de port du point de terminaison d'autorité et sans SvcParams. (Ce point de terminaison sera tenté avant de revenir aux modes de connexion non-SVCB. Cela garantit que les clients SVCB-optional utiliseront un enregistrement AliasMode dont le TargetName a des enregistrements A et/ou AAAA mais pas d'enregistrements SVCB.)
Le client procède à l'établissement de la connexion en utilisant cette liste de points de terminaison. Les clients DEVRAIENT (SHOULD) essayer d'abord les alternatives de priorité supérieure, avec un repli vers les alternatives de priorité inférieure. Les clients résolvent les enregistrements AAAA et/ou A pour le TargetName sélectionné et PEUVENT (MAY) choisir entre eux en utilisant une approche telle que Happy Eyeballs [HappyEyeballsV2].
Si le client est SVCB-optional et que la connexion utilisant cette liste de points de terminaison a échoué, le client tente maintenant d'utiliser les modes de connexion non-SVCB.
Certaines optimisations importantes sont discutées dans la Section 5 pour éviter une latence supplémentaire par rapport aux recherches AAAA/A ordinaires.