|
This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. (July 2009) |
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]
|
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.
username:password@
); a hostname (e.g., domain name or IP address); and an optional port number, preceded by a colon ":".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.
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
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:// example: |
|
aaas | Secure equivalent of aaa | RFC 3588 | aaas:// |
|
acap | Application Configuration Access Protocol | RFC 2244 | acap://[ |
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: |
|
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://
|
refer to definitions or word lists available using the DICT protocol |
dns | Domain Name System | RFC 4501 | dns:[// examples: |
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) |
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: (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://[ orgo: |
|
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:[
|
|
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://[ |
|
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: |
|
lsid[dubious ] | Life Science Identifier | dtc/04-10-08 | URN:LSID: example: |
|
mailto | SMTP e-mail addresses and default content | RFC 1738 RFC 2368 RFC 6068 |
mailto:[? example: |
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: ornews: |
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://[ |
|
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: |
|
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: |
Should be used as a subset to thetel: schema.[citation needed] |
snmp | Simple Network Management Protocol | RFC 4088 | snmp://[user@]host[:port][/[ examples: |
|
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: |
|
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:// |
|
z39.50s | Z39.50 session | RFC 2056 | z39.50s:// |
|
Scheme | Purpose | Defined by | General format | Notes |
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 goim , addbuddy , 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: |
|
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= |
|
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: orcallto: [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:// |
|
doi | Digital object identifier, a digital identifier for any object of intellectual property. | IETF Draft | doi:10. |
Used e.g. for most scientific publications. Can be resolved via HTTP (transormed into an URL) by prepending http://dx.doi.org/ orhttp://hdl.handle.net/ in front. |
ed2k | Resources available using the eDonkey2000network | eDonkey2000 | ed2k://|file| ored2k://|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: |
Apple has not published documentation on this protocol yet. |
feed | web feedsubscription | feed: orfeed:// examples: |
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
|
|
lastfm | Connecting to aradio streamfrom Last.fm. | Last.fm | lastfm:// or lastfm://globaltags/ orlastfm://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: (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] |
|
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
|
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= |
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:[ |
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 | example:
|
Official documentation from sgnodemapper project. | |
skype | Launching Skypecall (unofficial; see alsocallto:) | Skype | skype: |
Official documentation from Skype website. |
spotify | Load a track, album, artist, search, or playlist in Spotify | Spotify | spotify: orspotify:search: orspotify:user: example: |
Informally specified in Spotify official blog post by CTO Andreas Ehn. |
ssh | SSH connections (like telnet:) | IETF Draft | ssh://[ |
|
sftp | SFTP file transfers (not be to confused with FTPS(FTP/SSL)) | IETF Draft | sftp://[ |
|
smb | AccessingSMB/CIFS shares | IETF Draft | smb://[ orsmb://[ |
|
soldat | Joining servers | Soldat | soldat:// example: |
Official note in Manual |
steam | Interact with Steam: install apps, purchase games, run games, etc. | Steam, Valve Corporation | steam: orsteam:// |
Official documentation from Valve Developer Community website |
svn | Provides a link to a Subversion (SVN) source control repository | Subversion | svn[+ssh]:// |
|
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 |
See view-source URI scheme for details. |
webcal | Subscribing to calendars iniCalendarformat | iCalendar | webcal:// example: |
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:// |
Official documentation from OASIS XRI Technical Committee |
ymsgr | Sending an instant message to a Yahoo! Contact. | Yahoo! Messenger | ymsgr:sendIM? |