Auteurs : M.Mealling
Traduction : Y.Bouhali - ybouhali2002@yahoo.fr
RFC : 3368 spécification du CNRP URI
version fr et us : Aout 2002 .
L'Arrangement(scheme)
URI 'go:' pour le Protocole de Résolution de Nom Commun .
Notes du traducteur :
L'URI désigne
"Universal Resource Identifier" ; c'est une extension Internet de
la notion de chemin permettant d'accéder à des documents en spécifiant
l'adresse réseau complète, identification et authentification
comprise, leur chemin, leur nom, et des paramètres d'accès.
Il faut savoir que cette spécification internet n'est acceptée
que par trés peu de navigateurs web : internet explorer(©) ne l'accepte
pas, mais ne l'affiche pas ; sous linux, j'ai pu voir avec le navigateur lynx,
que le URI scheme (go:) n'est pas supporté, mais il s'agit à mon
avis d'installer le module adéquat.
Statut de ce document :
Ce document spécifie un protocole standard d'Internet, pour la communauté
Internet, et ne sera éprouvé qu'après plusieurs discussions
et suggestions. Referez-vous à l'édition courante de "Internet
Official Protocol Standards" (STD 1) pour savoir l'état de sa standardisation
et son statut. La distribution de cette note est illimitée.
Note de Copyright :
Copyright (C) The Internet Society (1998). Tous droits réservés.
Résumé :
Ce document définit un arrangement URI, le "go:", qui est utilisé
pour le CNRP (Protocole de Résolution de Nom Commun).Spécifiquement
il dispose les composants syntaxiques et indique comment ces composants sont
utilisés par la résolution d'URI dans le but de trouver le chemin
valide pour le service CNRP.
Il faut traiter avec soin la plupart des composants URI parce que,
tandis qu'ils peuvent ressembler aux composants trouvés dans d'autres
arrangements URI, ils n'agissent souvent pas comme eux.
Table des matières :
1.buts
2.terminologie
3. regles de syntaxe
31. syntaxe générale
32. syntaxe ABNF
33. Valeurs par défaut
331. pour un serveur
332. pour un serveur local
333. port par défaut
34. regles d'encodage
4. liaisons indépendantes
5. exemples
6. remarques au niveau de la sécurité
7. remarques IANA
8. remerciements.
1. Buts
Les deux buts de l'URI[1] CNRP[3] sont d'identifier les enregistrements spécifiques
de nom commun pour un serveur désigné et identifier une probable
requête dynamique ou un point d'entrée dans le processus de la requête.
Chaque CNRP exige que le numéro ID soit une requête fondammentale, aussi ces
deux cas peuvent être généralisés pour simplifier une requête
spécifique qui contiendrait uniquement le numéro ID.
Au premier regard cela semblerait un exercice assez simple pour résoudre
une requête XML codée et l'insérer ensuite dans la partie de
la requête de l'URL. Le problème c'est que, en raison des règles
de codage, chacune des requêtes complexes sortira rapidement des limites
de longueur de l'URI .
La solution est alors de fournir une syntaxe simplifiée pour la requête,
en tenant compte du sous-ensemble valide via le XML.
2. Terminologie
Les mots-clés : "DOIT", "NE DOIT PAS ", "EXIGE",
"DEVRAIT", "NE DEVRAIT PAS","RECOMMANDE", "PEUT", et "FACULTATIF", doivent être
interprétés comme décrit dans la RFC 2119 [4] .
3.1 Règles générales
L'URI CNRP entre dans deux formes : la première est utilisée pour dialoguer
avec un serveur spécifique, et la seconde forme pour exprimer
une requête envoyée à plusieurs services CNRP différents. Les deux exemples qui suivent sont pour un usage pédagogique,
et la grammaire ABNF dans la section suivante est pour la définition
de la syntaxe .
go://[<host>]?[<common-name>]*[;<attribute>=[<type>,]<value>]
et
go:<common-name>*[;<attribute>=[<type>,]<value>]
3.2 Syntaxe ABNF
Certaines valeurs de l'ABNF[2] sont incluses par référence dans la RFC 2396
[1] .
cnrp-uri = "go:" (form1 / form2)
form1 = "//" [server] ["?" ((common-name *avpair) / id-req)
]
form2 = nom-commun *avpair
id-req = valeur de l' "id="
avpair = ";" attribut "=" valeur [ type "," ]
server = // RFC 2396
common-name = *(unreserved | escaped)
attribute = *(unreserved | escaped)
value = *(unreserved | escaped)
type = *(unreserved | escaped)
unreserved = // aussi spécifiée dans la RFC 2396
escaped = "%" symbole hexadécimal .
hex = "0" | "1" | "2" | "3" | "4"
| "5" | "6" | "7" |
"8" | "9" | "A" | "B" | "C"
| "D" | "E" | "F" |
"a" | "b" | "c" | "d" | "e"
| "f"
33. Valeurs par défaut
331 . Si il s'agit uniquement d'un serveur
Dans le cas où le CNRP URI contient seulement la production de serveur
alors l'URI identifie une donnée du serveur CNRP , ce n'est pas n'importe
quelle requête particulière qui doit alors être faite. Un client
peut supposer que ce serveur répondra au moins à la demande d'une
requête 'servicequery'.
332. Dans le cas d'un serveur local .
Si l'élément 'server' n'a pas de valeur , alors la valeur par
défaut de 'MUST' est supposée être 'localhost' .
333. Port par défaut
Le port de transport de HTTP par défaut du CNRP est 1096. Si la valeur
du port n'est pas spécifiée pour la production du serveur, alors
le port 1096 peut-être utilisé si le client n'a pas connaissance des autres ports ou liaisons que le service peut accepter .
34. R égles de codage
Le nom commun, les paramètres des requêtes et les valeurs des paramètres
doivent être codées en utilisant l'arrangement [5] du codage UTF-8
et tout octet qui n'est pas un des caractères permis par le
mot clé DOIT est représenté par un "%" suivi
par deux caractères <hex>. Les deux caractères donnent la représentation
hexadécimale de chaque octet.
4. Liaisons indépendantes .
Comme exposé dans la spécification [3] du protocole CNRP, CNRP
est permis sur plusieurs protocoles de transport avec la mise en oeuvre obligatoire de HTTP. Dans le cas où un client essaye de
résoudre un CNRP URI, et qu' il ne sait rien du service qui fait référence
à l'URI, alors il devrait utiliser HTTP sur le port par défaut
de CNRP (1096).
go:Mercedes%20Benz
Cet exemple nous montre une requête générale sur le nom-commun
"mercedes benz". L'intention consiste à ce que la requête soit empaquetée avec n'importe quel client fourni par défaut et envoyée
à un ou plusieurs services auxquels le client a configuré la demande.
go://?Mercedes%20Benz
Une requête générale sur le nom-commun "mercedes benz"
envoyée à un serveur tournant comme hôte local.
go://cnrp.foo.com?Mercedes%20Benz;geography=US-ga
Exemple montrant une requête sur le nom-commun "mercedez benz", localisé géographiquement sur "US-ga", qui sera envoyé
au serveur trouvé sur "cnrp.foo.com".
go://cnrp.foo.org?Martin%20J.%20D%C3%BCrst
exemple incluant un caractère encodé en UTf-8 , et utilisant le caractère
d'espacement hexadécimal. La valeur codée est un ü (un
"u" avec deux points dessus). Cette simple requête est
envoyée au serveur trouvé sur "cnrp.foo.org" , sans aucun
paramètre.