Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Mon livre « Cyberstructure »

Ève

RFC 5144: A Domain Availability Check (DCHK) Registry Type for the Internet Registry Information Service (IRIS)

Date de publication du RFC : Février 2008
Auteur(s) du RFC : A. Newton (Verisign), M. Sanz (DENIC)
Chemin des normes
Réalisé dans le cadre du groupe de travail IETF crisp
Première rédaction de cet article le 29 février 2008


Notre RFC propose un profil d'IRIS pour répondre à une question simple : ce domaine est-il libre ou pas ?

Aujourd'hui, l'enregistrement d'un nom de domaine commence souvent par une recherche de sa disponibilité. L'utilisateur final va sur le site Web du registrar de son choix, tape le nom convoité, le registrar interroge le registre et renvoie la réponse à l'utilisateur. Mais comment le registrar contacte t-il le registre ? Il existe une solution à moitié standard, le protocole whois (RFC 3912). En analysant le résultat de la requête, on peut trouver si le domaine est libre (ici, avec .fr) :

% whois vraimentnimportequoi.fr 
...
domain:      vraimentnimportequoi.fr
status:      AVAILABLE

whois a quelques défauts. Le format de sortie n'est pas normalisé, donc il faut trouver une expression indiquant la disponibilité, et la trouver pour chaque registre. Ce manque de normalisation est encore plus gênant si le domaine n'est pas libre et qu'on veut trouver pourquoi. Est-il déjà réservé ? Est-ce un terme interdit ? Ensuite, whois nécessite un traitement assez importante du côté du serveur, puisqu'il doit extraire de la base de données du registre beaucoup d'informations, beaucoup plus que ce qu'on désirerait pour simplement connaitre la disponibilité d'un domaine.

Cette lourdeur des traitements d'un serveur whois fait que les registres mettent en général en place des limitations strictes à son usage, par exemple en limitant le rythme d'accès.

Quelles sont les solutions propres, donc ? Pour le cas des registrars, les registres proposent en général des outils spécifiques comme un service EPP, dont la commande <epp:check> permet de récupérer des informations utiles (section 2.9.2.1 du RFC 4930). Souvent, ces outils utilisent un protocole privé, par exemple, pour .fr, ce programme Python utilisant SOAP trouve la disponibilité d'un domaine :

import SOAPpy # In some versions, a bug prevents authentication, you have to
# add "import base64" yourself
import sys, os, string

SOAPpy.Config.debug = False
hostname = "XXXXXX.nic.fr"
path = ""
user = "REGISTRAR-NAME"
password = "REGISTRAR-PASSWORD"
namespace = 'http://soap.nic.fr/Domain'
action = 'check_domain'

if len(sys.argv) > 1:
    domain = string.lower(sys.argv[1])
else:
    print "Usage: %s domain-name" % sys.argv[0]
    sys.exit(1)

server = SOAPpy.SOAPProxy("https://%s:%s@%s/%s" %
                          (user, password, hostname, path),
                          namespace=namespace,
                          soapaction = namespace + '#' + action)

domain_reply = server.check_domain (domain);
if domain_reply["free"]:
    print "%s is available" % domain
else:
    print "%s is NOT available because \"%s\" (%s)" % (domain,
                                                       domain_reply["message"],
                                                       domain_reply["reason"])

Mais, si on n'est pas registrar ? Quelles sont les solutions pour le public, surtout s'il veut pouvoir effectuer un grand nombre de requêtes, à des fins plus ou moins légitimes ?

Une première solution est de proposer une version réduite de whois. C'est ce que fait .nl, avec l'option is :

% whois "is amsterdam.nl"     
amsterdam.nl is active
% whois "is certainlynonexistent.nl"
certainlynonexistent.nl is free

Ne fournissant qu'une information limitée, ce service charge moins le serveur et est donc disponible avec des limites plus larges.

Et enfin, une autre solution fait l'objet de ce RFC 5144 : utiliser le protocole IRIS (RFC 3981) et un sous-ensemble de son schéma de données pour les domaines, DREG, au dessus d'un transport le plus léger possible. DCHK est donc un sous-ensemble de DREG (RFC 3982), limité à quelques informations, la disponibilité, bien sûr, mais aussi la date d'enregistrement, le statut, etc. Voici un exemple de réponse à une requête DHCK (ici, le domaine n'est pas libre) :


 <domain>
     <domainName>example.org</domainName>
     <status><active/></status>
 </domain> 

Le registre qui déploie DCHK le rendra typiquement plus accessible (limites moins strictes) que son service IRIS/DREG complet ou bien que son service whois.

Le protocole de transport recommandé, section 3.3, pour sa légèreté, est LWZ (RFC 4993), basé sur UDP.

Denic avait annoncé la disponibilité de ce service et la distribution du code source du client. Mais, finalement, DENIC a renoncé marquant la fin d'IRIS, qui n'a jamais été sérieusement déployé.


Téléchargez le RFC 5144

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)