RFC 3368

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. Règles de syntaxe

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

5 . Exemples

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.