Groupe de travail Réseau	A. Newton, VeriSign, Inc.	
Request for Comments : 3982	M. Sanz, DENIC eG	
Catégorie : En cours de normalisation		
Traduction Claude Brière de L'Isle	janvier 2005	

IRIS : un type de registre de domaine 
pour le service d'information des registres Internet

Statut de ce mémoire
Le présent document spécifie un protocole Internet en cours de normalisation pour la communauté de l’Internet, et appelle à des discussions et des suggestions pour son amélioration. Prière de se reporter à l’édition actuelle du STD 1 "Normes des protocoles officiels de l’Internet" pour connaître l’état de normalisation et le statut de ce protocole. La distribution du présent mémoire n’est soumise à aucune restriction.

Notice de copyright
Copyright (C) The Internet Society (2005).

Résumé
Le présent document décrit un schéma de registre du service d'informations sur les registres de l'Internet (IRIS, Internet Registry Information Service) pour les informations enregistrées du DNS. Le schéma étend les opérations nécessaires d'interrogation et de résultat de IRIS pour fournir le service d'informations fonctionnelles nécessaire pour la syntaxe et les résultats utilisés par les registres et registraires de domaines.
Table des Matières
1. Introduction	2
2. Terminologie du document	2
3. Description de schéma	2
3.1 Dérivées d'interrogation	2
3.2 Dérivées de résultat	4
3.3 Dérivées de code générique	8
3.4 Prise en charge de <iris:lookupEntity>	8
4. Syntaxe formelle XML	8
5. Conformité au transport BEEP	24
5.1 Schéma de message	24
5.2 Authentification du serveur	24
6. Résolution d'URI	24
6.1 Étiquette de service d'application	24
6.2 Résolution de bas en haut	24
6.3. Résolution de haut en bas	24
7. Considérations d'internationalisation	25
8. Considérations relatives à l'IANA	25
8.1 Enregistrement d'URN d'espace de noms XML	25
8.2 Enregistrement S-NAPTR	25
8.3 Enregistrement BEEP	25
9. Considérations sur la sécurité	25
10. Références	26
10.1 Références normatives	26
10.2 Références pour information	26
Appendice A. Exemples de demandes et réponses	27
A.1 Exemple 1	27
A.2 Exemple 2	28
A.3 Exemple 3	29
Appendice B. Exemple de mise en série de base de données	31
Appendice C. Remerciements	32
Adresse des auteurs	32
Déclaration complète de droits de reproduction	33

1.	Introduction

Le présent document décrit un schéma de registre IRIS pour les registres de domaines Internet qui utilisent un schéma XML [4] dérivé du schéma IRIS [5] et l'utilisant. Les types d'interrogations et de résultats mentionnés dans le présent document se fondent sur les exigences fonctionnelles décrites dans CRISP [17].

Le schéma donné dans le présent document est spécifié en utilisant le langage de balisage extensible (XML, Extensible Markup Language) 1.0, comme décrit dans XML [1], la notation de schéma XML, décrite dans XML_SD [3] et XML_SS [4], et les espaces de noms XML, décrits dans XML_NS [2].

Des exemples d'échanges XML entre client et serveur XML avec ce type de registre sont disponibles à l'Appendice A.

2.	Terminologie du document

Les mots clés "DOIT", "NE DOIT PAS", "EXIGE", "DEVRA", "NE DEVRA PAS", "DEVRAIT", "NE DEVRAIT PAS", "RECOMMANDE", "PEUT", et "FACULTATIF" en majuscules dans ce document sont à interpréter comme décrit dans le BCP 14, [RFC2119].

3.	Description de schéma

IRIS demande la dérivation des éléments d'interrogation et de résultat par un schéma de registre. Leurs descriptions suivent.

Les références aux éléments XML sans un qualificatif d'espace de noms sont du schéma défini à la Section 4. Les références aux éléments et attributs avec le qualificatif d'espace de nom XML "iris" sont du schéma défini dans IRIS [5].

Les descriptions contenues dans cette section se réfèrent aux éléments et attributs XML et à leur relation à l'échange de données au sein du protocole. Ces descriptions contiennent aussi des spécifications qui sortent du domaine d'application de la syntaxe XML formelle. Cette section utilise des termes définis par la RFC 2119 [10] pour les décrire. Pour lire cette section, prière de se référer à la Section 4 pour les détails nécessaires sur la syntaxe XML formelle.

3.1	Dérivées d'interrogation
3.1.1	Interrogation <findRegistrarsByName>
<findRegistrarsByName> recherche une autorité d'enregistrement désignée comme registraire pour le registre du serveur.

Si il est présent, l'élément <baseDomain> DOIT restreindre le résultat de la recherche aux registraires capables d'enregistrer les sous domaines dans le domaine signifié par le contenu de cet élément.

L'élément <namePart> restreint la portée de l'interrogation avec ses éléments fils. L'élément <beginsWith> spécifie le commencement du nom du registraire. L'élément <endsWith> spécifie la fin du nom du registraire. L'élément <exactMatch> spécifie l'équivalent du nom du registraire.

Si l'élément <namePart> n'est pas présent, l'interrogation DOIT retourner tous les registraires applicables (c'est-à-dire, en considération de <baseDomain>).

Cette interrogation DOIT retourner un ensemble de résultats de zéro, un ou plusieurs éléments <registrationAuthority>. Voir au paragraphe 3.2.5.

3.1.2	Interrogation <findDomainsByContact>
<findDomainsByContact> trouve les domaines par des recherches sur des champs associés à un contact de domaine. Une recherche contrainte de <baseDomain> DOIT restreindre les résultats aux domaines en dessous du domaine spécifié par son contenu, si il est présent.

Les champs de recherche admissibles sont traités avec l'élément <contactHandle> ou un des éléments du "contactSearchGroup" (voir au paragraphe 3.1.7). L'élément <contactHandle> permet aux domaines d'être choisis sur la base du contact qui a la bride de contact spécifiée.

L'interrogation PEUT aussi être plus contrainte en utilisant l'élément <role> facultatif. Le contenu de cet élément signifie le rôle que le contact a avec le domaine.

Cette interrogation fournit aussi des éléments <language> facultatifs qui contiennent des étiquettes de langage. Les clients PEUVENT utiliser ces éléments pour indiquer le ou les langages naturels de l'élément affecté. Les serveurs PEUVENT utiliser cette information dans le traitement de l'interrogation, comme en construisant des sous programmes de normalisation pour rendre les recherches plus efficaces.

3.1.3	Interrogation <findDomainsByName>
L'interrogation <findDomainsByName> trouve les domaines par le nom d'un domaine tel que connu par le DNS. L'élément <namePart> restreint la portée de l'interrogation avec ses éléments fils. L'élément <beginsWith> spécifie le début du nom de domaine. L'élément <endsWith> spécifie la fin du nom de domaine.

3.1.4	Interrogation <findDomainsByIDN>
Cette interrogation diffère de l'interrogation <findDomainsByName> en permettant que la portée de l'interrogation prenne en considération les noms de domaines internationalisés. Cette interrogation va retourner l'union du domaine désiré et toute variante associée, différant donc d'un examen dans la classe d'entité "idn" (paragraphe 3.4) (qui retourne seulement le domaine ou pas de résultat).

L'élément <namePart> restreint la portée de l'interrogation avec ses éléments fils. Son fils, l'élément <exactMatch>, est conçu pour contenir les étiquettes IDN et non ACE, et DOIT donc correspondre seulement aux IDN équivalents, conformément à la notion d'équivalence définie dans la RFC 3490 [14].

Cette interrogation donne aussi des éléments <language> facultatifs contenant des étiquettes de langage. Les clients PEUVENT utiliser ces éléments pour donner une indication sur le ou les langages naturels de l'élément affecté. Les serveurs PEUVENT utiliser ces informations dans le traitement de l'interrogation, comme en construisant des sous programmes de normalisation pour rendre les recherches plus efficaces.

3.1.5	Interrogation <findContacts>
<findContacts> recherche des contacts en fonction de contraintes de recherche. Les champs de recherche admissibles sont traités par un des éléments dans le "contactSearchGroup" (voir au paragraphe 3.1.7).

Cette interrogation donne aussi des éléments <language> facultatifs contenant des étiquettes de langage. Les clients PEUVENT utiliser ces éléments pour indiquer le ou les langages naturels de l'élément affecté. Les serveurs PEUVENT utiliser ces informations en traitant l'interrogation, comme en construisant des sous programmes de normalisation pour rendre les recherches plus efficaces.

3.1.6	Interrogation <findDomainsByHost>
Cette interrogation fait une simple recherche pour les domaines hébergés par un serveur de noms. La recherche est contrainte en utilisant le nom d'hôte [12], une bride d'hôte, une adresse IPv4 ou IPv6 du serveur de noms.

3.1.7	Groupe de recherche de contact
Certaines des interrogations ci-dessus ont des contraintes d'interrogation similaires pour les recherches sur les contacts. Ce paragraphe décrit leurs paramètres communs.

<commonName> permet de contraindre l'interrogation sur la base du nom commun du contact. La contrainte peut contraindre l'interrogation soit par une correspondance exacte en utilisant l'élément <exactMatch>, soit par un sous ensemble du nom commun en utilisant les éléments <beginsWith> et <endsWith>.

<organization> permet de contraindre l'interrogation sur la base du nom d'organisation du contact. Il a la même sémantique que l'élément <commonName>.

<eMail> contraint l'interrogation sur la base de l'adresse de messagerie électronique du contact. Cela peut être fait par une adresse exacte de messagerie électronique en utilisant l'élément <exactMatch> ou par toute adresse de messagerie électronique dans un domaine en utilisant l'élément <inDomain>. L'élément <inDomain> DOIT contenir seulement un nom de domaine valide (c'est-à-dire, sans symbole "@") et la correspondance DEVRAIT avoir lieu seulement sur le domaine concerné (c'est-à-dire, pas de correspondance partielle par rapport aux sous chaînes ou aux domaines parents). Si le contenu de l'élément <inDomain> ou la partie domaine du contenu de l'élément <exactMatch> contient un nom avec des caractères non ASCII, ils DOIVENT être normalisés conformément aux processus de la RFC 3491 [15].

Les éléments <city>, <region>, et <postalCode> restreignent la portée de l'interrogation sur la base, respectivement, de la ville, région, ou code postal du contact. Chacun ne doit contenir qu'un élément <exactMatch> contenant la ville, région, ou code postal exact (c'est-à-dire, pas de recherche de sous chaîne).

3.2	Dérivées de résultat
3.2.1	Étiquettes de confidentialité
Plusieurs des résultats de ce type de registre ont des valeurs qui ne peuvent pas être données mais doivent être spécifiées comme présentes ou doivent être marquées d'un fanion afin que les clients ne les divulguent pas. Pour ce faire, certains des résultats utilisent les types d'éléments suivants :

o	"dateTimePrivacyType" – contient le type de données de schéma XML [3] "dateTime". Le contenu de cet élément DOIT être spécifié en utilisant l'indicateur "Z" pour le temps coordonné universel (UTC).

o	"stringPrivacyType" – contient le type de données de schéma XML [3] "string".

o	"normalizedStringPrivacyType" -- contient le type de données de schéma XML [3] "normalizedString".

o  "tokenPrivacyType" -- contient le type de données de schéma XML [3] "token".

o	"domainStatusType" – contient l'élément facultatif <appliedDate>, qui indique la date et l'heure à laquelle l'état a été appliqué, et l'élément facultatif <description> avec l'attribut obligé "language", qui indique une description de l'état. Cet élément a aussi l'attribut facultatif "scope", qui indique la portée ou l'origine de la valeur d'état.

o	"contactTypeType" – contient des éléments <description> fils facultatifs. Chaque élément fils <description> exige un attribut "language".

Comme spécifié, ces éléments peuvent avoir des valeurs nulles et donc peuvent être présents avec un contenu vide ou présents avec leur contenu spécifié. L'utilisation de ces éléments est aussi facultative.

Si ils sont présents sans contenu, chacun de ces types d'élément DOIT avoir un ou plusieurs des attributs booléens suivants  :
o	"private" – si il est vrai, cela spécifie que le contenu est absent parce qu'il ne peut jamais être publié.
o	"denied" – si il est vrai, cela spécifie que le contenu est absent parce que la politique ne lui permet pas d'être donné au niveau d'accès actuel.

Si ils sont présents avec un contenu, chacun de ces types d'élément PEUT avoir un ou plusieurs des attributs booléens suivants :
o	"doNotRedistribute" – si il est vrai, cela spécifie que le contenu n'est pas à redistribuer.
o	"specialAccess" – si il est vrai, cela spécifie que le contenu a été fourni à cause de droits d'accès spéciaux.

Ces attributs booléens DEVRAIENT être utilisés conformément au niveau d'accès accordé au receveur des données. Par exemple, marquer les données comme "private" ou "denied" est à attendre si l'utilisateur est anonyme ou a quelque autre faible niveau d'accès qui ne garantit pas de voir ces données particulières. De même, des données marquées avec "doNotRedistribute" ou "specialAccess" est attendu si l'utilisateur est authentifié et a un haut niveau d'accès.

3.2.2	Résultat <domain>
Exemple d'un résultat <domain> :

<domain
  authority="iana.org" registryType="dreg1"
  entityClass="domain-handle" entityName="example-com-1">
  <domainName>example.com</domainName>
  <domainHandle>tcs-com-1</domainHandle>
  <nameServer
    iris:referentType="host"
    authority="iana.org" registryType="dreg1"
    entityClass="host-handle" entityName="research7" />
  <nameServer
    iris:referentType="host"
    authority="iana.org" registryType="dreg1"
    entityClass="host-handle" entityName="nsol184" />
  <registry
    iris:referentType="registrationAuthority"
    authority="com"
    registryType="dreg1"
    entityClass="contact-handle"
    entityName="VGRS" />
  <registrar
    iris:referentType="registrationAuthority"
    authority="iana.org" registryType="dreg1"
    entityClass="contact-handle" entityName="dbarton" />

  <initialDelegationDateTime xsi:nil="true"/>
</domain>

Le résultat <domain> représente une instance d'une allocation de domaine. Les fils de l'élément <domain> sont comme suit  :
o	<domainName> -- nom complet du domaine comme il est dans le DNS. Le contenu de cet élément DOIT être un nom de domaine comme spécifié par la RFC 1035 [9].
o	<idn> -- nom du domaine en forme nameprep, si applicable. Voir la RFC 3491 [15].
o	<domainHandle> -- identifiant unique dans le registre alloué pour un domaine.
o	<nameServer> -- DOIT contenir une référence d'entité à un référent de type <host> (paragraphe 3.2.3).
o	<registant> -- contient une référence d'entité au registrant de ce domaine. Le référent DOIT être un résultat <contact> (paragraphe 3.2.4).
o	Contacts du domaine – les éléments suivants contiennent une référence d'entité avec une relation au domaine. Le référent de chacun DOIT être un <contact> (paragraphe 3.2.4).
*  <billingContacts>
*  <technicalContacts>
*  <administrativeContacts>
*  <legalContacts>
*  <zoneContacts>
*  <abuseContacts>
*  <securityContacts>
*  <otherContacts>
o	<status> -- ceci peut contenir au moins un des éléments suivants de type "domainStatusType" (voir au paragraphe  3.2.1) mais aucun de ces éléments ne peut apparaître plus d'une fois.
*  <reservedDelegation> -- inactif en permanence
*  <assignedAndActive> -- état normal
*  <assignedAndInactive> -- enregistrement alloué mais délégation inactive
*  <assignedAndOnHold> -- en conflit
*  <revoked> -- nettoyage de base de données en cours
*  <transferPending> -- changement d'autorité en cours
*  <registryLock> -- mis en garde par le registre
*  <registrarLock> -- mis en garde par le registraire
o	<domainVariant> -- contient une référence d'entité, dont le référent DOIT être un <domain> (paragraphe 3.2.2).
o	<registrationReference> -- contient une référence d'entité, dont le référent DOIT être un <domain> (paragraphe 3.2.2). Cet élément est destiné à pointer sur la référence d'enregistrement vers l'aval. Donc, si c'est un résultat renvoyé par un registre de domaine, il devrait pointer sur le domaine chez le registraire de domaine ou service enregistrant.
o	<registry> -- contient une référence d'entité qui spécifie l'opérateur de registre de domaine pour ce domaine, qui DOIT être une <registrationAuthority> (paragraphe 3.2.5). Cet élément a un attribut booléen "hosting" facultatif. Lorsque la valeur de cet attribut est positive, cela indique que le registre est responsable de la réponse d'autorité aux interrogations du DNS pour ce domaine.
o	<registrar> -- contient une référence d'entité qui spécifie l'opérateur registraire de domaine pour ce domaine, qui DOIT être une <registrationAuthority> (paragraphe 3.2.5). Cet élément a un attribut booléen "hosting" facultatif. Lorsque la valeur de cet attribut est positive, cela indique que le registraire est responsable de la réponse d'autorité aux interrogations du DNS pour ce domaine.
o	<initialDelegationDateTime> -- contient la date et l'heure de la délégation initiale de ce domaine.
o	<lastRenewalDateTime> -- contient la date et l'heure du dernier renouvellement de ce domaine.
o	<expirationDateTime> -- contient la date et l'heure de l'expiration de ce domaine.
o	<lastContactModificationDateTime> -- spécifie la date et l'heure de la dernière modification d'un contact pour le domaine.
o	<lastContactModificationBy> -- contient une référence d'entité. Le référent DOIT être un <contact> (paragraphe 3.2.4) responsable de la dernière modification d'un contact pour ce domaine.
o	<lastDelegationModificationDateTime> -- contient la date et l'heure de la dernière modification des serveurs de noms pour les délégations de ce domaine.
o	<lastDelegationModificationBy> -- contient une référence d'entité. Le référent DOIT être un résultat <contact> (paragraphe 3.2.4) et DOIT être responsable de la dernière modification d'un serveur de noms pour ce domaine.
o	<lastVerificationDateTime> -- contient la date et l'heure de la dernière vérification des données pour ce domaine par l'autorité d'enregistrement responsable.
o	<iris:seeAlso> -- contient une référence d'entité qui spécifie un référent indirectement associé à ce domaine.

3.2.3	Résultat <host> 
Exemple d'un résultat <host> :

<host  authority="iana.org" registryType="dreg1"
  entityClass="host-handle" entityName="nsol184" >
  <hostHandle>nsol184</hostHandle>
  <hostName>a.iana-servers.net</hostName>
  <ipV4Address>192.0.2.43</ipV4Address>
  <hostContact
    iris:referentType="contact"
    authority="iana.org" registryType="dreg1"
    entityClass="contact-handle" entityName="dbarton" />
</host>

L'élément <host> représente une instance d'enregistrement d'hôte. Les enfants de l'élément <host> sont les suivants :
o	<hostHandle> -- identifiant unique dans le registre pour l'hôte.
o	<hostName> -- nom de domaine pleinement qualifié de l'hôte. Le contenu de cet élément est un nom de domaine et DOIT se conformer à la RFC 1035 [9].
o	<ipV4Address> -- le contenu de cela DOIT être une adresse d'hôte IPv4 valide, comme spécifié par la RFC 791 [8].
o	<ipV6Address> -- le contenu de cela DOIT être une adresse d'hôte IPv6 valide, comme spécifié par la RFC 3513 [7].
o	<hostContact> -- contient une référence d'entité qui spécifie un contact associé à cet hôte. Le référent DOIT être un résultat <contact> (paragraphe 3.2.4).
o	<createdDateTime> -- contient la date et l'heure de création de cet hôte.
o	<lastModificationDateTime> -- contient la date et l'heure de la dernière modification de cet hôte.
o	<lastVerificationDateTime> -- contient la date et l'heure de la dernière vérification par l'autorité d'enregistrement appropriée que les données pour cet hôte sont correctes.
o	<iris:seeAlso> -- contient une référence d'entité qui spécifie un référent indirectement associé à cet hôte.

3.2.4	Résultat <contact>
Exemple d'un résultat <contact> :

<contact
  authority="iana.org" registryType="dreg1"
  entityClass="contact-handle" entityName="dbarton" >
  <contactHandle>dbarton</contactHandle>
  <commonName>IANA Manager</commonName>
  <organization>Internet Assigned Numbers Authority</organization>
  <eMail>res-dom@iana.org</eMail>
  <postalAddress>
    <address>4676 Admiralty Way, Suite 330</address>
    <city>Marina del Rey</city>
    <region>CA</region>
    <postalCode>92092</postalCode>
    <country>US</country>
  </postalAddress>
  <phone>+1.3108239358</phone>
</contact>

L'élément <contact> représente une instance d'enregistrement de contact. Les enfants de l'élément <contact> sont comme suit :
o	<contactHandle> -- identifiant unique alloué par le registre pour ce contact.
o	<commonName> -- nom du contact.
o	<language> -- spécification du code de langue à utiliser pour localiser les données dans ce résultat.
o	<type> -- contient un des éléments fils suivants : <person>, <organization>, <role>, ou <other>. Chacun de ces éléments est un "contactTypeType" comme défini au paragraphe 3.2.1.
o	<organization> -- contient le nom de l'organisation du contact.
o	<eMail> -- contient une adresse de messagerie électronique pour ce contact.
o	<IDNeMail> -- contient une adresse de messagerie électronique au sein d'un nom de domaine internationalisé [14].
o	<sip> -- contient un URI SIP pour ce contact.
o	<postalAddress> -- contient des enfants représentant une adresse postale. <postalAddress> a les enfants suivants :
*  <address> -- contient le numéro et la rue pour ce contact.
*  <city> -- contient la ville pour ce contact.
*  <region> -- contient le département ou région pour ce contact.
*  <postalCode> -- contient le code postal pour ce contact.
*  <country> -- contient le pays pour ce contact. Ce DEVRAIT être un code de pays de deux lettres conforme à la norme ISO 3166 [11].
o	<phone> -- contient un numéro de téléphone vocal pour ce contact. Si il commence par un caractère "+" (plus), il DOIT être un numéro défini par E.164 [13]. Le format de numéro défini dans E.164 [13] est RECOMMANDÉ.
o	<fax> -- contient un numéro de télécopie pour ce contact. Si il commence par un caractère '+' (plus), il DOIT être un numéro défini par E.164 [13]. Le format de numéro défini dans E.164 [13] est RECOMMANDÉ.
o	<createdDateTime> -- contient la date et l'heure de création de ce contact.
o	<lastModificationDateTime> -- contient la date et l'heure de la dernière modification de ce contact.
o	<lastVerificationDateTime> -- contient la date et l'heur de la dernière vérification que ce contact est correct par l'autorité d'enregistrement appropriée.
o	<translatedContacts> -- contient une référence d'entité qui spécifie que les  équivalents de ce contact ont été traduits dans d'autres langues. Le référent DOIT être le résultat <contact> (paragraphe 3.2.4).
o	<iris:seeAlso> -- contient une référence d'entité qui spécifie un référent indirectement associé à ce contact.

3.2.5	<registrationAuthority>
Exemple d'un résultat <registrationAuthority> :

<registrationAuthority
  authority="iana.org" registryType="dreg1"
  entityClass="registration-authority" entityName="iana" >
  <serviceInstance
    iris:referentType="iris:serviceIdentification"
    authority="iana.org" registryType="dreg1"
    entityClass="iris" entityName="id" />
  <organizationName>
    Internet Assigned Numbers Authority
  </organizationName>
  <registrar />
</registrationAuthority>

Le résultat <registrationAuthority> représente une entité capable d'enregistrer les domaines.

L'élément fils <serviceInstance> de <registrationAuthority> contient une référence d'entité pointant sur le "id" d'entité dans la classe d'entité "iris". Les zones d'autorité trouvées dans le référent DOIVENT être les domaines pour lesquels une certaine autorité d'enregistrement a le contrôle.

L'élément fils <organizationName> contient le nom de l'autorité d'enregistrement.

Les éléments fils du type d'autorité d'enregistrement <registry>, <registrar>, et <other> déterminent le rôle que joue cette autorité d'enregistrement dans le processus d'enregistrement de domaines. Cet élément est destiné à expliquer les divers rôles que peut avoir une autorité d'enregistrement dans les zones d'autorité pointées par l'élément <serviceInstance>. Un client PEUT comprendre les relations d'une autorité d'enregistrement par rapport à un domaine par le placement de la référence dans le domaine (par exemple, <registry> ou <registrar>).

Les éléments fils <domain> contiennent chacun un nom de domaine signifiant les domaines pour lesquels cette autorité d'enregistrement peut enregistrer des sous domaines.

3.3	Dérivées de code générique
3.3.1	<searchTooWide>
Les serveurs PEUVENT utiliser le code d'erreur <searchTooWide> lorsque une interrogation doit être écourtée pour donner un ensemble de résultats acceptable selon la politique de l'opérateur du serveur.

3.3.2	<languageNotSupported>
Les interrogations <findDomainsByRegistrant>, <findDomainsByIDNName>, et <findContacts> acceptent des étiquettes de langage facultatives qui permettent à un client de suggérer à un serveur les langages dans lesquels effectuer les interrogations. Si un client passe au serveur un langage que le serveur ne prend pas en charge, le serveur PEUT utiliser ce code d'erreur pour indiquer qu'un des langages n'est pas accepté.

Cet élément contient des éléments fils nommés <unsupportedLanguage>. Chacun de ces éléments fils spécifie un langage non accepté par le serveur. Lorsque un serveur retourne cette erreur, il DOIT donner les langages à partir de l'interrogation qui n'est pas acceptée.

3.4	Prise en charge de <iris:lookupEntity>
Les types suivants de classes d'entités sont reconnus par l'interrogation <lookupEntity> de IRIS pour ce registre :
o	host-name – nom de domaine pleinement qualifié d'un serveur de noms. Il donne un <host> (paragraphe 3.2.3) dans la réponse.
o	host-handle – identifiant unique pour le registre dans un serveur de noms. Il donne un <host> (paragraphe 3.2.3) dans la réponse.
o	domain-name – nom pleinement qualifié d'un domaine. C'est un nom de domaine comme spécifié par la RFC 1035 [9]. Il donne un <domain> (paragraphe 3.2.2) dans la réponse.
o	idn – nom pleinement qualifié d'un domaine en forme nameprep (voir la RFC 3491 [15]). Il donne un <domain> (paragraphe 3.2.2) dans la réponse.
o	domain-handle – identifiant unique pour le registre donné à un domaine. Il donne un <domain> (paragraphe 3.2.2) dans la réponse.
o	contact-handle -- identifiant unique pour le registre donné à un contact. Il donne un <contact> (paragraphe 3.2.4) dans la réponse.
o	ipv4-address -- adresse IPv4 d'un serveur de noms. Il donne un <host> (paragraphe 3.2.3) dans la réponse.
o	ipv6-address -- adresse IPv6 d'un serveur de noms. Il donne un <host> (paragraphe 3.2.3) dans la réponse.
o	registration-authority – nom d'une autorité d'enregistrement. Il donne une <registrationAuthority> (paragraphe 3.2.5) dans la réponse.

Tous les noms dans ces classes d'entité sont insensibles à la casse.

4.	Syntaxe formelle XML

Ce schéma de registre est spécifié en notation de schéma XML. La syntaxe formelle présentée ici est une représentation de schéma complète qui convient pour la validation automatique d'une instance XML lorsqu'elle est combinée avec la syntaxe formelle de schéma d'IRIS.

<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
  xmlns:dreg="urn:ietf:params:xml:ns:dreg1"
  xmlns:iris="urn:ietf:params:xml:ns:iris1"
  targetNamespace="urn:ietf:params:xml:ns:dreg1"
  elementFormDefault="qualified" >

  <import namespace="urn:ietf:params:xml:ns:iris1" />

  <annotation>
    <documentation>
      Domain schéma de registre
      derived from IRIS schema
    </documentation>
  </annotation>

Types d'interrogation

Trouver les registraires par noms

  <complexType
    name="findRegistrarsByNameType">
    <complexContent>
      <extension
        base="iris:queryType">
        <sequence>
          <element
            ref="dreg:baseDomain"
            minOccurs="0"
            maxOccurs="1" />
          <element
            name="namePart"
            type="dreg:exactOrPartialMatchParameter"
            minOccurs="0"
            maxOccurs="1" />
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element
    name="findRegistrarsByName"
    type="dreg:findRegistrarsByNameType"
    substitutionGroup="iris:query" />

Trouver les domaines par contact

  <complexType
    name="findDomainsByContactType">
    <complexContent>
      <extension
        base="iris:queryType">
        <sequence>
          <element
            ref="dreg:baseDomain"
            minOccurs="0"
            maxOccurs="1" />
          <choice>
            <group
              ref="dreg:contactSearchGroup" />
            <element
              name="contactHandle"
              type="dreg:exactMatchParameter" />
          </choice>
          <element
            name="role"
            minOccurs="0"
            maxOccurs="1" >
            <simpleType>
              <restriction
                base="string" >
                <enumeration
               value="registrant" />
                <enumeration
                  value="billingContact" />
                <enumeration
                  value="technicalContact" />
                <enumeration
                  value="administrativeContact" />
                <enumeration
                  value="legalContact" />
                <enumeration
                  value="zoneContact" />
                <enumeration
                  value="abuseContact" />
                <enumeration
                  value="securityContact" />
                <enumeration
                  value="otherContact" />
              </restriction>
            </simpleType>
          </element>
          <element
            name="language"
            type="language"
            minOccurs="0"
            maxOccurs="unbounded"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element
    name="findDomainsByContact"
    type="dreg:findDomainsByContactType"
    substitutionGroup="iris:query" />

Trouver les domaines par nom

  <complexType
    name="findDomainsByNameType">
    <complexContent>
      <extension
        base="iris:queryType">
        <sequence>
          <element
            name="namePart"
            type="dreg:partialMatchParameter" />
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element
    name="findDomainsByName"
    type="dreg:findDomainsByNameType"
    substitutionGroup="iris:query" />

Trouver les domaines par nom internationalisé

  <complexType
    name="findDomainsByIDNType">
    <complexContent>
      <extension
        base="iris:queryType">
        <sequence>
          <element
            name="namePart"
            type="dreg:exactMatchParameter" />
          <element
            name="language"
            type="language"
            minOccurs="0"
            maxOccurs="unbounded"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element
    name="findDomainsByIDN"
    type="dreg:findDomainsByIDNType"
    substitutionGroup="iris:query" />

Trouver les contacts

  <complexType
    name="findContactsType">
    <complexContent>
      <extension
        base="iris:queryType">
        <sequence>
          <group
            ref="dreg:contactSearchGroup" />
          <element
            name="language"
            type="language"
            minOccurs="0"
            maxOccurs="unbounded"/>
         </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element
    name="findContacts"
    type="dreg:findContactsType"
    substitutionGroup="iris:query" />

Trouver les domaines par hôte

  <complexType
    name="findDomainsByHostType">
    <complexContent>
      <extension
        base="iris:queryType">
        <sequence>
          <element
            ref="dreg:baseDomain"
            minOccurs="0"
            maxOccurs="1" />
          <choice>
            <element
              name="hostName"
              type="dreg:exactMatchParameter" />
            <element
              name="hostHandle"
              type="dreg:exactMatchParameter" />
            <element
              name="ipV4Address"
              type="dreg:exactMatchParameter" />
            <element
              name="ipV6Address"
              type="dreg:exactMatchParameter" />
          </choice>
        </sequence>
      </extension>
    </complexContent>
  </complexType>

  <element
    name="findDomainsByHost"
    type="dreg:findDomainsByHostType"
    substitutionGroup="iris:query" />

Groupe de recherche de contact

  <group
    name="contactSearchGroup">
    <choice>
      <element
        name="commonName"
        type="dreg:exactOrPartialMatchParameter" />
      <element
        name="organization"
        type="dreg:exactOrPartialMatchParameter" />
      <element
        name="eMail"
        type="dreg:domainResourceParameter" />
      <element
        name="city"
        type="dreg:exactMatchParameter" />
      <element
        name="region"
        type="dreg:exactMatchParameter" />
      <element
        name="postalCode"
        type="dreg:exactMatchParameter" />
    </choice>
  </group>

  <complexType
    name="exactOrPartialMatchParameter">
    <choice>
      <group
        ref="dreg:partialMatchGroup" />
      <group
        ref="dreg:exactMatchGroup" />
    </choice>
  </complexType>

  <complexType
    name="exactMatchParameter">
    <group
      ref="dreg:exactMatchGroup" />
  </complexType>

  <complexType
    name="partialMatchParameter">
    <sequence>
      <group
        ref="dreg:partialMatchGroup" />
    </sequence>
  </complexType>

  <complexType
    name="domainResourceParameter" >
    <choice>
      <group
        ref="dreg:exactMatchGroup" />
      <element
        name="inDomain"
        type="token" />
    </choice>
  </complexType>

  <element
    name="baseDomain"
    type="normalizedString" />

<group 
name="partialMatchGroup">
  <choice>
   <sequence>
    <element name="beginsWith" type="dreg:partialMatchComponentType"/>
    <element name="endsWith" type="dreg:partialMatchComponentType" minOccurs="0"/>
   </sequence>
   <element name="endsWith" type="dreg:partialMatchComponentType"/>
  </choice>
 </group>
 <simpleType name="partialMatchComponentType">
  <restriction base="token">
   <minLength value="1"/>
  </restriction>
 </simpleType>

  <group
    name="exactMatchGroup">
    <sequence>
      <element
        name="exactMatch"
        type="normalizedString" />
    </sequence>
  </group>

Types de résultat
Domaine

  <complexType
    name="domainType">
    <complexContent>
      <extension
        base="iris:resultType">
        <sequence>
          <element
            name="domainName"
            type="token" />
          <element
            name="idn"
            type="token"
            minOccurs="0"
            maxOccurs="1" />
          <element
            name="domainHandle"
            type="dreg:normalizedStringPrivacyType"
            nillable="true"
            minOccurs="0"
            maxOccurs="1" />
          <element
            name="nameServer"
            type="iris:entityType"
            minOccurs="0"
            maxOccurs="unbounded" />
          <element
            name="registrant"
            type="iris:entityType"
            minOccurs="0"
            maxOccurs="1" />
          <element
            name="billingContact"
            type="iris:entityType"
            minOccurs="0"
            maxOccurs="unbounded" />
          <element
            name="technicalContact"
            type="iris:entityType"
            minOccurs="0"
            maxOccurs="unbounded" />
          <element
            name="administrativeContact"
            type="iris:entityType"
            minOccurs="0"
            maxOccurs="unbounded" />
          <element
            name="legalContact"
            type="iris:entityType"
            minOccurs="0"
            maxOccurs="unbounded" />
          <element
            name="zoneContact"
            type="iris:entityType"
            minOccurs="0"
      maxOccurs="unbounded" />
    <element
      name="abuseContact"
      type="iris:entityType"
      minOccurs="0"
      maxOccurs="unbounded" />
    <element
      name="securityContact"
      type="iris:entityType"
      minOccurs="0"
      maxOccurs="unbounded" />
    <element
      name="otherContact"
      type="iris:entityType"
      minOccurs="0"
      maxOccurs="unbounded" />
    <element
      name="lastContactModificationDateTime"
      type="dreg:dateTimePrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="lastContactModificationBy"
      type="iris:entityType"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="status"
      minOccurs="0"
      maxOccurs="1">
      <complexType>
     <all>
       <element
      name="reservedDelegation"
      minOccurs="0"
      maxOccurs="1"
      type="dreg:domainStatusType" />
       <element
      name="assignedAndActive"
      minOccurs="0"
      maxOccurs="1"
      type="dreg:domainStatusType" />
       <element
      name="assignedAndInactive"
      minOccurs="0"
      maxOccurs="1"
      type="dreg:domainStatusType" />
       <element
      name="assignedAndOnHold"
      minOccurs="0"
      maxOccurs="1"
      type="dreg:domainStatusType" />
       <element
      name="revoked"
      minOccurs="0"
      maxOccurs="1"
      type="dreg:domainStatusType" />
       <element
      name="transferPending"
      minOccurs="0"
      maxOccurs="1"
      type="dreg:domainStatusType" />
       <element
      name="registryLock"
      minOccurs="0"
      maxOccurs="1"
      type="dreg:domainStatusType" />
       <element
      name="registrarLock"
      minOccurs="0"
      maxOccurs="1"
      type="dreg:domainStatusType" />
       <element
      name="other"
      minOccurs="0"
      maxOccurs="1"
      type="dreg:domainStatusType" />
     </all>
      </complexType>
    </element>
    <element
      name="domainVariant"
      type="iris:entityType"
      minOccurs="0"
      maxOccurs="unbounded" />
    <element
      name="registrationReference"
      type="iris:entityType"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="registry"
      minOccurs="0"
      maxOccurs="1">
      <complexType>
     <complexContent>
       <extension
      base="iris:entityType">
      <attribute
        name="hosting"
        type="boolean" />
       </extension>
     </complexContent>
      </complexType>
    </element>
    <element
      name="registrar"
      minOccurs="0"
      maxOccurs="1">
      <complexType>
     <complexContent>
       <extension
      base="iris:entityType">
      <attribute
        name="hosting"
        type="boolean" />
       </extension>
     </complexContent>
      </complexType>
    </element>
    <element
      name="initialDelegationDateTime"
      type="dreg:dateTimePrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="lastRenewalDateTime"
      type="dreg:dateTimePrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="expirationDateTime"
      type="dreg:dateTimePrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="lastDelegationModificationDateTime"
      type="dreg:dateTimePrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="lastDelegationModificationBy"
      type="iris:entityType"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="lastVerificationDateTime"
      type="dreg:dateTimePrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      ref="iris:seeAlso"
      minOccurs="0"
      maxOccurs="unbounded" />
     </sequence>
   </extension>
    </complexContent>
  </complexType>

  <element
    name="domain"
    type="dreg:domainType"
    substitutionGroup="iris:result" />

Hôte

  <complexType
    name="hostType">
    <complexContent>
   <extension
     base="iris:resultType">
     <sequence>
    <element
      name="hostHandle"
      type="dreg:normalizedStringPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="hostName"
      type="normalizedString" />
    <element
      name="ipV4Address"
      type="token"
      minOccurs="0"
      maxOccurs="unbounded" />
    <element
      name="ipV6Address"
      type="token"
      minOccurs="0"
      maxOccurs="unbounded" />
    <element
      name="hostContact"
      type="iris:entityType"
      minOccurs="0"
      maxOccurs="unbounded" />
    <element
      name="createdDateTime"
      type="dreg:dateTimePrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="lastModificationDateTime"
      type="dreg:dateTimePrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="lastVerificationDateTime"
      type="dreg:dateTimePrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      ref="iris:seeAlso"
      minOccurs="0"
      maxOccurs="unbounded" />
     </sequence>
   </extension>
    </complexContent>
  </complexType>

  <element
    name="host"
    type="dreg:hostType"
    substitutionGroup="iris:result" />

Contact

  <complexType
    name="contactType">
    <complexContent>
   <extension
     base="iris:resultType">
     <sequence>
    <element
      name="contactHandle"
      type="dreg:normalizedStringPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="commonName"
      type="dreg:normalizedStringPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1"/>
    <element
      name="language"
      type="language"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="type"
      minOccurs="0"
      maxOccurs="1">
      <complexType>
     <choice>
       <element
      name="person"
      type="dreg:contactTypeType" />
       <element
      name="organization"
      type="dreg:contactTypeType" />
       <element
      name="role"
      type="dreg:contactTypeType" />
       <element
      name="other"
      type="dreg:contactTypeType" />
     </choice>
      </complexType>
    </element>
    <element
      name="organization"
      type="dreg:normalizedStringPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="eMail"
      type="dreg:stringPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="unbounded" />
    <element
      name="IDNeMail"
      type="dreg:stringPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="unbounded" />
    <element
      name="sip"
      type="dreg:stringPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="unbounded" />
    <element
      name="postalAddress"
      minOccurs="0"
      maxOccurs="unbounded" >
      <complexType>
     <sequence>
       <element
      name="address"
      type="dreg:stringPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
       <element
      name="city"
      type="dreg:stringPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
       <element
      name="region"
      type="dreg:stringPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
       <element
      name="postalCode"
      type="dreg:normalizedStringPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
       <element      name="country"
      type="dreg:tokenPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
     </sequence>
      </complexType>
    </element>
    <element
      name="phone"
      type="dreg:normalizedStringPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="unbounded" />
    <element
      name="fax"
      type="dreg:normalizedStringPrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="unbounded" />
    <element
      name="createdDateTime"
      type="dreg:dateTimePrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="lastModificationDateTime"
      type="dreg:dateTimePrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="lastVerificationDateTime"
      type="dreg:dateTimePrivacyType"
      nillable="true"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="translatedContact"
      type="iris:entityType"
      minOccurs="0"
      maxOccurs="unbounded" />
    <element
      ref="iris:seeAlso"
      minOccurs="0"
      maxOccurs="unbounded" />
     </sequence>
   </extension>
    </complexContent>
  </complexType>

  <element
    name="contact"
    type="dreg:contactType"
    substitutionGroup="iris:result" />

Autorité d'enregistrement

  <complexType
    name="registrationAuthorityType">
    <complexContent>
   <extension
     base="iris:resultType">
     <sequence>
    <element
      name="serviceInstance"
      type="iris:entityType"
      minOccurs="0"
      maxOccurs="1" />
    <element
      name="organizationName"
      type="string"
      minOccurs="0"
      maxOccurs="1" />
    <choice
      minOccurs="0"
      maxOccurs="3">
      <element
     name="registry">
     <complexType/>
      </element>
      <element
     name="registrar">
     <complexType/>
      </element>
      <element
     name="other">
     <complexType/>
      </element>
    </choice>
    <element
      name="domain"
      type="token"
      minOccurs="0"
      maxOccurs="unbounded" />
     </sequence>
   </extension>
    </complexContent>
  </complexType>

  <element
    name="registrationAuthority"
    type="dreg:registrationAuthorityType"
    substitutionGroup="iris:result" />

Types d'étiquettes de confidentialité

  <attributeGroup
    name="privacyLabelAttributeGroup">
    <attribute
   name="private"
   type="boolean" />
    <attribute
   name="denied"
   type="boolean" />
    <attribute
   name="doNotRedistribute"
   type="boolean" />
    <attribute
   name="specialAccess"
   type="boolean" />
  </attributeGroup>

  <complexType
    name="dateTimePrivacyType">
    <simpleContent>
   <extension
     base="dateTime">
     <attributeGroup
    ref="dreg:privacyLabelAttributeGroup" />
   </extension>
    </simpleContent>
  </complexType>

  <complexType
    name="stringPrivacyType">
    <simpleContent>
   <extension
     base="string">
     <attributeGroup
    ref="dreg:privacyLabelAttributeGroup" />
   </extension>
    </simpleContent>
  </complexType>

  <complexType
    name="normalizedStringPrivacyType">
    <simpleContent>
   <extension
     base="normalizedString">
     <attributeGroup
    ref="dreg:privacyLabelAttributeGroup" />
   </extension>
    </simpleContent>
  </complexType>

  <complexType
    name="tokenPrivacyType">
    <simpleContent>
   <extension
     base="token">
     <attributeGroup
    ref="dreg:privacyLabelAttributeGroup" />
   </extension>
    </simpleContent>
  </complexType>

  <complexType
    name="domainStatusType">
    <sequence>
   <element
     name="appliedDate"
     type="dateTime"
     minOccurs="0"
     maxOccurs="1" />
   <element
     name="description"
     minOccurs="0"
     maxOccurs="unbounded">
     <complexType>
    <simpleContent>
      <extension
     base="string">
     <attribute
       name="language"
       type="language"
       use="required" />
      </extension>
    </simpleContent>
     </complexType>
   </element>
    </sequence>
    <attributeGroup
   ref="dreg:privacyLabelAttributeGroup" />
    <attribute
   name="scope"
   type="string" />

  </complexType>

  <complexType
    name="contactTypeType">
    <sequence>
   <element
     name="description"
     minOccurs="0"
     maxOccurs="unbounded">
     <complexType>
    <simpleContent>
      <extension
     base="string">
     <attribute
       name="language"
       type="language"
       use="required" />
      </extension>
    </simpleContent>
     </complexType>
   </element>
    </sequence>
    <attributeGroup
   ref="dreg:privacyLabelAttributeGroup" />
  </complexType>

Codes d'erreur

Recherche trop large

  <element
    name="searchTooWide"
    type="iris:codeType"
    substitutionGroup="iris:genericCode" />

Langage non prise en charge

  <complexType
    name="languageNotSupportedType">
    <complexContent>

   <extension
     base="iris:codeType">
     <sequence>
    <element
      name="unsupportedLanguage"
      type="language"
      minOccurs="1"
      maxOccurs="unbounded" />
     </sequence>
   </extension>
    </complexContent>
  </complexType>

  <element
    name="languageNotSupported"
    type="dreg:languageNotSupportedType"
    substitutionGroup="iris:genericCode" />

   </schema>

Figure 5 : dreg.xsd

5.	Conformité au transport BEEP

IRIS permet plusieurs extensions des capacités centrales. Cette section présente les extensions permises par IRIS-BEEP [6].

5.1	Schéma de message
Ce type de registre utilise le schéma de message par défaut décrit dans IRIS-BEEP [6].

5.2	Authentification du serveur
Ce type de registre utilise seulement la méthode de base d'authentification de serveur TLS, comme décrit dans IRIS-BEEP [6].

6.	Résolution d'URI
6.1	Étiquette de service d'application
L'étiquette de service d'application associée à ce type de registre DOIT être "DREG1". C'est la forme abrégée de l'URN pour ce type de registre : urn:ietf:params:xml:ns:dreg1.

6.2	Résolution de bas en haut
La méthode de résolution de remplacement de bas en haut DOIT être identifiée par "bottom" dans les URI IRIS.

Le processus pour cette méthode de résolution diffère de la méthode de résolution directe si l'autorité est seulement un nom de domaine (c'est-à-dire, sans le numéro d'accès). Le processus pour cette condition est le suivant :
1.	Le processus IRIS [5] de résolution directe est essayé sur le nom de domaine (par exemple, "example.com").
2.	Si le processus de résolution directe ne donne pas de serveur pour lequel une connexion puisse correspondre, alors l'étiquette la plus à gauche du nom de domaine est retirée, et la première étape est répétée (par exemple, "com").
3.	Si toutes les étiquettes du nom de domaine sont retirées et si aucune connexion de serveur n'a été faite, on interroge alors le DNS sur les enregistrements d'adresse correspondants au nom de domaine original, et l'accès utilisé est l'accès bien connu pour le protocole IRIS par défaut.

6.3.	Résolution de haut en bas
La méthode de résolution de remplacement de haut en bas DOIT être identifiée par "top" dans les URI IRIS.

Le processus pour cette méthode de résolution diffère de la méthode de résolution directe si l'autorité est seulement un nom de domaine (c'est-à-dire, sans le numéro d'accès). Le processus pour cette condition est le suivant :
1.	Le nom de domaine est réduit à son étiquette de droite. C'est toujours ".".
2.	Le processus IRIS [5] de résolution directe est essayé sur le nom de domaine.
3.	Si le processus de résolution directe ne donne pas de serveur pour lequel une connexion puisse être faîte, l'étiquette originale à gauche de l'étiquette de droite du nom de domaine est alors ajoutée devant, et la seconde étape est répétée (par exemple, si ".", alors "com" ; si "com", alors "example.com").
4.	Si toutes les étiquettes du domaine original sont présente et si aucune connexion de serveur n'a été faite, le DNS est alors interrogé sur les enregistrements d'adresse correspondants au nom de domaine original, et l'accès utilisé est l'accès bien connu pour le protocole IRIS par défaut.

7.	Considérations d'internationalisation

Les mises en œuvre devraient tenir compte des considérations d'internationalisation dans IRIS [5].

Le présent document spécifie l'examen des noms de domaines, les deux formes ASCII traditionnelle et la forme IDN. De plus, les données sociales associées aux contacts peuvent aussi être non ASCII et pourraient contenir virtuellement tout caractère Unicode. L'élément <language> est fourni dans les interrogations qui ont un potentiel de traversée de telles données. Les clients devraient utiliser cet élément pour indiquer les langages cibles désirés au serveur, et les serveurs devraient utiliser cet élément pour permettre une meilleure normalisation et processus de recherche (voir [18]).

Pour les clients qui ont besoin de localiser les étiquettes de données dans ce protocole, on notera que la localisation n'est nécessaire que sur les noms des éléments et attributs XML à l'exception des éléments qui contiennent des informations de date et heure. Le schéma pour ce registre a été conçu de telle sorte que les clients n'aient pas besoin d'interpréter le contenu des éléments ou attributs pour la localisation, autre que celui des éléments contenant les informations de date et heure.

Les clients devraient aussi utiliser les éléments <language> fournis dans beaucoup des résultats. Les résultats contenant des données qui peuvent être en Unicode sont accompagnés par ces éléments afin d'aider à mieux présenter les données à l'utilisateur.

Le type d'élément "dateTimePrivacyType" contient le type de données de schéma XML [3] "dateTime". Le contenu de cet élément DOIT être spécifié en utilisant l'indicateur "Z" pour le temps coordonné universel (UTC).

8.	Considérations relatives à l'IANA
8.1	Enregistrement d'URN d'espace de noms XML
Le présent document utilise une proposition d'espace de noms XML et un registre de schéma spécifié dans XML_URN [16]. En conséquence, les informations d'enregistrement suivantes sont fournies à l'IANA :
o	URN/URI :  urn:ietf:params:xml:ns:dreg1
o	Contact : 	Andrew Newton <andy@hxr.us>
	Marcos Sanz <sanz@denic.de>
o	XML :  le schéma XML spécifié à la Section 4.

8.2	Enregistrement S-NAPTR
L'étiquette de service d'application S-NAPTR suivante a été enregistrée auprès de l'IANA conformément aux considérations relatives à l'IANA définies dans IRIS [5] : DREG1

8.3	Enregistrement BEEP
L'URI de profil BEEP suivant a été enregistré auprès de l'IANA, en plus de l'enregistrement fourni dans IRIS-BEEP [6].

http://iana.org/beep/iris1/dreg1

9.	Considérations sur la sécurité

Le présent document n'introduit aucune nouvelle considérations de précautions de sécurité au delà de celles spécifiées dans IRIS [5].

10.	Références
10.1	Références normatives

[1]	World Wide Web Consortium, "Extensible Markup Language (XML) 1.0", W3C XML, février 1998, <http://www.w3.org/TR/1998/REC-xml-19980210 >.

[2]	World Wide Web Consortium, "Namespaces in XML", W3C XML Namespaces, janvier 1999, <http://www.w3.org/TR/1999/REC-xml-names-19990114 >.

[3]	World Wide Web Consortium, "XML Schema Part 2: Datatypes", W3C XML Schema, octobre 2000, <http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/ >.

[4]	World Wide Web Consortium, "XML Schema Part 1: Structures", W3C XML Schema, octobre 2000, <http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/ >.

[5]	[RFC3981] A. Newton, M. Sanz, "IRIS : Protocole central du service d'information des registres Internet (IRIS)", janvier 2005. (MàJ par RFC4992) (P.S.)

[6]	[RFC3983] A. Newton, M. Sanz, "Utilisation du service d'information des registres Internet (IRIS) sur le protocole extensible d'échange de blocs (BEEP)", janvier 2005. (P.S.)

[7]	[RFC3513] R. Hinden et S. Deering, "Architecture d'adressage du protocole Internet version 6 (IPv6)", avril 2003. (Obsolète, voir RFC4291)

[8]	[RFC0791] J. Postel, éd., "Protocole Internet - Spécification du protocole du programme Internet", STD 5, septembre 1981.

[9]	[RFC1035] P. Mockapetris, "Noms de domaines – Mise en œuvre et spécification", STD 13, novembre 1987. (MàJ par la RFC6604)

[10]	[RFC2119] S. Bradner, "Mots clés à utiliser dans les RFC pour indiquer les niveaux d'exigence", BCP 14, mars  1997.

[11]	International Organization for Standardization, "Codes for the representation of names of countries, 3rd edition", ISO Standard 3166, août 1988.

[12]	[RFC1123] R. Braden, éditeur, "Exigences pour les hôtes Internet – Application et prise en charge", STD 3, octobre  1989.

[13]	Union Internationale des Télécommunications, "Plan de numérotage des télécommunications publiques internationales", Recommandation UIT-T E.164, 1991.

[14]	[RFC3490] P. Faltstrom et autres, "Internationalisation des noms de domaine dans les applications (IDNA)", mars  2003. (Remplacée par les RFC5890 et 5891, P.S.)

[15]	[RFC3491] P. Hoffman et M. Blanchet, "Nameprep : Profil Stringprep pour les noms de domaine internationalisés (IDN)", mars 2003. (Remplacée par la RFC5891, P.S.)

[16]	[RFC3688] M. Mealling, "Registre XML de l'IETF", BCP 81, janvier 2004.

10.2	Références pour information

[17]	[RFC3707] A. Newton, "Exigences pour le protocole d'enregistrement croisé de service Internet (CRISP)", février  2004. (Info.)

[18] < http://www.unicode.org/reports/tr15/ >

Appendice A.	Exemples de demandes et réponses

Les exemples de cette section utilisent la chaîne "C:" pour noter les données envoyées par un client à un serveur et la chaîne "S:" pour noter les données envoyées par un serveur à un client.

A.1	Exemple 1
Voici un exemple d'un examen d'entité dans un registre dreg1 pour le nom de domaine de "example.com". La réponse montre la capacité de spécifier des données comme étant retirées parce qu'elles sont confidentielles;

C: <?xml version="1.0"?>
C: <request xmlns="urn:ietf:params:xml:ns:iris1"
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
C:
C:   <searchSet>
C:
C:  <lookupEntity
C:    registryType="urn:ietf:params:xml:ns:dreg1"
C:    entityClass="domain-name"
C:    entityName="example.com" />
C:
C:   </searchSet>
C:
C: </request>

S: <?xml version="1.0"?>
S: <iris:response xmlns:iris="urn:ietf:params:xml:ns:iris1"
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:
S:   <iris:resultSet>
S:  <iris:answer>
S:
S:    <domain xmlns="urn:ietf:params:xml:ns:dreg1"
S:   authority="iana.org" registryType="dreg1"
S:   entityClass="domain-handle" entityName="example-com-1">
S:
S:   <domainName>example.com</domainName>
S:   <domainHandle>tcs-com-1</domainHandle>
S:
S:   <nameServer iris:referentType="host" authority="iana.org"
S:     registryType="dreg1" entityClass="host-handle"
S:     entityName="research7" />
S:
S:   <nameServer iris:referentType="host" authority="iana.org"
S:     registryType="dreg1" entityClass="host-handle"
S:     entityName="nsol184" />
S:
S:   <technicalContact iris:referentType="contact"
S:     authority="iana.org" registryType="dreg1"
S:     entityClass="contact-handle" entityName="dbarton" />
S:
S:   <status>
S:     <assignedAndActive denied="true" />
S:   </status>
S:
S:   <registry iris:referentType="registrationAuthority"
S:     authority="com" registryType="dreg1"
S:     entityClass="contact-handle" entityName="VGRS" />
S:
S:   <initialDelegationDateTime xsi:nil="true"/>
S:
S:   <iris:seeAlso iris:referentType="ANY" authority="iana.org"
S:     registryType="dreg1" entityClass="local"
S:     entityName="notice"  />
S:
S:    </domain>
S:
S:  </iris:answer>
S:   </iris:resultSet>
S: </iris:response>

Figure 6 : Exemple 1

A.2	Exemple 2
Voici un exemple d'un examen d'entité dans un registre dreg1 pour la bride de contact de "mak21". La réponse montre la capacité de spécifier des données comme étant retirées parce qu'elles sont confidentielles;

C: <?xml version="1.0"?>
C: <request xmlns="urn:ietf:params:xml:ns:iris1"
C:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
C:
C:   <searchSet>
C:
C:  <lookupEntity
C:    registryType="urn:ietf:params:xml:ns:dreg1"
C:    entityClass="contact-handle"
C:    entityName="mak21" />
C:
C:   </searchSet>
C:
C: </request>
S: <?xml version="1.0"?>
S: <response xmlns="urn:ietf:params:xml:ns:iris1"
S:   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:
S:   <resultSet>
S:  <answer>
S:
S:    <contact xmlns="urn:ietf:params:xml:ns:dreg1"
S:   authority="com" registryType="dreg1"
S:   entityClass="contact-handle" entityName="mak21" >
S:
S:   <contactHandle>mak21</contactHandle>
S:
S:   <commonName>
S:     Mark Kosters
S:   </commonName>
S:
S:   <organization>
S:     VeriSign, Inc.
S:   </organization>
S:
S:   <eMail>markk@verisignlabs.com</eMail>
S:   <phone private="true" xsi:nil="true" />
S:
S:    </contact>
S:
S:  </answer>
S:   </resultSet>
S:
S: </response>

Figure 7 : Exemple 2

A.3	Exemple 3
Voici un exemple de recherche d'un domaine sur la base du nom d'un registrant commençant par la chaîne 'The Cobbler Shoppe'. Cet exemple montre aussi l'utilisation de sacs (bags).

C: <?xml version="1.0"?>
C: <request xmlns="urn:ietf:params:xml:ns:iris1"
C:    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
C:
C:   <searchSet>
C:
C:  <findDomainsByContact
C:    xmlns="urn:ietf:params:xml:ns:dreg1" >
C:    <baseDomain>com</baseDomain>
C:    <commonName>
C:   <beginsWith>
C:     The Cobbler Shoppe
C:   </beginsWith>
C:    </commonName>
C:    <role>registrant</role>
C:  </findDomainsByContact>
C:
C:   </searchSet>
C:
C: </request>
S: <?xml version="1.0"?>
S: <response xmlns="urn:ietf:params:xml:ns:iris1"
S:     xmlns:iris="urn:ietf:params:xml:ns:iris1"
S:     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S:
S:   <resultSet>
S:  <answer>
S:    <dreg:domain
S:   xmlns="urn:ietf:params:xml:ns:dreg1"
S:   xmlns:dreg="urn:ietf:params:xml:ns:dreg1"
S:   authority="com" registryType="dreg1"
S:   entityClass="domain-handle" entityName="tcs-com-1" >
S:   <domainName>example.com</domainName>
S:   <nameServer
S:     iris:referentType="dreg:host"
S:     authority="com" registryType="dreg1"
S:     entityClass="host-handle" entityName="research7" />
S:   <nameServer
S:     iris:referentType="dreg:host"
S:     authority="com" registryType="dreg1"
S:     entityClass="host-handle" entityName="nsol184" />
S:   <registrant
S:     iris:referentType="dreg:contact"
S:     authority="com" registryType="dreg1"
S:     entityClass="contact-handle" entityName="beb140">
S:     <iris:displayName language="en">
S:    Bill Eckels
S:     </iris:displayName>
S:   </registrant>
S:   <technicalContact
S:     bagRef="x1"
S:     iris:referentType="dreg:contact"
S:     authority="com" registryType="dreg1"
S:     entityClass="contact-handle" entityName="mak21">
S:     <iris:displayName language="en">
S:    Mark Kosters
S:     </iris:displayName>
S:   </technicalContact>
S:   <status>
S:     <transferPending denied="true" />
S:     <assignedAndActive denied="true" />
S:   </status>
S:   <registry
S:     iris:referentType="dreg:registrationAuthority"
S:     authority="com" registryType="dreg1"
S:     entityClass="local" entityName="VRSN"
S:     hosting="false" />
S:   <iris:seeAlso
S:     iris:referentType="ANY"
S:     authority="com" registryType="dreg1"
S:     entityClass="local" entityName="notice" />
S:    </dreg:domain>
S:  </answer>
S:  <additional>
S:    <dreg:contact
S:   xmlns="urn:ietf:params:xml:ns:dreg1"
S:   xmlns:dreg="urn:ietf:params:xml:ns:dreg1"
S:   authority="com" registryType="dreg1"
S:   entityClass="contact-handle" entityName="beb140" >
S:   <contactHandle>beb140</contactHandle>
S:   <commonName>
S:     Bill Eckels
S:   </commonName>
S:   <language>en</language>
S:   <type>
S:     <person>
S:     <description language="en">
S:    Bill sells shoes down by the sea shore.
S:     </description>
S:     <description language="de">
S:   Rechnung verkauft Schuhe unten durch das Seeufer.
S:     </description>
S:     </person>
S:   </type>
S:   <organization>
S:     The Cobbler Shoppe
S:   </organization>
S:   <eMail private="true" xsi:nil="true" />
S:   <postalAddress>
S:     <address>
S:    21 North Main Street
S:     </address>
S:     <city>
S:    Britt
S:     </city>
S:     <region>
S:    IA
S:     </region>
S:     <postalCode>
S:    50423
S:     </postalCode>
S:     <country>
S:    US
S:     </country>
S:   </postalAddress>
S:   <phone>
S:     +1.5158433521
S:   </phone>
S:    </dreg:contact>
S:    <simpleEntity
S:   authority="com" registryType="dreg1"
S:   entityClass="local" entityName="notice" >
S:   <property name="legal" language="en">
S:     It is illegal to use information from this service  for the purposes of sending unsolicited bulk email.
S:   </property>
S:    </simpleEntity>
S:  </additional>
S:   </resultSet>
S:   <bags>
S:  <bag id="x1">
S:    <simpleBag xmlns="http://example.com/">
S:   AAAAB3NzaC1yc2EAAAABIwAAAIEA0ddD+W3Agl0Lel98G1r77fZ
S:   c3nBl8CHdkmKuVGUy/ijmvdO5QxuSlU0R4BoCLZk/Sob22RApTn
S:   T+ROMbXFQBrxGH08daAOy98WqpfAutWJri61JLpubIbaqhGyB48
S:   Qt69V6OhYfFsJjvoNEOh1k2dgzXhSlzP3OMVSKRlBzGcO8=
S:    </simpleBag>
S:  </bag>
S:   </bags>
S:
S: </response>

Figure 8 : Exemple 3

Appendice B.	Exemple de mise en série de base de données

Voici un exemple de données de domaine mises en série. Cet exemple montre la mise en série d'un domaine, d'un hôte, et d'un référant.

<iris:serialization
  xmlns:iris="urn:ietf:params:xml:ns:iris1"
  xmlns:dreg="urn:ietf:params:xml:ns:dreg1"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<dreg:domain
    xmlns="urn:ietf:params:xml:ns:dreg1"
    authority="com" registryType="dreg1"
    entityClass="domain-handle" entityName="tcs-com-1" >
    <domainName>example.com</domainName>
    <nameServer
   iris:referentType="dreg:host"
   authority="" registryType="dreg1"
   entityClass="host-handle" entityName="research7" />
    <nameServer
   iris:referentType="dreg:host"
   authority="" registryType="dreg1"
   entityClass="host-handle" entityName="nsol184" />
    <registrant
   iris:referentType="dreg:contact"
   authority="iana.org" registryType="dreg1"
   entityClass="contact-handle" entityName="beb140" />
    <technicalContact
   iris:referentType="dreg:contact"
   authority="net" registryType="dreg1"
   entityClass="contact-handle"
   entityName="mak21" >
   <iris:displayName language="en">
     IANA Administrator
   </iris:displayName>
    </technicalContact>
  </dreg:domain>

  <dreg:host
    xmlns="urn:ietf:params:xml:ns:dreg1"
    authority="com" registryType="dreg1"
    entityClass="host-handle" entityName="nsol184" >
    <hostHandle>nsol184</hostHandle>
    <hostName>ns1.iana.org</hostName>
    <ipV4Address>192.0.2.1</ipV4Address>
    <hostContact
   iris:referentType="dreg:contact"
   authority="com" registryType="dreg1"
   entityClass="contact-handle"
   entityName="dbarton" >
   <iris:displayName language="en">
     IANA Techie
   </iris:displayName>
    </hostContact>
  </dreg:host>

  <iris:serializedReferral>
    <iris:source
   authority="com" registryType="dreg1"
   entityClass="contact-handle"
   entityName="dbarton" />
    <iris:searchContinuation
   authority="net">

   <dreg:findRegistrarsByName>
     <dreg:baseDomain>com</dreg:baseDomain>
   </dreg:findRegistrarsByName>

    </iris:searchContinuation>
  </iris:serializedReferral>

   </iris:serialization>

Figure 9 : dreg-serialization.xml

Appendice C.	Remerciements

Beaucoup des concepts concernant l'utilisation des enregistrements SRV pour préciser étape par étape comment trouver les serveurs d'autorité et beaucoup des détails des objets de résultat dans ce document ont été à l'origine créés par Eric A. Hall dans son mémoire concernant l'utilisation de LDAP pour satisfaire aux exigences de CRISP. Ces concepts ont contribué significativement au développement du présent protocole.

David Blacka a fait de nombreuses contributions techniques sur la base de son travail sur la mise en œuvre de IRIS et de son jugement expérimenté. Il a aussi contribué à de nombreuses clarifications rédactionnelles.

Adresse des auteurs

Andrew L. Newton	Marcos Sanz	
VeriSign, Inc.	DENIC eG	
21345 Ridgetop Circle	Wiesenhuettenplatz 26	
Sterling, VA  20166	D-60329 Frankfurt	
USA	Germany	
téléphone : +1 703 948 3382	mél : sanz@denic.de 	
mél : anewton@verisignlabs.com ; andy@hxr.us  	URI :   http://www.denic.de/ 	
URI :   http://www.verisignlabs.com/ 		

Déclaration complète de droits de reproduction

Copyright (C) The Internet Society (2005).

Le présent document est soumis aux droits, licences et restrictions contenus dans le BCP 78, et à www.rfc-editor.org, et sauf pour ce qui est mentionné ci-après, les auteurs conservent tous leurs droits.

Le présent document et les informations contenues sont fournis sur une base "EN L’ÉTAT" et le contributeur, l’organisation qu’il ou elle représente ou qui le/la finance (s’il en est), la INTERNET SOCIETY et la INTERNET ENGINEERING TASK FORCE déclinent toutes garanties, exprimées ou implicites, y compris mais non limitées à toute garantie que l’utilisation des informations ci-encloses ne violent aucun droit ou aucune garantie implicite de commercialisation ou d’aptitude à un objet particulier.

Propriété intellectuelle
L’IETF ne prend pas position sur la validité et la portée de tout droit de propriété intellectuelle ou autres droits qui pourraient être revendiqués au titre de la mise en œuvre ou l’utilisation de la technologie décrite dans le présent document ou sur la mesure dans laquelle toute licence sur de tels droits pourrait être ou n’être pas disponible ; pas plus qu’elle ne prétend avoir accompli aucun effort pour identifier de tels droits. Les informations sur les procédures de l’ISOC au sujet des droits dans les documents de l’ISOC figurent dans les BCP  78 et BCP 79.

Des copies des dépôts d’IPR faites au secrétariat de l’IETF et toutes assurances de disponibilité de licences, ou le résultat de tentatives faites pour obtenir une licence ou permission générale d’utilisation de tels droits de propriété par ceux qui mettent en œuvre ou utilisent la présente spécification peuvent être obtenues sur le répertoire en ligne des IPR de l’IETF à http://www.ietf.org/ipr .

L’IETF invite toute partie intéressée à porter son attention sur tous copyrights, licences ou applications de licence, ou autres droits de propriété qui pourraient couvrir les technologies qui peuvent être nécessaires pour mettre en œuvre la présente norme. Prière d’adresser les informations à l’IETF à ietf- ipr@ietf.org .

Le financement de la fonction d’édition des RFC est actuellement fourni par l’Internet Society