Schéma d'URI

identifieur de namespace attribué pour la IANA

Un schéma d’URI, en informatique, est le premier niveau de la structure de nommage des identifiants uniformes de ressources (URI). Toutes les URL sont construites à partir d'un nom de schéma, suivi de deux points (« : ») puis de l'URI, spécifique au schéma. La syntaxe et la sémantique de la partie spécifique sont, en grande partie, laissées aux spécifications des différents schémas.

La plupart des schémas ayant été conçus à l'origine pour être utilisés avec un protocole, ils sont souvent appelés de manière incorrecte des « protocoles » ou des « protocoles d'URI ». Par exemple, le schéma HTTP est en général utilisé pour désigner des ressources Web utilisant le protocole HTTP. Maintenant, des URI de ce schéma sont utilisés pour d'autres applications, comme les ressources RDF (voir RDF Schema) ou les espaces de nom XML, qui n'ont pas de rapport avec le protocole. De plus, certains schémas ne sont associés à aucun protocole particulier (comme le schéma file) et d'autres n'utilisent pas le nom d'un protocole comme préfixe (comme le schéma news pour usenet). Bien que l'usage semble avoir accepté le terme schéma, le mot plan, pour plan d'URI, est une traduction plus adaptée du mot anglais scheme[1].

Les schémas d'URI sont censés être enregistrés auprès de l'IANA, mais des schémas non enregistrés sont utilisés en pratique. La RFC 4395 décrit la procédure d'enregistrement d'un nouveau schéma d'URI.

Syntaxe générique

modifier

Le standard Internet STD 66 (voir aussi la RFC 3986) définit la syntaxe commune utilisée par tous les schémas d'URI. Chaque URI est constitué de quatre parties :

<nom du schéma> : <partie hiérarchique> [ ? <requête> ] [ #  <fragment> ]

Le nom du schéma est une lettre suivie de n'importe quelle combinaison de lettres, de chiffres, du signe plus (+), du point (.) ou d'un tiret (-) et se termine par deux points (:).

La partie hiérarchique de l'URI est prévue pour contenir les informations d'identification de la ressource, hiérarchique par nature. En général, cette partie commence par un double slash (//), suivi par le domaine puis un chemin optionnel.

  • Le domaine est principalement constitué du nom d'hôte ou de l'adresse IP, cette information peut être encadrée par deux autres champs optionnels : avant, les informations concernant l'utilisateur délimitées par un @ ; après, un numéro de port, précédé par un deux-points (:).
  • Le chemin est une séquence de segments (similaires à des répertoires), séparés par des slash (/). Chaque segment peut contenir des paramètres séparés par des points virgules (;), bien que cela soit rarement utilisé.

La requête est une partie optionnelle séparée par un point d'interrogation qui contient des informations complémentaires qui ne sont pas de nature hiérarchique. Le format de la requête n'est pas défini de manière générale, mais est souvent formée d'une suite de paires <clef>=<valeur> séparées par des points virgules ou par des esperluettes.

Le fragment est une partie optionnelle séparée par un dièse. Il fournit des informations supplémentaires permettant d'accéder à une ressource secondaire. Lorsque la ressource est un document HTML, le fragment est souvent l'id d'un élément et le navigateur fera le nécessaire pour que cet élément soit visible.

Exemples

modifier

Voici un exemple d'URI ainsi que de ses différents composants :

          infos utilisateur  domaine      port
          ┌─────┴─────┐ ┌──────┴──────┐ ┌┴┐
  https://user:password@www.example.com:123/forum/questions/?tag=networking&order=newest#top
  └─┬─┘   └─────────────┬──────────────┘   └───────┬───────┘ └────────────┬────────────┘ └┬┘
  schéma             autorité                  chemin                 requête           fragment

  ldap://[2001:db8::7]/c=GB?objectClass?one
  └┬─┘   └─────┬─────┘└─┬─┘ └──────┬──────┘
  schéma    autorité  chemin     requête

  mailto:John.Doe@example.com
  └─┬──┘ └────┬─────────────┘
  schéma     chemin

  news:comp.infosystems.www.servers.unix
  └┬─┘ └─────────────┬─────────────────┘
  schéma            chemin

  tel:+1-816-555-1212
  └┬┘ └──────┬──────┘
  schéma    chemin

  telnet://192.0.2.16:80/
  └─┬──┘   └─────┬─────┘
  schéma     autorité  chemin

  urn:oasis:names:specification:docbook:dtd:xml:4.1.2
  └┬┘ └──────────────────────┬──────────────────────┘
  schéma                    chemin

Schémas enregistrés auprès de l'IANA

modifier
Schéma But Défini par Format Notes
aaa protocole Diameter RFC 3588 aaa://<host>[:<port>][;transport=<transport>][;protocol=<protocol>]

exemple :
aaa://host.example.com:1813;transport=udp;protocol=radius

aaas Équivalent sécurisé de aaa RFC 3588 aaas://<host>[:<port>][;transport=<transport>][;protocol=<protocol>]
acap Application Configuration Access Protocol (en) RFC 2244 acap://[<user>[;AUTH=<type>]@]<host>[:<port>]/<entry> Schéma d'URL utilisé dans le protocole ACAP pour l'attribut « subdataset », les références et l'héritage.
cap Calendar access protocol RFC 4324 generic syntax Schéma utilisé à la fois pour adresser les dépôts de calendriers et les calendriers accessible via CAP.
cid Identifie les différentes parties d'un message SMTP/MIME. RFC 2392 cid:<content-id>
crid TV-Anytime Content Reference Identifier RFC 4078 crid://<host>/<data> Permet de référencer les contenus prévus à la diffusion.
data Inclusion de petites quantités de données dans l'URI elle-même RFC 2397 data:<mediatype>[;base64],<data>
dav HTTP Extensions for Distributed Authoring (WebDAV) RFC 2518 dav: Utilisé pour les identifiants internes uniquement.
dict Dictionary service protocol RFC 2229 dict://<user>;<auth>@<host>:<port>/d:<word>:<database>:<n>

dict://<user>;<auth>@<host>:<port>/m:<word>:<database>:<strat>:<n>

dns Domain Name System RFC 4501 dns:[//<host>[:<port>]/]<dnsname>[?<dnsquery>]

exemples :
dns:example?TYPE=A;CLASS=IN
dns://192.168.1.1/ftp.example.org?type=A

fax Utilisé pour les numéros de fax. RFC 2806 fax:<phonenumber> Rendu obsolète par la RFC 3966. L'utilisation du schéma tel est désormais recommandée pour tout type de numéro.
file Référence les fichiers sur un système de fichier local ou sur le réseau. RFC 1738
RFC 3986
file://[host]/path ou

(RFC 3986) file:[//host]/path

ftp Ressources FTP RFC 1738 syntaxe générique
geo (en) Coordonnées géographiques (GPS) RFC 5870 geo:<lat>,<lon>[,<alt>][;u=<uncertainty>]
(voir WGS 84)
D'autres systèmes de coordonnées, y compris non terrestres (Lune, Mars…) existeront sans être encore référencés.
go Common Name Resolution Protocol RFC 3368 go://[<host>]?[<common-name>]*[;<attribute>=[<type>,]<value>] ou
go:<common-name>*[;<attribute>=[<type>,]<value>]
gopher Utilisé par le protocole Gopher RFC 4266 gopher://<host>:<port>/<item type>/<path>
h323 H.323 RFC 3508 h323:[<user>@]<host>[:<port>][;<parameters>]
http Ressources HTTP RFC 2616 syntaxe générique
https Connexions http sécurisées. RFC 2817 syntaxe générique
icap Internet Content Adaptation Protocol RFC 3507
im Instant messaging protocol RFC 3860 RFC 4622 im:<username>[@<host>]
imap Permet d'accéder aux courriers électroniques via IMAP RFC 2192 imap://[<user>[;AUTH=<type>]@]<host>[:<port>]/<command>
info (en) Information Assets with Identifiers in Public Namespaces RFC 4452
ipp Internet Printing Protocol RFC 3510
iris
iris.beep
iris.xpc
iris.xpcs
iris.lws
Internet Registry Information Service RFC 3981 RFC 3983 RFC 4992 RFC 4992 RFC 4993
ldap Requête LDAP RFC 2255
RFC 4516
ldap://[<host>[:<port>]][/<dn> [?[<attributes>][?[<scope>][?[<filter>][?<extensions>]]]]]

exemple :
ldap://ldap1.example.net:6666/o=University%20of%20Michigan, c=US??sub?(cn=Babs%20Jensen)

lsid LSID dtc/04-10-08 URN:LSID:<Authority>:<Namespace>:<ObjectID>[:<Version>]

exemple :
urn:lsid:ubio.org:namebank:11815

mailto SMTP e-mail addresses and default content RFC 2368 mailto:<address>[?<header1>=<value1>[&<header2>=<value2>]]

exemple :
mailto:jsmith@example.com?subject=A%20Test&body=My%20idea%20is%3A%20%0A

mid Référence les messages ou des parties de messages SMTP/MIME. RFC 2392 mid:<message-id>[/<content-id>] (Voir aussi cid:)
modem modem RFC 3966
msrp
msrps
Message Session Relay Protocol RFC 4975
mtqp Message Tracking Query Protocol RFC 3887
mupdate Mailbox Update Protocol RFC 3656
news Usenet RFC 1738 news:<newsgroupname> ou
news:<message-id>
nfs Ressources Network File System RFC 2224 syntaxe générique
nntp Usenet NNTP RFC 1738 nntp://<host>:<port>/<newsgroup-name>/<article-number>
opaquelocktoken opaquelocktoken RFC 4918
pop Permet d'accéder à une boîte mail via POP3 RFC 2384 pop://[<user>[;AUTH=<auth>]@]<host>[:<port>]
pres Utilisé dans CPP pour identifier une présence. RFC 3859 pres:<address>[?<header1>=<value1>[&<header2>=<value2>]]
prospero Prospero Directory Service RFC 4157
rtsp Real Time Streaming Protocol RFC 2326
service RFC 2609
shttp HTTP sécurisé RFC 2660 Largement remplacé par HTTPS.
sip Utilisé par SIP RFC 3969
RFC 3261
sip:<user>[:<password>]@<host>[:<port>][;<uri-parameters>][?<headers>]

exemples :
sip:alice@atlanta.com?subject=project%20x&priority=urgent
sip:+1-212-555-1212 :1234@gateway.com;user=phone

sips (en) Version sécurisé de sip RFC 3969
RFC 3261
sips:<user>[:<password>]@<host>[:<port>][;<uri-parameters>][?<headers>]
sms Utilisé pour envoyer un SMS à partir d'un appareil compatible RFC 5724 sms:<phonenumber>[,<phonenumber>]?body=<text>*[&<name>=<value>]

exemples :
sms:+33123456789,+33987654321
sms:+33123456789?body=hello%20vous

snmp Simple Network Management Protocol RFC 4088 snmp://[user@]host[:port][/[<context>[;<contextEngineID>]][/<oid>]]

exemples :
snmp://example.com//1.3.6.1.2.1.1.3+
snmp://tester5@example.com:8161/bridge1;800002b804616263

soap.beep
soap.beeps
RFC 3288
tag Tag URI RFC 4151 tag:<email/domainname>,<date>:<Item>
tel Utilisé pour les numéros de téléphone RFC 3966
RFC 2806
tel:<phonenumber>
telnet Utilisé par telnet RFC 4248 telnet://<user>:<password>@<host>[:<port>/]
tftp Trivial File Transfer Protocol RFC 3617
thismessage Résolution de référence relative multipart/related RFC 2557
tip Transaction Internet Protocol RFC 2371
tv Diffusion TV RFC 2838
urn Noms uniformes de ressources RFC 2141 urn:<namespace>:<specificpart>
vemmi Versatile Multimedia Interface RFC 2122
wais Utilisé par WAIS RFC 4156 wais://<host>:<port>/<database>[?<search>] ou wais://<host>:<port>/<database>/<wtype>/<wpath>
xmlrpc.beep
xmlrpc.beep
RFC 3529
xmpp XMPP RFC 5122 xmpp:<user>@<host>[:<port>]/[<resource>][?<query>]
z39.50r Z39.50 RFC 2056 z39.50r://<host>[:<port>]/<database>?<docid>[;esn=<elementset>][;rs=<recordsyntax>]
z39.50s Session Z39.50 RFC 2056 z39.50s://<host>[:<port>]/[<database>][?<docid>][;esn=<elementset>][;rs=<recordsyntax>]

Schémas d'URI non officiels couramment utilisés

modifier
Schéma But Défini par Format Notes
about Affiche des informations concernant le produit IETF Draft Utilisé par les navigateurs webs, parfois aussi pour fournir des options interactives. Le navigateur Opera utilise opera:.
adiumxtra Installation directe de plugins Adium. The Adium Team adiumxtra://www.adiumxtras.com/download/0000 0000 identifie un plugin spécifique.
aim Permet de contrôler AOL Instant Messenger. AOL aim:<function>?<parameters> Les fonctions comprennent goim, addbuddy et buddyicon.
apt Méthode expérimentale pour installer des logiciels via APT. apt:<package name> Utilisé sur les sites hébergeant des dépôts logiciels pour Debian.
afp Permet d'accéder aux partages Apple Filing Protocol shares IETF Draft via TCP/IP: afp://[<user>@]<host>[:<port>][/[<path>]]

via AppleTalk: afp:/at/[<user>@]<host>[:<zone>][/]

aw Liens vers un monde Active Worlds Activeworlds Inc. aw://<worldserver host>:<worldserver port>/<worldname> Se trouve généralement comme referer lorsqu'un utilisateur ouvre un site depuis un monde Active Worlds.
Bolo (en) Rejoindre une partie de Bolo bolo://<hostname>/ Généralement transmise par IRC ou par des serveurs de jeux.
callto Démarre une communication Skype callto:<screenname> ou
callto:<phonenumber> [1]
Initialement apparu dans NetMeeting. Fonctionne avec les versions actuelles de Skype avec Firefox, Internet Explorer et Safari
chrome Utilisé par les interfaces construites avec XUL. Mozilla chrome://<package>/<section>/<path> (Ou <code><section></code> peut être "content", "skin" ou "locale") Fonctionne seulement dans les navigateurs basés sur Mozilla, tels que Firefox, SeaMonkey et Netscape.
coap Accède aux ressources par Constrained Application Protocol (CoAP). IETF Draft coap://<host>[:<port>]/<path>[?<query>] Identifie les ressources CoAP et permet de localiser les ressources.
content Accède à un fournisseur de contenu Android. Open Handset Alliance content://provider/<path> Effectue une requête sur un fournisseur de contenu Android.
cvs Lien vers un dépôt CVS. Concurrent Versions System cvs://<method:logindetails>@<repository>/<modulepath>;[date=date to retrieve | tag=tag to retrieve]
doi Digital object identifier, a digital identifier for any object of intellectual property. The International DOI Foundation doi:10.<publisher number>/<suffix>
Exemple : doi:10.1000/182
Used e.g. for most scientific publications.
Can be resolved via HTTP (transformed into an URL) by appending https://dx.doi.org/ or http://hdl.handle.net/ in front.
ed2k Resources available using the eDonkey2000 network eDonkey2000 ed2k://|file|<filename>|<size of file>|<hash of file>|/ ou
ed2k://|server|<host>|<port>|/
Links to servers are also possible, as are additional parameters. Official documentation from « eDonkey2000 website » (archivé sur Internet Archive)
feed (en) web feed subscription feed:<absolute_uri> ou
feed://<hierarchical part>

exemples :
feed://example.com/rss.xml
feed:https://example.com/rss.xml

See Feed URI scheme (en) for a detailed overview of common implementations, supported software, and critics.
finger Querying user information using the Finger protocol IETF Draft finger://host[:port][/<request>]
fish Accessing another computer's files using the SSH protocol fish KDE kioslave fish://[<username>[:<password>]@]<hostname>[:<port>] See fingerFiles transferred over shell protocol (en) for details about the protocol.
gg Starting chat with Gadu-Gadu user Gadu-Gadu gg:<userid>
gizmoproject Gizmo5 calling link. gizmoproject://call?id=<gizmo_id> May use sip:// instead of gizmoproject:// in recent versions of Gizmo5.
gtalk Start a chat with a Google Talk user Google Talk gtalk:chat?jid=example@gmail.com See Google Talk, XMPP, and http://juberti.blogspot.com/2006/11/gtalk-uri.html for more information
iax2 Inter-Asterisk eXchange protocol version 2 IETF Draft iax2:[<username>@]<host>[:<port>][/<number>[?<context>]]

exemples :
iax2:[2001:db8::1]:4569/alice?friends
iax2:johnQ@example.com/12022561414

irc Connecting to an Internet Relay Chat server to join a channel. IETF Draft
Old IETF Draft
irc://<host>[:<port>]/[<channel>[?<password>]] Assuming the client knows a server associated with the name, "host" may optionally be an IRC network name.
ircs Secure equivalent of irc IETF Draft ircs://<host>[:<port>]/[<channel>[?<password>]] See irc
irc6 IPv6 equivalent of irc irc6://<host>[:<port>]/[<channel>[?<password>]] See irc
itms Used for connecting to the iTunes Music Store Apple itms:
jar Compressed archive member Java API jar:<url>!/[<entry>] Works for any ZIP based file.
javascript Execute JavaScript code IETF Draft javascript:<javascript to execute> Works in any modern browser.
keyparc Keyparc encrypt/decrypt resource. Bloombase (en) keyparc://encrypt/<username>/<uri> ou

keyparc://decrypt/<username>/<uri>

lastfm Connecting to a radio stream from Last.fm. Last.fm lastfm://<radio_stream> ou lastfm://globaltags/<genre> ou
lastfm://user/<username>/<stuff>
ldaps Secure equivalent of ldap ldaps://[<host>[:<port>]][/<dn> [?[<attributes>][?[<scope>][?[<filter>][?<extensions>]]]]] Not an IETF standard, but commonly used in applications.
Magnet "magnet links" Magnet-URI Project magnet:?xt=urn:sha1:<hash of file>&dn=<display name>
(other parameters are also possible)
Used by various peer-to-peer clients, usually providing the hash of a file to be located on the network.
maps "map links" maps:q=<physical location> Some mobile web browsers will launch a dedicated mapping application.
mms Windows streaming media mms://<host>:<port>/<path> Used by Windows Media Player to stream audio and/or video.
msnim Adding a contact, or starting a conversation in Windows Live Messenger Windows Live Messenger Add a contact to the buddy list

msnim:add?contact=nada@nowhere.com
Start a conversation with a contact
msnim:chat?contact=nada@nowhere.com
Start a voice conversation with a contact
msnim:voice?contact=nada@nowhere.com
Start a video conversation with a contact
msnim:video?contact=nada@nowhere.com

Can be invoked from a web page or via a run command or an Internet Explorer browser URL (won't work with Firefox 2.0.0.8). For web pages use this HTML: <a href="chat?contact=nada@nowhere.com">Click to chat!</a>
mvn Access Apache Maven repository artifacts OPS4J mvn:org.ops4j.pax.web.bundles/service/0.2.0-SNAPSHOT
mvn:http://user:password@repository.ops4j.org/maven2!org.ops4j.pax.web.bundles/service/0.2.0
notes Open a Lotus Notes document or database Lotus Notes notes://<address> Used by IBM Lotus Notes to refer to documents and databases stored within the Lotus Notes system. When clicked in a browser on a computer with Lotus Notes client installed, Notes will open the document link as if a Notes DocLink were clicked within Notes.
psyc Used to identify or locate a person, group, place or a service and specify its ability to communicate PSYC psyc:[//<host>[:[<port>][<transport>]]/[<object-name>][#<channel-name>] Official documentation from PSYC website
paparazzi:http Used to launch and automatically take a screen shot using the application "Paparazzi" (Mac only) Derailer paparazzi:http:[//<host>[:[<port>][<transport>]]/ Official documentation from Paparazzi website
rmi Look up a Java object in an RMI registry. Sun rmi://<host>[:<port>]/<object-name> URI scheme understood by JNDI. Can be used to lookup a remote Java object within an RMI registry (typically for the purposes of RMI on that object). Host/port in the URI are of the rmiregistry process, not the remote object.
rsync rsync rsync://<host>[:<port>]/<path>
secondlife Open the Map floater in Second Life application to teleport the resident to the location. Linden Lab secondlife://<region name>/<x position>/<y position>/<z position> Used by SLurl.com. Knowledge base article.
sgn Social Graph Node Mapper Google exemple :

sgn://social-network.example.com/?ident=bob

Official documentation from sgnodemapper project.
skype Launching Skype call (official; see also callto:) Skype skype:<username|phonenumber>[?[add|call|chat|sendfile|userinfo]] Official documentation from Skype website.
sftp SFTP file transfers (not be to confused with FTPS (FTP/SSL)) IETF Draft sftp://[<user>[;fingerprint=<host-key fingerprint>]@]<host>[:<port>]/<path>/<file>
smb Accessing SMB/CIFS shares IETF Draft smb://[<user>@]<host>[:<port>][/[<path>]][?<param1>=<value1>[;<param2>=<value2>]] ou
smb://[<user>@]<workgroup>[:<port>][/]
soldat Joining servers Soldat soldat://<host>:<port>/[password]

exemple :
soldat://127.0.0.1:23073/thatssecret!

Official note in Manual
ssh SSH connections (like telnet:) and IETF Draft ssh://[<user>[;fingerprint=<host-key fingerprint>]@]<host>[:<port>]
steam Interact with Steam: install apps, purchase games, run games, etc. Steam, Valve Corporation steam:<command line arguments> ou
steam://<action>/<id, addon, IP, hostname, etc.>
Official documentation from Valve Developer Community website
svn Provides a link to a Subversion (SVN) source control repository Subversion (software) svn[+ssh]://<logindetails>@<repository><:port>/<modulepath>
teamspeak Joining a server. TeamSpeak teamspeak://<server>[:<port>]/[?<parameter1>=<value1>[&<parameter2>=<value2>]] Official documentation from TeamSpeak Website
unreal Joining servers Unreal unreal://<server>[:<port>]/ Unreal legacy "protocol"
ut2004 Joining servers Unreal Tournament 2004 ut2004://<server>[:<port>][/<map>?<options>] Documentation from Unreal Developer Network
ventrilo Joining a server. Ventrilo ventrilo://<server>[:<port>]/[?<parameter1>=<value1>[&<parameter2>=<value2>]] Official documentation from Ventrilo Website
view-source (en) Shows a web page as code ‘in the raw’. Mozilla, Google Chrome view-source:<URI>

exemple :
view-source:http://en.wiki.x.io/wiki/URI_scheme

See view-source (en) for details.
webcal Subscribing to calendars in iCalendar format iCalendar webcal://<hierarchical part>

exemple :
webcal://example.com/calendar.ics

HTTP as a transport protocol is assumed.
See Webcal for details.
wtai Wireless Telephony Application Interface WAP Forum wtai://wp/mc/+18165551212 See Application Protocol Wireless Application Environment Specification Version 1.1 [PDF] for details.
wyciwyg What You Cache Is What You Get WYCIWYG Mozilla wyciwyg://<URI> See WYCIWYG for details.
xfire Adding friends and servers, joining servers, changing status text. Xfire xfire:<function>[?<parameter1>=<value1>[&<parameter2>=<value2>]] Official documentation from Xfire website
xri eXtensible Resource Identifier (XRI) OASIS XRI Technical Committee xri://<authority>[/[<path>]][?<query>][#fragment] Official documentation from OASIS XRI Technical Committee
ymsgr Sending an instant message to a Yahoo! Contact. Yahoo! Messenger ymsgr:sendIM?<screenname>

Références

modifier
  1. « Explication en français de la RFC 3986 sur les URI », sur www.bortzmeyer.org (consulté le )