3. Client Behavior (Comportamento del client)
"SVCB resolution (risoluzione SVCB)" è il processo di enumerazione e ordinamento degli endpoint disponibili per un servizio, come eseguito dal client. La risoluzione SVCB è implementata come segue:
-
Sia $QNAME il nome del servizio più i prefissi appropriati per lo schema (vedere Sezione 2.3).
-
Emettere una query SVCB per $QNAME.
-
Se viene restituito un record SVCB AliasMode per $QNAME (dopo aver seguito i CNAME normalmente), impostare $QNAME al suo TargetName (senza prefissi aggiuntivi) e tornare al Passo 2, soggetto ai limiti di lunghezza della catena e alle euristiche di rilevamento dei loop (vedere Sezione 3.1).
-
Se vengono restituiti uno o più record ServiceMode "compatible (compatibili)" (Sezione 8), questi rappresentano gli endpoint alternativi. Ordinare i record per SvcPriority crescente.
-
Altrimenti, la risoluzione SVCB è fallita e l'elenco degli endpoint disponibili è vuoto.
Questa procedura non si basa su alcun server DNS ricorsivo o autorevole per conformarsi a questa specifica o avere alcuna consapevolezza di SVCB.
Un client è chiamato "SVCB-optional (SVCB opzionale)" se può connettersi senza l'uso di record ServiceMode; altrimenti, è chiamato "SVCB-reliant (dipendente da SVCB)". I client per protocolli preesistenti (ad esempio, HTTP) DEVONO (SHALL) implementare il comportamento SVCB-optional (tranne come indicato nella Sezione 3.1 o quando modificato da specifiche future).
I client SVCB-optional DOVREBBERO (SHOULD) emettere in parallelo qualsiasi altra query DNS che potrebbe essere necessaria per la creazione della connessione se il record SVCB è assente, al fine di minimizzare il ritardo in quel caso e abilitare le ottimizzazioni discusse nella Sezione 5.
Una volta conclusa la risoluzione SVCB, con successo o meno, se è stato elaborato almeno un record AliasMode, i client SVCB-optional DEVONO (SHALL) aggiungere all'elenco degli endpoint un endpoint costituito dal valore finale di $QNAME, dal numero di porta dell'endpoint di autorità e senza SvcParams. (Questo endpoint verrà tentato prima di tornare alle modalità di connessione non-SVCB. Questo assicura che i client SVCB-optional utilizzeranno un record AliasMode il cui TargetName ha record A e/o AAAA ma nessun record SVCB.)
Il client procede con la creazione della connessione utilizzando questo elenco di endpoint. I client DOVREBBERO (SHOULD) provare prima le alternative con priorità più alta, con ripiego su alternative con priorità più bassa. I client risolvono i record AAAA e/o A per il TargetName selezionato e POSSONO (MAY) scegliere tra di essi utilizzando un approccio come Happy Eyeballs [HappyEyeballsV2].
Se il client è SVCB-optional e la connessione utilizzando questo elenco di endpoint è fallita, il client ora tenta di utilizzare modalità di connessione non-SVCB.
Alcune importanti ottimizzazioni sono discusse nella Sezione 5 per evitare latenza aggiuntiva rispetto alle ricerche AAAA/A ordinarie.