One document matched: draft-nandakumar-rtcweb-stun-uri-01.xml
<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc compact="yes" ?>
<?rfc strict="no" ?>
<?rfc symrefs="yes" ?>
<?rfc toc="yes" ?>
<rfc category="std" docName="draft-nandakumar-rtcweb-stun-uri-01" ipr="noModificationTrust200902">
<front>
<title abbrev="STUN URI">URI Scheme for Session Traversal Utilities for NAT (STUN) Protocol</title>
<author fullname="Suhas Nandakumar" initials="S" surname="Nandakumar">
<organization>Cisco Systems</organization>
<address>
<postal>
<street>170 West Tasman Drive</street>
<city>San Jose</city>
<region>CA</region>
<code>95134</code>
<country>US</country>
</postal>
<email>snandaku@cisco.com</email>
</address>
</author>
<author fullname="Gonzalo Salgueiro" initials="G.S." surname="Salgueiro">
<organization>Cisco Systems</organization>
<address>
<postal>
<street>7200-12 Kit Creek Road</street>
<city>Research Triangle Park</city>
<region>NC</region>
<code>27709</code>
<country>US</country>
</postal>
<email>gsalguei@cisco.com</email>
</address>
</author>
<author fullname="Paul E. Jones" initials="P.J." surname="Jones">
<organization>Cisco Systems</organization>
<address>
<postal>
<street>7025 Kit Creek Road</street>
<city>Research Triangle Park</city>
<region>NC</region>
<code>27709</code>
<country>US</country>
</postal>
<email>paulej@packetizer.com</email>
</address>
</author>
<author fullname="Marc Petit-Huguenin" initials="M.P.H" surname="Petit-Huguenin">
<organization>Unaffiliated</organization>
<address>
<email>petithug@acm.org</email>
</address>
</author>
<date day="12" month="March" year="2012"/>
<area>Real Time Applications and Infrastructure</area>
<workgroup>RTCWEB</workgroup>
<abstract>
<t>
This document is the specification of the syntax and semantics of the Uniform Resource Identifier (URI) scheme for the Session Traversal Utilities for NAT (STUN) protocol.
</t>
</abstract>
</front>
<middle>
<section title="Introduction">
<t>This document specifies the syntax and semantics of the Uniform Resource Identifier (URI) scheme for the Session Traversal Utilities for NAT (STUN) protocol.</t>
<t>
STUN is a protocol that serves as a tool for other protocols in dealing with
Network Address Translator (NAT) traversal. It can be used by an endpoint to
determine the IP address and port allocated to it by a NAT, to perform
connectivity checks between two endpoints, and used as a keepalive protocol
to maintain NAT bindings. RFC 5389 <xref target="RFC5389"></xref> defines the
specifics of the STUN protocol.
</t>
<t>
The 'stun/stuns' URI scheme is used to designate a standalone STUN server or any Internet host performing the
operations of a STUN server in the context of STUN usages (Section 14 RFC 5389 <xref target="RFC5389"></xref>).
With the advent of standards such as WEBRTC <xref target="WEBRTC"></xref>, we anticipate a plethora of endpoints and
web applications to be able to identify and communicate with such a STUN server to carry out the STUN protocol.
This also implies those endpoints and/or applications to be provisioned with appropriate configuration required
to identify the STUN server. Having an inconsistent syntax has its drawbacks and can result in non-interoperable
solutions. It can result in solutions that are ambiguous and have implementation limitations on the different
aspects of the syntax and alike. The 'stun/stuns' URI scheme helps alleviate most of these issues by providing a consistent
way to describe, configure and exchange the information identifying a STUN server. This would also prevent the
shortcomings inherent with encoding similar information in non-uniform syntaxes such as the ones proposed in
the WEBRTC Standards <xref target="WEBRTC"></xref>, for example.
</t>
<t>
A reference implementation [REF-IMPL] is available.
</t>
</section>
<section title="Terminology">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in <xref target="RFC2119"/>.</t>
<t>
"SHOULD", "SHOULD NOT", "RECOMMENDED", and "NOT RECOMMENDED" are appropriate when valid exceptions to a general requirement are known to exist or appear to exist, and it is infeasible or impractical to enumerate all of them.
However, they should not be interpreted as permitting implementors to fail to implement the general requirement when such failure would result in interoperability failure.
</t>
</section>
<section anchor="syntax" title="Syntax of a STUN or STUNS URI">
<section anchor="URI_Scheme_Syntax" title="URI Scheme Syntax">
<t>The "stun" URI takes the following form (the example below is non-normative):</t>
<t>
<list>
<t>stun:<stun-host>:<stun-port></t>
<t>stuns:<stun-host>:<stun-port></t>
</list>
</t>
<t>Note that the <port> part and the preceding ":" (colon) character, is OPTIONAL.</t>
<t>A STUN/STUNS URI has the following formal ABNF syntax <xref target="RFC5234"/>:</t>
<figure>
<artwork type="abnf"><![CDATA[
stunURI = scheme ":" stun-host [ ":" stun-port ]
scheme = "stun" / "stuns"
stun-host = IP-literal / IPv4address / reg-name
stun-port = *DIGIT
IP-literal = "[" ( IPv6address / IPvFuture ) "]"
IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )
IPv6address = 6( h16 ":" ) ls32
/ "::" 5( h16 ":" ) ls32
/ [ h16 ] "::" 4( h16 ":" ) ls32
/ [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
/ [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
/ [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32
/ [ *4( h16 ":" ) h16 ] "::" ls32
/ [ *5( h16 ":" ) h16 ] "::" h16
/ [ *6( h16 ":" ) h16 ] "::"
h16 = 1*4HEXDIG
ls32 = ( h16 ":" h16 ) / IPv4address
IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet
dec-octet = DIGIT ; 0-9
/ %x31-39 DIGIT ; 10-99
/ "1" 2DIGIT ; 100-199
/ "2" %x30-34 DIGIT ; 200-249
/ "25" %x30-35 ; 250-255
reg-name = *( unreserved / pct-encoded / sub-delims )
]]></artwork>
</figure>
<t>
<unreserved>, <sub-delims>, and <pct-encoded> are specified in <xref target="RFC3986"/>.
The core rules <DIGIT> and <HEXDIGIT> are used as described in Appendix B of RFC 5234 <xref target="RFC5234"/>.
</t>
</section>
<section anchor="URI_Scheme_Semantics" title="URI Scheme Semantics">
<t>
The STUN protocol supports sending messages over UDP, TCP or TLS-over-TCP.
The "stuns" URI scheme SHALL be used when STUN is run over TLS-over-TCP (or in the future DTLS-over-UDP) and the "stun" scheme SHALL be used otherwise.
</t>
<t>
The required <stun-host> part of the "stun" URI denotes the STUN server host.
</t>
<t>
For the optional DNS Discovery procedure mentioned in the Section 9 of RFC5389, "stun" URI scheme implies UDP as the transport protocol
for SRV lookup and "stuns" URI scheme indicates TCP as the transport protocol.
</t>
<t>
The <stun-port> part, if present, denotes the port on which the STUN server is awaiting connection requests.
If it is absent, the default port is 3478 for both UDP and TCP and 5349 for STUN over TLS as per Section 9 of RFC 5389 <xref target="RFC5389"></xref>.
</t>
</section>
</section>
<section anchor="security" title="Security Considerations">
<t>The "stun" and "stuns" URI schemes do not introduce any specific security issues beyond the security considerations discussed in <xref target="RFC3986"/>.</t>
</section>
<section title="IANA Considerations">
<t>This section contains the registration information for the "stun" and "stuns" URI Schemes (in accordance with <xref target="RFC4395"/>).</t>
<section title="STUN URI Registration">
<t>URI scheme name: stun</t>
<t>Status: permanent</t>
<t>URI scheme syntax: See <xref target="URI_Scheme_Syntax"/>.</t>
<t>URI scheme semantics: See <xref target="URI_Scheme_Semantics"/>.</t>
<t>Encoding considerations: There are no encoding considerations beyond those in <xref target="RFC3986"/>.</t>
<t>Applications/protocols that use this URI scheme name:</t>
<t>
<list>
<t>The "stun" URI scheme is intended to be used by applications that might need access to a STUN server.</t>
</list>
</t>
<t>Interoperability considerations: N/A</t>
<t>Security considerations: See <xref target="security"/>.</t>
<t>Contact: Suhas Nandakumar <snandaku@cisco.com></t>
<t>Author/Change controller: The IESG</t>
<t>References: RFC&rfc.number;</t>
<t>[[NOTE TO RFC EDITOR: Please change &rfc.number; to the number assigned to this specification, and remove this paragraph on publication.]]</t>
</section>
<section title="STUNS URI Registration">
<t>URI scheme name: stuns</t>
<t>Status: permanent</t>
<t>URI scheme syntax: See <xref target="URI_Scheme_Syntax"/>.</t>
<t>URI scheme semantics: See <xref target="URI_Scheme_Semantics"/>.</t>
<t>Encoding considerations: There are no encoding considerations beyond those in <xref target="RFC3986"/>.</t>
<t>Applications/protocols that use this URI scheme name:</t>
<t>
<list>
<t>The "stuns" URI scheme is intended to be used by applications that might need access to a STUN server over a secure connection.</t>
</list>
</t>
<t>Interoperability considerations: N/A</t>
<t>Security considerations: See <xref target="security"/>.</t>
<t>Contact: Suhas Nandakumar <snandaku@cisco.com></t>
<t>Author/Change controller: The IESG</t>
<t>References: RFC&rfc.number;</t>
<t>[[NOTE TO RFC EDITOR: Please change &rfc.number; to the number assigned to this specification, and remove this paragraph on publication.]]</t>
</section>
</section>
<section title="Acknowledgements">
<t>Many thanks to Cullen Jennings for his detailed review and thoughtful comments on this document.</t>
<t>This document was written with the xml2rfc tool described in <xref target="RFC2629"/>.</t>
</section>
</middle>
<back>
<references title="Normative References">
<reference anchor="RFC2119">
<front>
<title abbrev="RFC Key Words">Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname="Scott Bradner" initials="S." surname="Bradner">
<organization>Harvard University</organization>
<address>
<postal>
<street>1350 Mass. Ave.</street>
<street>Cambridge</street>
<street>MA 02138</street>
</postal>
<phone>- +1 617 495 3864</phone>
<email>sob@harvard.edu</email>
</address>
</author>
<date month="March" year="1997"/>
<area>General</area>
<keyword>keyword</keyword>
<abstract>
<t>
In many standards track documents several words are used to signify
the requirements in the specification. These words are often
capitalized. This document defines these words as they should be
interpreted in IETF documents. Authors who follow these guidelines
should incorporate this phrase near the beginning of their document:
<list>
<t>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
RFC 2119.
</t>
</list>
</t>
<t>
Note that the force of these words is modified by the requirement
level of the document in which they are used.
</t>
</abstract>
</front>
<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="2119"/>
<format octets="4723" target="http://www.rfc-editor.org/rfc/rfc2119.txt" type="TXT"/>
<format octets="17491" target="http://xml.resource.org/public/rfc/html/rfc2119.html" type="HTML"/>
<format octets="5777" target="http://xml.resource.org/public/rfc/xml/rfc2119.xml" type="XML"/>
</reference>
<reference anchor="RFC3986">
<front>
<title abbrev="URI Generic Syntax">Uniform Resource Identifier (URI): Generic Syntax</title>
<author fullname="Tim Berners-Lee" initials="T." surname="Berners-Lee">
<organization abbrev="W3C/MIT">World Wide Web Consortium</organization>
<address>
<postal>
<street>Massachusetts Institute of Technology</street>
<street>77 Massachusetts Avenue</street>
<city>Cambridge</city>
<region>MA</region>
<code>02139</code>
<country>USA</country>
</postal>
<phone>+1-617-253-5702</phone>
<facsimile>+1-617-258-5999</facsimile>
<email>timbl@w3.org</email>
<uri>http://www.w3.org/People/Berners-Lee/</uri>
</address>
</author>
<author fullname="Roy T. Fielding" initials="R." surname="Fielding">
<organization abbrev="Day Software">Day Software</organization>
<address>
<postal>
<street>5251 California Ave., Suite 110</street>
<city>Irvine</city>
<region>CA</region>
<code>92617</code>
<country>USA</country>
</postal>
<phone>+1-949-679-2960</phone>
<facsimile>+1-949-679-2972</facsimile>
<email>fielding@gbiv.com</email>
<uri>http://roy.gbiv.com/</uri>
</address>
</author>
<author fullname="Larry Masinter" initials="L." surname="Masinter">
<organization abbrev="Adobe Systems">Adobe Systems Incorporated</organization>
<address>
<postal>
<street>345 Park Ave</street>
<city>San Jose</city>
<region>CA</region>
<code>95110</code>
<country>USA</country>
</postal>
<phone>+1-408-536-3024</phone>
<email>LMM@acm.org</email>
<uri>http://larry.masinter.net/</uri>
</address>
</author>
<date month="January" year="2005"/>
<area>Applications</area>
<keyword>uniform resource identifier</keyword>
<keyword>URI</keyword>
<keyword>URL</keyword>
<keyword>URN</keyword>
<keyword>WWW</keyword>
<keyword>resource</keyword>
<abstract>
<t>
A Uniform Resource Identifier (URI) is a compact sequence of characters
that identifies an abstract or physical resource. This specification
defines the generic URI syntax and a process for resolving URI references
that might be in relative form, along with guidelines and security
considerations for the use of URIs on the Internet.
The URI syntax defines a grammar that is a superset of all valid URIs,
allowing an implementation to parse the common components of a URI
reference without knowing the scheme-specific requirements of every
possible identifier. This specification does not define a generative
grammar for URIs; that task is performed by the individual
specifications of each URI scheme.
</t>
</abstract>
</front>
<seriesInfo name="STD" value="66"/>
<seriesInfo name="RFC" value="3986"/>
<format octets="141811" target="http://www.rfc-editor.org/rfc/rfc3986.txt" type="TXT"/>
<format octets="213584" target="http://xml.resource.org/public/rfc/html/rfc3986.html" type="HTML"/>
<format octets="163534" target="http://xml.resource.org/public/rfc/xml/rfc3986.xml" type="XML"/>
</reference>
<reference anchor="RFC5234">
<front>
<title>Augmented BNF for Syntax Specifications: ABNF</title>
<author fullname="D. Crocker" initials="D." surname="Crocker">
<organization/>
</author>
<author fullname="P. Overell" initials="P." surname="Overell">
<organization/>
</author>
<date month="January" year="2008"/>
<abstract>
<t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="STD" value="68"/>
<seriesInfo name="RFC" value="5234"/>
<format octets="26359" target="http://www.rfc-editor.org/rfc/rfc5234.txt" type="TXT"/>
</reference>
</references>
<references title="Informative References">
<reference anchor="RFC2629">
<front>
<title>Writing I-Ds and RFCs using XML</title>
<author fullname="Marshall T. Rose" initials="M.T." surname="Rose">
<organization>Invisible Worlds, Inc.</organization>
<address>
<postal>
<street>660 York Street</street>
<city>San Francisco</city>
<region>CA</region>
<code>94110</code>
<country>US</country>
</postal>
<phone>+1 415 695 3975</phone>
<email>mrose@not.invisible.net</email>
<uri>http://invisible.net/</uri>
</address>
</author>
<date month="June" year="1999"/>
<area>General</area>
<keyword>RFC</keyword>
<keyword>Request for Comments</keyword>
<keyword>I-D</keyword>
<keyword>Internet-Draft</keyword>
<keyword>XML</keyword>
<keyword>Extensible Markup Language</keyword>
<abstract>
<t>This memo presents a technique for using XML
(Extensible Markup Language)
as a source format for documents in the Internet-Drafts (I-Ds) and
Request for Comments (RFC) series.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="2629"/>
<format octets="48677" target="http://www.rfc-editor.org/rfc/rfc2629.txt" type="TXT"/>
<format octets="71741" target="http://xml.resource.org/public/rfc/html/rfc2629.html" type="HTML"/>
<format octets="53481" target="http://xml.resource.org/public/rfc/xml/rfc2629.xml" type="XML"/>
</reference>
<reference anchor="RFC4395">
<front>
<title>Guidelines and Registration Procedures for New URI Schemes</title>
<author fullname="T. Hansen" initials="T." surname="Hansen">
<organization/>
</author>
<author fullname="T. Hardie" initials="T." surname="Hardie">
<organization/>
</author>
<author fullname="L. Masinter" initials="L." surname="Masinter">
<organization/>
</author>
<date month="February" year="2006"/>
<abstract>
<t>This document provides guidelines and recommendations for the definition of Uniform Resource Identifier (URI) schemes. It also updates the process and IANA registry for URI schemes. It obsoletes both RFC 2717 and RFC 2718. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="35"/>
<seriesInfo name="RFC" value="4395"/>
<format octets="31933" target="http://www.rfc-editor.org/rfc/rfc4395.txt" type="TXT"/>
</reference>
<reference anchor="RFC5389">
<front>
<title>Session Traversal Utilities for NAT (STUN)</title>
<author fullname="J. Rosenberg" initials="J." surname="Rosenberg">
<organization/>
</author>
<author fullname="R. Mahy" initials="R." surname="Mahy">
<organization/>
</author>
<author fullname="P. Matthews" initials="P." surname="Matthews">
<organization/>
</author>
<author fullname="D. Wing" initials="D." surname="Wing">
<organization/>
</author>
<date month="October" year="2008"/>
<abstract>
<t>Session Traversal Utilities for NAT (STUN) is a protocol that serves as a tool for other protocols in dealing with Network Address Translator (NAT) traversal. It can be used by an endpoint to determine the IP address and port allocated to it by a NAT. It can also be used to check connectivity between two endpoints, and as a keep-alive protocol to maintain NAT bindings. STUN works with many existing NATs, and does not require any special behavior from them.</t><t> STUN is not a NAT traversal solution by itself. Rather, it is a tool to be used in the context of a NAT traversal solution. This is an important change from the previous version of this specification (RFC 3489), which presented STUN as a complete solution.</t><t> This document obsoletes RFC 3489. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="5389"/>
<format octets="125650" target="http://www.rfc-editor.org/rfc/rfc5389.txt" type="TXT"/>
</reference>
<reference anchor="WEBRTC">
<front>
<title>WebRTC 1.0: Real-time Communication Between Browsers</title>
<author fullname="W3C" initials="" surname="W3C">
<organization/>
</author>
</front>
<annotation>
<eref target="http://dev.w3.org/2011/webrtc/editor/webrtc.html"/>.</annotation>
</reference>
<reference anchor="REF-IMPL">
<front>
<title>Reference Implementation of STUN URI parser</title>
<author fullname="Marc Petit-Huguenin" initials="MPH" surname="Petit-Huguenin">
<organization/>
</author>
</front>
<annotation>
<eref target="http://debian.implementers.org/stable/source/stunuri.tar.gz"/>.</annotation>
</reference>
</references>
<section title="Examples">
<t>
<xref target="examples1"/> shows examples for 'stun/stuns'uri scheme.
For all these examples, the <host> component is populated with "example.org".
</t>
<texttable anchor="examples1">
<ttcol>URI</ttcol>
<c>stun:example.org</c>
<c>stuns:example.org</c>
<c>stun:example.org:8000</c>
</texttable>
</section>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-23 19:35:13 |