URI scheme

From Wikipedia, the free encyclopedia

In the field of computer networking, a URI scheme is the top level of the uniform resource identifier (URI) naming structure. All URIs and absolute URI references are formed with a scheme name, followed by a colon character (":"), and the remainder of the URI called (in the outdated RFCs 1738 and 2396, but not the current STD 66/RFC 3986) the scheme-specific part. The syntax and semantics of the scheme-specific part are left largely to the specifications governing individual schemes, subject to certain constraints such as reserved characters and how to "escape" them.

URI schemes are frequently erroneously referred to as "protocols", or specifically as URI protocols or URL protocols, since most were originally designed to be used with a particular protocol, and often have the same name. The http scheme, for instance, is generally used for interacting withWeb resources using HyperText Transfer Protocol. Today, URIs with that scheme are also used for other purposes, such as RDF resource identifiers andXML namespaces, that are not related to the protocol. Furthermore, some URI schemes are not associated with any specific protocol (e.g. "file") and many others do not use the name of a protocol as their prefix (e.g. "news").

URI schemes should be registered with IANA, although non-registered schemes are used in practice. RFC 4395 describes the procedures for registering new URI schemes.

Contents

   [hide] 
  • 1 Generic syntax
    • 1.1 Examples
  • 2 Official IANA-registered schemes
  • 3 Unofficial but common URI schemes
  • 4 References
  • 5 External links

[edit]Generic syntax

Internet standard STD 66 (also RFC 3986) defines the generic syntax to be used in all URI schemes. Every URI is defined as consisting of four parts, as follows:

 :  [ ?  ] [ #  ]

The scheme name consist of a sequence of characters beginning with a letter and followed by any combination of letters, digits, plus ("+"), period ("."), or hyphen ("-"). Although schemes are case-insensitive, the canonical form is lowercase and documents that specify schemes must do so with lowercase letters. It is followed by a colon (":").

The hierarchical part of the URI is intended to hold identification information hierarchical in nature. Usually this part begins with a double forward slash ("//"), followed by an authority part and an optional path.

  • The authority part holds an optional user-information part, terminated with "@" (e.g. username:password@); a hostname (e.g., domain name or IP address); and an optional port number, preceded by a colon ":".
  • The path part is a sequence of segments (conceptually similar to directories, though not necessarily representing them) separated by a forward slash ("/"). Each segment can contain parameters separated from it using a semicolon (";"), though this is rarely used in practice.

The query is an optional part, separated by a question mark ("?"), that contains additional identification information that is not hierarchical in nature. The query string syntax is not generically defined, but it is commonly organized as a sequence of = pairs, with the pairs separated by a semicolon[1][2][3] or an ampersand. For example:

Semicolon: key1=value1;key2=value2;key3=value3
Ampersand: key1=value1&key2=value2&key3=value3

The fragment is an optional part separated from the front parts by a hash ("#"). It holds additional identifying information that provides direction to a secondary resource, e.g., a section heading (in an article) identified by the remainder of the URI. When the primary resource is anHTML document, the fragment is often an id attribute of a specific element and web browsers will make sure this element is visible.

[edit]Examples

The following figure displays two example URIs (foo://username:[email protected]:8042/over/there/index.dtb?type=animal&name=narwhal#nose andurn:example:animal:ferret:nose) and their component parts. (The examples are derived from RFC 3986 — STD 66, chapter 3).

  foo://username:[email protected]:8042/over/there/index.dtb?type=animal&name=narwhal#nose
  \_/   \_______________/ \_________/ \__/            \___/ \_/ \______________________/ \__/
   |           |               |       |                |    |            |                |
   |       userinfo         hostname  port              |    |          query          fragment
   |    \________________________________/\_____________|____|/ \__/         \__/ 
   |                    |                          |    |    |    |           |         
scheme              authority                    path   |    |    interpretable as keys
 name   \_______________________________________________|____|/       \____/     \_____/ 
   |                         |                          |    |          |           |
   |                 hierarchical part                  |    |    interpretable as values
   |                                                    |    |
   |            path               interpretable as filename |
   |   ___________|____________                              |
  / \ /                        \                             |
  urn:example:animal:ferret:nose               interpretable as extension

 scheme
  name  userinfo  hostname       query
  _|__   ___|__   ____|____   _____|_____
 /    \ /      \ /         \ /           \
 mailto:[email protected]?subject=Topic

[edit]Official IANA-registered schemes

The official URI schemes registered with the IANA are as follows (note that "IETF Draft" in no way is a finalized specification and must not be treated so; refer to Section 2.2 of RFC 2026 for more details):

Scheme Purpose Defined by General format Notes
aaa Diameter Protocol RFC 3588 aaa://[:][;transport=][;protocol=]

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

 
aaas Secure equivalent of aaa RFC 3588 aaas://[:][;transport=][;protocol=]  
acap Application Configuration Access Protocol RFC 2244 acap://[[;AUTH=]@][:]/ URL scheme used within the ACAP protocol for the "subdataset" attribute, referrals and inheritance
cap Calendar access protocol RFC 4324 generic syntax URL scheme used to designate both calendar stores and calendars accessible using the CAP protocol
cid Referencing individual parts of an SMTP/MIME message RFC 2111
RFC 2392
cid: e.g. referencing an attached image within a formatted e-mail. (See also mid:)
crid TV-Anytime Content Reference Identifier RFC 4078 crid:/// Allow references to scheduled publications of broadcast media content.
data Inclusion of small data items inline RFC 2397 data:[;base64],  
dav HTTP Extensions for Distributed Authoring (WebDAV) RFC 2518
RFC 4918
dav: Used for internal identifiers only; WebDAV itself addresses resources using the http: andhttps: schemes. [1]
dict Dictionary service protocol RFC 2229 dict://;@:/d:::

dict://;@:/m::::

refer to definitions or word lists available using the DICT protocol
dns Domain Name System RFC 4501 dns:[//[:]/][?]

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

designates a DNS resource record set, referenced by domain name, class, type, and, optionally, the authority
fax Used for telefacsimilenumbers RFC 2806
RFC 3966
fax: Deprecated in RFC 3966 in favour of tel:. Listed as "historical"
file Addressing files on local or network file systems RFC 1738
RFC 3986
file://[host]/path or

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

Since this usually used for local files the host from RFC 1738is often empty leading to a starting triple /. RFC 3986allows an absolute path with no host part.
ftp FTP resources RFC 1738
IETF Draft
Old IETF Draft
generic syntax  
geo A Uniform Resource Identifier for Geographic Locations RFC 5870 geo:,[,][;u=]
(for WGS-84)
Other coordinate reference systems (including those for non-terrestrial globes, such as The Moon and Mars) will be supported, once registered.
go Common Name Resolution Protocol RFC 3368 go://[]?[]*[;=[,]] or
go:*[;=[,]]
 
gopher Used with Gopher protocol RFC 4266 gopher://:/  
h323 Used with H.323 multimedia communications RFC 3508 h323:[@][:][;]  
http HTTP resources RFC 1738
RFC 2616
(makes
RFC 2068
obsolete)
generic syntax  
https HTTP connections secured using SSL/TLS RFC 2817 generic syntax  
iax Inter-Asterisk eXchangeprotocol version 2 RFC 5456 iax:[@][:][/[?]]
examples
iax:[2001:db8::1]:4569/alice?friends
iax:[email protected]/12022561414
icap Internet Content Adaptation Protocol RFC 3507    
im Instant messaging protocol RFC 3860 im:@ Works as xmpp: URI for single user chat sessions.
imap Accessing e-mail resources through IMAP RFC 2192
RFC 5092
imap://[[;AUTH=]@][:]/  
info 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 3981RFC 3983RFC 4992RFC 4992RFC 4993    
ldap LDAP directory request RFC 2255
RFC 4516
ldap://[[:]][/ [?[][?[][?[][?]]]]]

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

 
lsid[dubious ] Life Science Identifier dtc/04-10-08 URN:LSID:::[:]

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

 
mailto SMTP e-mail addresses and default content RFC 1738
RFC 2368
RFC 6068
mailto:
[?=[&=]]

example:
mailto:[email protected]?subject=A%20Test&body=My%20idea%20is%3A%20%0A

Headers are optional, but often include subject=body= can be used to pre-fill the body of the message.
mid Referencing SMTP/MIMEmessages, or parts of messages. RFC 2111
RFC 2392
mid:[/] (See also cid:)
modem modem RFC 2806
RFC 3966
  Deprecated in RFC 3966 in favour of tel:. Listed as "historical"
msrp 
msrps
Message Session Relay Protocol RFC 4975    
mtqp Message Tracking Query Protocol RFC 3887    
mupdate Mailbox Update Protocol RFC 3656    
news (Usenet) newsgroups and postings RFC 1738
RFC 5538
news: or
news:
References a particular resource, regardless of location.
nfs Network File Systemresources RFC 2224 generic syntax  
nntp Usenet NNTP RFC 1738
RFC 5538
nntp://:// Referencing a specific host is often less useful than referencing the resource generically, as NNTP servers are not always publicly accessible
opaquelocktoken opaquelocktoken RFC 2518
RFC 4918
   
pop Accessing mailbox throughPOP3 RFC 2384 pop://[[;AUTH=]@][:]  
pres Used in Common Profile for Presence (CPP) to identify presence RFC 3859 pres:
[?=[&=]]
Similar to "mailto:"
prospero Prospero Directory Service RFC 1738
RFC 4157
  Listed as "Historical" by IANA.
rsync rsync RFC 5781 rsync://[:]/  
rtsp Real Time Streaming Protocol RFC 2326    
service   RFC 2609    
shttp Secure HTTP RFC 2660   Largely superseded by HTTPS.
sieve ManageSieve protocol RFC 5804    
sip Used with Session Initiation Protocol (SIP) RFC 2543
RFC 3969
RFC 3261
sip:[:]@[:][;][?]

examples:
sip:[email protected]?subject=project%20x&priority=urgent
sip:+1-212-555-1212:[email protected];user=phone

 
sips Secure equivalent of sip RFC 3969
RFC 3261
sips:[:]@[:][;][?]  
sms Interact with SMS capable devices for composing and sending messages. RFC 5724 sms:?

examples:
sms:+15105550101?body=hello%20there
sms:+15105550101,+15105550102?body=hello%20there

Should be used as a subset to thetel: schema.[citation needed]
snmp Simple Network Management Protocol RFC 4088 snmp://[user@]host[:port][/[[;]][/]]

examples:
snmp://example.com//1.3.6.1.2.1.1.3+
snmp://[email protected]:8161/bridge1;800002b804616263

 
soap.beep 
soap.beeps
  RFC 3288
RFC 4227
   
tag Tag URI RFC 4151 tag:,: Represented entities do not necessarily have to be accessible electronically.
tel Used for telephone numbers RFC 5341
RFC 3966
RFC 2806
tel:  
telnet Used with telnet RFC 1738
RFC 4248
telnet://:@[:/]  
tftp Trivial File Transfer Protocol RFC 3617    
thismessage multipart/related relative reference resolution RFC 2557    
tip Transaction Internet Protocol RFC 2371    
tv TV Broadcasts RFC 2838    
urn Uniform Resource Names RFC 2141 urn:: Commonly used with namespace 'uuid' (see next row below)
uuid Universally unique identifier RFC 4122 uuid: or urn:uuid::  
vemmi Versatile MultimediaInterface RFC 2122    
wais Used with Wide area information server (WAIS) RFC 1738
RFC 4156
wais://:/[?] or wais://:/// Listed as "Historical" by IANA.
ws 
wss
WebSocket protocol RFC 6455 ws:  
xmlrpc.beep 
xmlrpc.beeps
  RFC 3529    
xmpp XMPP RFC 4622
RFC 5122
xmpp:[]@[:]/[][?]  
z39.50r Z39.50 retrieval RFC 2056 z39.50r://[:]/?[;esn=][;rs=]
z39.50s Z39.50 session RFC 2056 z39.50s://[:]/[][?][;esn=][;rs=]
Scheme Purpose Defined by General format Notes

[edit]Unofficial but common URI schemes

Scheme Purpose Defined by General format Notes
about Displaying product information and internal information IETF Draft See about URI scheme for more details. Widely used by web browsers, sometimes even providing interactive resources. TheOpera web browser forwards to their opera:scheme instead.
adiumxtra Direct installation of Adium Xtras (plugins). The Adium Team adiumxtra://www.adiumxtras.com/download/0000 0000 refers to a specific Xtra
aim Controlling AOL Instant Messenger. AOL aim:? Functions include goimaddbuddy, andbuddyicon.
apt Experimental method of installing software usingAPT.   apt: Commonly found on websites which contain Debian software repositories.
afp Accessing Apple Filing Protocolshares IETF Draft over TCP/IP: afp://[@][:][/[]]

over AppleTalk: afp:/at/[@][:][/]

 
aw Link to an Active Worlds world Activeworlds Inc. aw://:/ Mostly found in HTTP referers when users open a website from within a Active Worlds world.
beshare Open a search query on a BeShare server BeShare source code beshare:/// Mostly used internally, with variants.
bitcoin Send money to aBitcoin address Bitcoin URI Scheme bitcoin:
[?[amount=][&][label=
 
bolo Join an existing bolo game.   bolo:/// Mostly passed via IRC or via tracker servers.
callto Launching Skypecall (+And in Hungary the KLIP Software call too) (unofficial; see alsoskype:) Skype callto: or
callto: [2]
Introduced with Microsoft NetMeeting. Works with current version of Skype withInternet Explorer, Opera and Safari
chrome Specifies user interfaces built using XUL in Mozilla-based browsers. Mozilla chrome:///
/ (Where 
 is either "content", "skin" or "locale")
Works only in Mozilla-based browsers such as Firefox, SeaMonkey and Netscape. Not related to the Google Chrome browser.
coap Accessing Constrained Application Protocol (CoAP) resources. IETF Draft coap://[:]/[?] Identify CoAP resources and provide a means of locating the resource.
content Accessing anAndroid content provider. Open Handset Alliance content://provider/ Performs a query on an Android Content Provider
cvs Provides a link to a Concurrent Versions System(CVS) Repository Concurrent Versions System cvs://@/;[date=date to retrieve | tag=tag to retrieve]  
doi Digital object identifier, a digital identifier for any object of intellectual property. IETF Draft doi:10./
Example: doi:10.1000/182
Used e.g. for most scientific publications.
Can be resolved via HTTP (transormed into an URL) by prependinghttp://dx.doi.org/ orhttp://hdl.handle.net/ in front.
ed2k Resources available using the eDonkey2000network eDonkey2000 ed2k://|file||||/ or
ed2k://|server|||/
Links to servers are also possible, as are additional parameters. Official documentation from eDonkey2000 websiteat the Wayback Machine
facetime FaceTime is a video conferencing software developed by Apple for iPhone 4, the fourth generation iPod Touch, and computers running Mac OS X. Apple Inc. facetime://
||

example:
facetime://+19995551234

Apple has not published documentation on this protocol yet.
feed web feedsubscription   feed: or
feed://

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

See Feed URI scheme for a detailed overview of common implementations, supported software, and critics.
finger Querying user information using theFinger protocol IETF Draft finger://host[:port][/]  
fish Accessing another computer's files using theSSH protocol fish KDE kioslave fish://[[:]@][:] See Files transferred over shell protocolfor details about the protocol.
git Provides a link to a GIT repository Git Github example: git://github.com/user/project-name.git  
gg Starting chat with Gadu-Gaduuser Gadu-Gadu gg:  
gizmoproject Gizmo5 calling link.   gizmoproject://call?id= May use sip:// instead of gizmoproject:// in recent versions of Gizmo5.
gtalk Start a chat with a Google Talk user Google Talk gtalk:[email protected] See Google Talk, XMPP, andhttp://juberti.blogspot.com/2006/11/gtalk-uri.html for more information
irc Connecting to an Internet Relay Chatserver to join a channel. IETF Draft
Old IETF Draft
irc://[:]/[[?]] Assuming the client knows a server associated with the name, "host" may optionally be an IRC network name.
ircs Secure equivalent ofirc IETF Draft ircs://[:]/[[?]] See irc
irc6 IPv6 equivalent of irc   irc6://[:]/[[?]] See irc
itms Used for connecting to the iTunes Music Store Apple Inc itms:  
jar Compressed archive member Java API jar:!/[] Works for any ZIP based file.
javascript ExecuteJavaScript code IETF Draft javascript: Works in any modern browser.
keyparc Keyparc encrypt/decrypt resource. Bloombase keyparc://encrypt// or

keyparc://decrypt//

 
lastfm Connecting to aradio streamfrom Last.fm. Last.fm lastfm:// or lastfm://globaltags/ or
lastfm://user//
 
ldaps Secure equivalent ofldap Old version of IETF Draft ldaps://[[:]][/ [?[][?[][?[][?]]]]] Not an IETF standard, but commonly used in applications.
magnet "magnet links" Magnet-URI Project magnet:?xt=urn:sha1:&dn=
(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= Some mobile web browsers will launch a dedicated mapping application. See also "geo:" (RFC 5870)
market Opens Google Play Android [3]

market://details?id=Package_name or market://search?q=Search_Query or market://search?q=pub:Publisher_Name

Supported by Android devices
message Direct link to specific email message Apple Inc[4] message:

message://

Supported by Mail since OS X 10.5
mms Windows streaming media   mms://:/ 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:[email protected]
Start a conversation with a contact
msnim:[email protected]
Start a voice conversation with a contact
msnim:[email protected]
Start a video conversation with a contact
msnim:[email protected]

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: Click to chat!
mumble Joining a server. Mumble mumble://[username[:password]@]
[:port]/[channelpath]?version=[&title=][&url=]
Official documentation from Mumble website
mvn Access Apache Mavenrepository artifacts OPS4J mvn:org.ops4j.pax.web.bundles/service/0.2.0-SNAPSHOT
mvn:http://user:[email protected]/maven2!org.ops4j.pax.web.bundles/service/0.2.0
 
notes Open a Lotus Notes document or database Lotus Notes notes://
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.
palm Used to designate system services in HP webOS applications HP webOS palm:[/]]/ Official documentation from HP webOS Services Overview
paparazzi Used to launch and automatically take a screen shot using the application "Paparazzi!" (Mac only) Derailer paparazzi:[]http:[//[:[][]]/ Official documentation from the Paparazzi! website
proxy Alter proxy settings in the FoxyProxy application FoxyProxy proxy: Official documentation from FoxyProxy website
psyc Used to identify or locate a person, group, place or a service and specify its ability to communicate PSYC psyc:[//[:[][]]/[][#] Official documentation from PSYC website
query Opens a filesystem query Haiku query: Implemented by the url_wrapper application
rmi Look up a Java object in an RMI registry. Sun rmi://[:]/ 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.
rtmp Real Time Messaging Protocol Adobe Systems rtmp://// URI schema used to connect to Adobe Flash Media Server.
secondlife Open the Map floater in Second Life application to teleport the resident to the location. Linden Lab secondlife:///// Used by SLurl.com. Knowledge base article.
sgn Social Graph Node Mapper Google example:

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

Official documentation from sgnodemapper project.
skype Launching Skypecall (unofficial; see alsocallto:) Skype skype:[?[add|call|chat|sendfile|userinfo]] Official documentation from Skype website.
spotify Load a track, album, artist, search, or playlist in Spotify Spotify spotify:: or
spotify:search: or
spotify:user::playlist:

example:
spotify:track:2jCnn1QPQ3E8ExtLe6INsx

Informally specified in Spotify official blog post by CTO Andreas Ehn.
ssh SSH connections (like telnet:) IETF Draft ssh://[[;fingerprint=]@][:]  
sftp SFTP file transfers (not be to confused with FTPS(FTP/SSL)) IETF Draft sftp://[[;fingerprint=]@][:]//  
smb AccessingSMB/CIFS shares IETF Draft smb://[@][:][/[]][?=[;=]] or
smb://[@][:][/]
 
soldat Joining servers Soldat soldat://:/[password]

example:
soldat://127.0.0.1:23073/thatssecret!

Official note in Manual
steam Interact with Steam: install apps, purchase games, run games, etc. Steam, Valve Corporation steam: or
steam:///
Official documentation from Valve Developer Community website
svn Provides a link to a Subversion (SVN) source control repository Subversion svn[+ssh]://@<:port>/  
teamspeak Joining a server. TeamSpeak teamspeak://[:]/[?=[&=]] Official documentation from TeamSpeak Website
things Send a to-do toThings. Cultured Code things:add?title=Buy%20milk¬es=Low%20fat&dueDate=2011-12-24 This URI scheme works on Mac OS & iOS, providing Things by Cultured Code is installed.
udp BitTorrent tracker protocol based on UDP. BitTorrent udp://[:]/ Documentation: UDP tracker protocol
unreal Joining servers Unreal unreal://[:]/ Unreal legacy "protocol"
ut2004 Joining servers Unreal Tournament 2004 ut2004://[:][/?] Documentation from Unreal Developer Network
ventrilo Joining a server. Ventrilo ventrilo://[:]/[?=[&=]] Official documentation from Ventrilo Website
view-source Shows a web page as code 'in the raw'. IANA registration template view-source:

where is specified in RFC 3986. Example:
view-source:http://en.wikipedia.org/wiki/URI_scheme

See view-source URI scheme for details.
webcal Subscribing to calendars iniCalendarformat iCalendar webcal://

example:
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 for details.
wyciwyg What You Cache Is What You GetWYCIWYG Mozilla wyciwyg:// See WYCIWYG for details.
xfire Adding friends and servers, joining servers, changing status text. Xfire xfire:[?=[&=]] Official documentation from Xfire website
xri eXtensible Resource Identifier (XRI) OASIS XRI Technical Committee xri://[/[]][?][#fragment] Official documentation from OASIS XRI Technical Committee
ymsgr Sending an instant message to a Yahoo! Contact. Yahoo! Messenger ymsgr:sendIM?

你可能感兴趣的:(URI scheme)