Un Identificateur de Ressource Uniforme (URI) est une courte chaîne de caractères identifiant une ressource physique ou abstraite (par exemple une page web). Une Localisation de Ressource Uniforme (URL) est un URI qui identifie une ressource à travers son moyen d'accès (sa « position » réseau par exemple), plutôt que par son nom ou un autre attribut de la ressource. Un Nom de Ressource Uniforme (URN) est un URI qui doit rester globalement unique, et persister même si la ressource cesse d'exister ou devient indisponible.
URIs are the standard way to name hypertext link destinations for tools such as web browsers. The string "http://www.kernel.org" is a URL (and thus it is also a URI). Many people use the term URL loosely as a synonym for URI (though technically URLs are a subset of URIs).
Les URI peuvent être absolus ou relatifs. Un identificateur absolu référence une ressource indépendamment du contexte, alors qu'un identificateur relatif référence une ressource en décrivant la différence par rapport au contexte courant. Dans les références de chemins relatifs, les segments complets « . » et « .. » ont des significations particulières : « le niveau actuel dans la hiérarchie » et « le niveau au-dessus dans la hiérarchie », respectivement, tout comme dans les systèmes type UNIX. Un segment de chemin qui contient un caractère deux-points ne peut pas être utilisé comme premier segment du chemin d'un URI (par exemple « ceci:cela »), car on le confondrait avec le mécanisme. Précédez un tel segment avec ./ (par exemple « ./ceci:cela »). Notez que les descendants de MS-DOS (par ex. Windows) remplacent le deux-points du nom de périphérique par une barre verticale dans les URI, ainsi « C: » devient « C| ».
A fragment identifier, if included, refers to a particular named portion (fragment) of a resource; text after a '#' identifies the fragment. A URI beginning with '#' refers to that fragment in the current resource.
Il y a plusieurs schémas d'URI différents, chacun ajoutant des règles et des significations spécifiques, mais ils sont volontairement rendus le plus ressemblants possible. Par exemple, plusieurs schémas d'URL permettent le format suivant pour décrire l'autorité d'un chemin réseau, que l'on appellera serveur_ip (les crochets encadrent les parties optionnelles) :
serveur_ip = [user [ : password ] @ ] hôte [ : port]
This format allows you to optionally insert a username, a user plus password, and/or a port number. The host is the name of the host computer, either its name as determined by DNS or an IP address (numbers separated by periods). Thus the URI <http://fred:fredpassword@example.com:8080/> logs into a web server on host example.com as fred (using fredpassword) using port 8080. Avoid including a password in a URI if possible because of the many security risks of having a password written down. If the URL supplies a username but no password, and the remote server requests a password, the program interpreting the URL should request one from the user.
Voici les mécanismes les plus courants utilisés sur les systèmes type UNIX, compris par de nombreux outils. Notez que beaucoup d'outils gérant les URI ont aussi des mécanismes internes ou spécialisés ; consultez la documentation de ces outils pour plus de détails.
http - Serveur Web (HTTP)
http://serveur_ip/chemin
http://serveur_ip/chemin?requête
Il s'agit d'une URL accédant à un serveur web (HTTP). Le port par défaut est 80. Si le chemin référence un répertoire, le serveur choisira ce qu'il renverra. Habituellement, si un fichier nommé « index.html » ou « index.htm » est présent, son contenu est renvoyé. Sinon, il crée et renvoie une liste des fichiers dans le répertoire en cours avec les liens appropriés. Un exemple : <http://lwn.net>.
Une requête peut être formulée dans le format archaïque « isindex », consistant en mot ou phrase sans signe égal « = ». Une requête peut aussi être dans le format « GET » plus long, qui a une ou plusieurs entrées de requêtes de la forme clé=valeur séparées par un caractère « et commercial » « & ». Notez que la clé peut être répétée plusieurs fois, et c'est au serveur web et ses programmes applicatifs de déterminer s'il y a une signification pour cela. Il y a une interaction malheureuse avec HTML/XML/SGML et le format de requête GET. Quand une telle requête avec plusieurs clés est incluse dans un document SGML/XML (y compris HTML), le « et commercial » « & » doit être réécrit sous forme « & ». Notez que toutes les requêtes n'utilisent pas ce format ; elles peuvent être trop longues pour être stockée en URL et utilisent un mécanisme d'interaction différent (appelé POST) sans inclure les données dans l'URI. Consultez la spécification Common Gateway Interface (CGI) à l'adresse http://www.w3.org/CGI pour plus de détails.
ftp - File Transfer Protocol (FTP)
ftp://serveur_ip/chemin
Cette URL accède à un fichier à travers le protocole FTP. Le port par défaut (pour les commandes) est 21. Si aucun nom d'utilisateur n'est inclus, l'utilisateur « anonymous » est employé, et dans ce cas de nombreux clients fournissent l'adresse courriel du requérant en guise de mot de passe. Un exemple est <ftp://ftp.is.co.za/rfc/rfc1808.txt>.
gopher - Serveur Gopher
gopher://serveur_ip/type_gopher sélecteur
gopher://serveur_ip/type_gopher sélecteur%09recherche
gopher://serveur_ip/type_gopher sélecteur%09recherche%09chaine_gopher+
Le port gopher par défaut est 70. Le type_gopher est un champ composé d'un unique caractère indiquant le type de ressource Gopher à laquelle l'URL fait référence. Le chemin entier paut aussi être vide, auquel cas le délimiteur « / » est aussi optionnel et le type_gopher prend la valeur par défaut « 1 ».
selecteur est une chaîne de sélecteur Gopher. Dans le protocole Gopher, la chaîne de sélecteur est une séquence d'octets pouvant contenir tous les octets sauf 09 hexadécimal (HT ACSII ou Tabulation), 0A hexadécimal (LF ACSII), et 0D (CR ACSII).
mailto - Adresse courriel
mailto:adresse-courriel
Il s'agit d'une adresse courriel, en principe de la forme nom@nom_hôte. Consultez mailaddr(7) pour plus d'informations sur le format correct d'une adresse courriel. Notez que les caractères % doivent être transformés en %25. Un exemple : <mailto:dwheeler@dwheeler.com>.
news - Groupe ou message des news
news:nom-groupe-news
news:id-message
Un nom-groupe-news est un nom hiérarchique délimité par des points, comme « comp.infosystems.www.misc ». Si nom-groupe-news est « * » (comme dans <news:*>), l'URL référence tous les groupes news disponibles. Un exemple : <news:comp.lang.ada>.
Un id-message correspond au champ identificant Message-ID de IETF RFC 1036, sans les chevrons « < » et « > » ; il prend la forme unique@nom-domaine-complet. Un identificateur de message peut être distingué d'un nom de groupe de news par la présence du caractère « @ ».
telnet - Connexion telnet
telnet://serveur_ip/
Le mécanisme d'URL Telnet est utilisé pour afficher un service interactif accessible par le protocole Telnet. Le caractère « / » final peut être omis. Le port par défaut est 23. Un exemple : <telnet://melvyl.ucop.edu/>.
file - Fichier normal
file://serveur_ip/segments_chemins
file:segments_chemins
Ceci représente un fichier ou un répertoire accessible localement. En particulier, ip_server peut être la chaîne « localhost » ou une chaîne vide ; elle est interprétée comme « la machine sur laquelle l'URL est en cours d'interprétation ». Si le chemin conduit à un répertoire, le navigateur devrait afficher le contenu du répertoire avec des liens pour chaque élément. Tous les navigateurs ne le font pas encore. KDE prend en charge les fichiers générés par l'URL <file:/cgi-bin>. Si le fichier n'est pas trouvé, l'analyseur du navigateur peut essayer de développer le nom du fichier (consultez glob(7) et glob(3)).
The second format (e.g., <file:/etc/passwd>) is a correct format for referring to a local file. However, older standards did not permit this format, and some programs don't recognize this as a URI. A more portable syntax is to use an empty string as the server name, for example, <file:///etc/passwd>; this form does the same thing and is easily recognized by pattern matchers and older programs as a URI. Note that if you really mean to say "start from the current location", don't specify the scheme at all; use a relative address like <../test.txt>, which has the side-effect of being scheme-independent. An example of this scheme is <file:///etc/passwd>.
man - Pages de manuel
man:nom-commande
man:nom-commande(section)
Ceci référence les pages de documentation en ligne (man) locales. Le nom de la commande peut être suivi éventuellement de parenthèses et d'un numéro de section. Consultez man(7) pour plus de renseignements sur la signification du numéro de section. Ce mécanisme d'URI est unique aux systèmes UNIX (comme Linux) et n'est pas encore enregistré par l'IETF. Un exemple : <man:ls(1)>.
info - Page de documentation Info
info:nom-de-fichier-virtuel
info:nom-de-fichier-virtuel#nom-de-nœud
info:(nom-de-fichier-virtuel)
info:(nom-de-fichier-virtuel)nom-de-nœud
Ce mécanisme référence les pages de documentation en ligne info (créées par les fichiers texinfo), un format utilisé par les outils GNU. Ce mécanisme est spécifique aux systèmes UNIX (comme Linux) et n'est pas encore enregistré par l'IETF. Actuellement, Gnome et Kde divergent dans la syntaxe d'URI et chacun rejette la syntaxe de l'autre. Les deux premiers formats sont ceux de Gnome ; dans le nom de nœud, tous les espaces sont remplacés par des soulignés. Les deux formats suivants sont ceux de Kde ; les espaces doivent rester tels quels, même si c'est interdit dans les standards d'URI. On peut espérer que dans l'avenir la plupart des outils comprendront les deux formats et accepteront des soulignés en remplacement des espaces. Dans tous les cas, le format sans nom de nœud est supposé viser le nœud « Top »". Exemples de format Gnome : <info:gcc> et <info:gcc#G++_and_GCC>. Exemples de format Kde : <info:(gcc)> et <info:(gcc)G++ and GCC>.
whatis - Recherche de documentation
whatis:chaîne
Ce mécanisme parcourt une base de données de courtes (une ligne) descriptions des commandes et renvoie une liste des descriptions contenant la chaîne. Seules les correspondances de mots complets sont renvoyées. Consultez whatis(1). Ce mécanisme est unique aux systèmes UNIX (comme Linux) et n'est pas encore enregistré par l'IETF.
ghelp - Documentation d'aide Gnome
ghelp:nom-application
Ceci charge la documentation d'aide Gnome pour l'application indiquée. Notez qu'il n'y a pas encore beaucoup de documentation dans ce format.
ldap - Lightweight Directory Access Protocol
ldap://hostport
ldap://hostport/
ldap://hostport/dn
ldap://hostport/dn?attributs
ldap://hostport/dn?attributs?portée
ldap://hostport/dn?attributs?portée?filtre
ldap://hostport/dn?attributs?portée?filtre?extensions
Ce mécanisme prend en charge les requêtes utilisant le protocole Lightweight Directory Access Protocol (LDAP), pour interroger un ensemble de serveurs à propos d'informations organisées hiérarchiquement (comme des gens ou des ressources de calcul). Consultez RFC 2255 pour plus d'informations sur la forme des URL LDAP. Les composantes de cette URL sont :
- hostport
- le serveur LDAP à interroger, écrit comme un nom d'hôte suivi éventuellement par un deux-points et un numéro de port. Le port TCP pour le LDAP est 389. Si le nom est vide, le client détermine le serveur LDAP à utiliser.
- dn
- Le nom complet (Distinguished Name) LDAP, qui identifie l'objet de base de la recherche LDAP (voir RFC 2253 section 3).
- attributs
- une liste d'attributs à renvoyer séparés par des virgules ; voir la RFC 2251 section 4.1.5. Par défaut tous les attributs sont renvoyés..
- portée
- indique la portée de la recherche qui peut être « base » (recherche d'objet de base), « one » (recherche sur un niveau), ou « sub » (recherche dans un sous-arbre). Par défaut, on considère « base ».
- filtre
- indique le filtre de recherche (sous-ensemble des entrées à renvoyer). Par défaut, toutes les entrées sont renvoyées. Consultez RFC 2254 section 4.
- extensions
- a comma-separated list of type=value pairs, where the =value portion may be omitted for options not requiring it. An extension prefixed with a '!' is critical (must be supported to be valid), otherwise it is noncritical (optional).
Les requêtes LDAP sont plus faciles à comprendre par l'exemple. Voici une requête demandant à ldap.itd.umich.edu des informations à propos de l'Université du Michigan aux U.S. :
ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US
Pour n'obtenir que l'attribut Adresse Postale, on demanderait :
ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US?postalAddress
Pour demander à host.com, sur le port 6666 des informations sur la personne de nom courant (cn) « Babs Jensen » à l'University du Michigan, demandez :
ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)
wais - Wide Area Information Servers
wais://hostport/base
wais://hostport/base?recherche
wais://hostport/base/wtype/wpath
Ce mécanisme désigne une base de données WAIS, une recherche ou un document (voir IETF RFC 1625 pour plus de renseignements sur WAIS). Hostport est le nom d'hôte, suivi éventuellement d'un deux-points et d'un numéro de port (par défaut 210).
La première forme désigne une base de données WAIS pour les recherches. La seconde désigne une recherche particulière dans la base WAIS indiquée. La troisième forme désigne un document particulier à retrouver dans la base de données WAIS. wtype est la désignation WAIS du type d'objet et wpath est l'identificateur WAIS du document.
Autres mécanismes
Il existe d'autres mécanismes URI. La plupart des outils traitant les URI acceptent un jeu d'URI internes (par exemple, Mozilla a un mécanisme about: pour les informations internes, et le navigateur d'aide Gnome a un mécanisme toc: pour diverses opérations). Il y a de nombreux mécanismes qui ont été définis mais pas très utilisés pour l'instant (par exemple, prospero). Le mécanisme nntp: est déconseillé en faveur de celui news:. Les URN seront prises en charge par le mécanisme urn: avec des espaces de noms hiérarchique (p.ex. : urn:ietf:... pour les documents IETF). Pour le moment, les URN ne sont pas très largement implémentés. Tous les outils ne gèrent pas tous les mécanismes.