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é.
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)