Aller au contenu principal

6.2.1. SUBSCRIBE Request (Demande SUBSCRIBE)

6.2.1. SUBSCRIBE Request (Demande SUBSCRIBE)

Une demande SUBSCRIBE commence par l'en-tête DSO standard de 12 octets [RFC8490], suivi du TLV primaire SUBSCRIBE (Primary TLV). Une demande SUBSCRIBE est illustrée dans la figure 1.

Le champ MESSAGE ID DOIT être défini à une valeur unique que le client n'utilise pour aucune autre opération active sur cette session DSO. Aux fins du présent document, un MESSAGE ID est considéré comme en cours d'utilisation sur cette session si le client l'a utilisé pour une demande pour laquelle il n'a pas encore reçu de réponse, ou s'il l'a utilisé pour un abonnement qu'il n'a pas encore annulé avec UNSUBSCRIBE. Dans la réponse SUBSCRIBE, le serveur DOIT renvoyer la valeur MESSAGE ID inchangée.

Les autres champs d'en-tête DOIVENT être définis comme décrit dans la spécification DSO [RFC8490]. Le champ DNS OPCODE contient la valeur OPCODE pour DNS Stateful Operations (6). Les quatre champs de comptage doivent être zéro, et les quatre sections correspondantes doivent être vides (c'est-à-dire absentes).

Le DSO-TYPE est SUBSCRIBE (0x0040).

Le DSO-LENGTH est la longueur du DSO-DATA qui suit, qui spécifie le nom, le type et la classe (class) des enregistrements recherchés.

Le DSO-DATA d'une demande SUBSCRIBE DOIT contenir exactement un NAME, un TYPE et une CLASS. Comme les demandes SUBSCRIBE sont envoyées sur TCP, plusieurs messages de demande DSO SUBSCRIBE peuvent être concaténés dans un seul flux TCP et regroupés efficacement dans des segments TCP.

Si elle est acceptée, l'abonnement reste en vigueur jusqu'à ce que le client annule l'abonnement avec UNSUBSCRIBE ou jusqu'à ce que la session DSO entre le client et le serveur soit fermée.

Les demandes SUBSCRIBE sur une session donnée DOIVENT être uniques. Un client NE DOIT PAS envoyer un message SUBSCRIBE qui duplique le nom, le type et la classe d'un abonnement actif existant sur cette session DSO. Aux fins de cette correspondance, l'insensibilité à la casse DNS établie pour les lettres US-ASCII [RFC0020] s'applique (par exemple, « example.com » et « Example.com » sont identiques). Si un serveur reçoit un tel message SUBSCRIBE en double, il s'agit d'une erreur fatale et le serveur DOIT interrompre immédiatement et de force la connexion.

Le mécanisme de joker DNS (wildcarding) n'est pas pris en charge. Autrement dit, un astérisque (« * ») dans un message SUBSCRIBE ne correspond qu'à un astérisque littéral (« * ») dans un nom et à rien d'autre. De même, un CNAME dans un message SUBSCRIBE ne correspond qu'à un enregistrement CNAME portant ce nom dans la zone et à aucun autre enregistrement portant ce nom.

Un client PEUT s'abonner à des enregistrements inconnus du serveur au moment de la demande (à condition que le nom tombe dans l'une des zones dont le serveur est responsable), et ce n'est pas une erreur. Le serveur NE DOIT PAS renvoyer NXDOMAIN dans ce cas. Le serveur DOIT accepter ces demandes et envoyer des notifications push (Push Notifications) si et lorsque des enregistrements correspondants sont trouvés à l'avenir.

Si ni TYPE ni CLASS ne sont ANY (255), il s'agit d'un abonnement spécifique aux changements pour le nom, le type et la classe donnés. Si l'un ou les deux de TYPE ou CLASS sont ANY (255), cet abonnement correspond à tous les types et/ou toutes les classes selon le cas.

NOTE : Une bizarrerie peu connue du DNS est que, dans les demandes DNS QUERY, QTYPE et QCLASS 255 signifient « ANY », pas « ALL ». Ils indiquent que le serveur doit répondre avec des enregistrements correspondants de son choix (ANY), pas nécessairement avec tous les enregistrements correspondants (ALL). Cela peut conduire à des résultats surprenants et inattendus, où une requête renvoie certaines réponses valides mais pas toutes, et rend les requêtes avec QTYPE = 255 (ANY) moins utiles que les gens ne l'imaginent parfois.

Utilisé conjointement avec SUBSCRIBE, TYPE 255 et CLASS 255 doivent être interprétés comme signifiant « ALL », pas « ANY ». Après acceptation d'un abonnement où l'un ou les deux de TYPE ou CLASS valent 255, le serveur DOIT envoyer des mises à jour de notification push (Push Notification Updates) pour TOUS les changements d'enregistrements correspondant à l'abonnement, pas seulement certains d'entre eux.