Date de publication du RFC : Mars 2015
Auteur(s) du RFC : A. Newton (ARIN), B. Ellacott (APNIC), N. Kong (CNNIC)
Chemin des normes
Réalisé dans le cadre du groupe de travail IETF weirds
Première rédaction de cet article le 26 mars 2015
Le protocole d'accès aux informations des registres RDAP (Registration Data Access Protocol), qui se veut successeur de whois, peut utiliser plusieurs protocoles de transport différents. Pour l'instant, le seul normalisé est HTTP, dans ce RFC.
HTTP est normalisé dans le RFC 7230. Mais, à part cela, il n'y a évidemment pas besoin de le présenter. Son choix comme protocole de transport va de soi dans l'Internet aujourd'hui, et permet de doter RDAP d'une jolie sémantique REST. Toute la complexité est dans le serveur, un des objectifs de ce RFC est que « on puisse utiliser comme client RDAP des outils généralistes comme bash ou wget ». Le mode d'emploi est à peu près :
GET
(RFC 7231), en suivant
le RFC 7482, par
exemple, pour trouver de l'information sur le réseau
192.0.2.0
, ce sera
http://example.net/rdap/ip/192.0.2.0
,D'autres réponses étaient possibles, comme le fameux 404 si on demande des informations sur un objet qui n'existe pas. RDAP utilise HTTP et on a donc toutes les subtilités de HTTP à sa disposition.
La section 3 de notre RFC résume les principes de RDAP-sur-HTTP :
La section 4 détaille la formation des requêtes RDAP sur HTTP. Ce
sont des requêtes GET
ou
HEAD
(puisqu'elles ne modifient
pas les données, RDAP étant un protocole en lecture seule), qui
fonctionnent sur HTTP ou HTTPS (qui est
obligatoire pour les logiciels RDAP). Le client doit penser à mettre
un en-tête Accept:
qui indique un type de données
qui existe pour RDAP, comme le
application/rdap+json
du RFC 7483 (notez la syntaxe avec un +, issue du RFC 6839). S'il l'oublie, le serveur est libre de faire ce qu'il
veut, le RFC suggérant d'envoyer une réponse acceptable par un
navigateur Web ordinaire (comme text/html
), car c'est sans doute
cela qui provoquera le moins de surprise (les serveurs RDAP existants
- voir par exemple http://rdg.afilias.info/rdap/domain/reflets.info
- ne suivent pas
cette recommandation).
La requête peut contenir des paramètres (après le ? dans l'URL).
La section 5 de notre RFC détaille les réponses possibles. Comme on utilise HTTP comme transport, tous les codes de réponse HTTP (RFC 7231, section 6) sont admissibles. Néanmoins, certains seront sans doute plus courants :
Location:
de la réponse (par exemple, en
théorie, l'IANA pourrait avoir un serveur RDAP
qui redirige vers les serveurs RDAP des TLD),Voici quelques exemples réels avec le serveur RDAP expérimental d'APNIC et le client HTTP curl. D'abord, un cas où tout se passe bien :
% curl -v http://rdap.apnic.net/ip/2001:dc0:2001:11::194 > GET /ip/2001:dc0:2001:11::194 HTTP/1.1 > User-Agent: curl/7.26.0 > Host: rdap.apnic.net > Accept: */* > < HTTP/1.1 200 OK < Date: Thu, 05 Mar 2015 16:08:37 GMT < Content-Type: application/rdap+json < Access-Control-Allow-Origin: * < Transfer-Encoding: chunked < Server: Jetty(9.2.z-SNAPSHOT)
Un cas où l'objet demandé n'existe pas et où le serveur renvoie le fameux code HTTP 404 :
% curl -v http://rdap.apnic.net/ip/4001:dc0:2001:11::194 > GET /ip/4001:dc0:2001:11::194 HTTP/1.1 > User-Agent: curl/7.26.0 > Host: rdap.apnic.net > Accept: */* > < HTTP/1.1 404 Not Found
Et enfin un cas où l'objet existe chez un autre RIR et on est donc renvoyé au RIPE-NCC, avec le code normal de redirection HTTP :
% curl -v http://rdap.apnic.net/ip/2001:4b98:dc0:41:: > GET /ip/2001:4b98:dc0:41:: HTTP/1.1 > User-Agent: curl/7.26.0 > Host: rdap.apnic.net > Accept: */* > < HTTP/1.1 301 Moved Permanently < Date: Thu, 05 Mar 2015 16:11:16 GMT < Location: http://rdap.db.ripe.net/ip/2001:4b98:dc0:41::
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)