One document matched: draft-jennings-http-srv-03.xml


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en"><head><title>DNS SRV Records for HTTP</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="DNS SRV Records for HTTP">
<meta name="generator" content="xml2rfc v1.34pre2 (http://xml.resource.org/)">
<style type='text/css'><!--
        body {
                font-family: verdana, charcoal, helvetica, arial, sans-serif;
                font-size: small; color: #000; background-color: #FFF;
                margin: 2em;
        }
        h1, h2, h3, h4, h5, h6 {
                font-family: helvetica, monaco, "MS Sans Serif", arial, sans-serif;
                font-weight: bold; font-style: normal;
        }
        h1 { color: #900; background-color: transparent; text-align: right; }
        h3 { color: #333; background-color: transparent; }

        td.RFCbug {
                font-size: x-small; text-decoration: none;
                width: 30px; height: 30px; padding-top: 2px;
                text-align: justify; vertical-align: middle;
                background-color: #000;
        }
        td.RFCbug span.RFC {
                font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
                font-weight: bold; color: #666;
        }
        td.RFCbug span.hotText {
                font-family: charcoal, monaco, geneva, "MS Sans Serif", helvetica, verdana, sans-serif;
                font-weight: normal; text-align: center; color: #FFF;
        }

        table.TOCbug { width: 30px; height: 15px; }
        td.TOCbug {
                text-align: center; width: 30px; height: 15px;
                color: #FFF; background-color: #900;
        }
        td.TOCbug a {
                font-family: monaco, charcoal, geneva, "MS Sans Serif", helvetica, sans-serif;
                font-weight: bold; font-size: x-small; text-decoration: none;
                color: #FFF; background-color: transparent;
        }

        td.header {
                font-family: arial, helvetica, sans-serif; font-size: x-small;
                vertical-align: top; width: 33%;
                color: #FFF; background-color: #666;
        }
        td.author { font-weight: bold; font-size: x-small; margin-left: 4em; }
        td.author-text { font-size: x-small; }

        /* info code from SantaKlauss at http://www.madaboutstyle.com/tooltip2.html */
        a.info {
                /* This is the key. */
                position: relative;
                z-index: 24;
                text-decoration: none;
        }
        a.info:hover {
                z-index: 25;
                color: #FFF; background-color: #900;
        }
        a.info span { display: none; }
        a.info:hover span.info {
                /* The span will display just on :hover state. */
                display: block;
                position: absolute;
                font-size: smaller;
                top: 2em; left: -5em; width: 15em;
                padding: 2px; border: 1px solid #333;
                color: #900; background-color: #EEE;
                text-align: left;
        }

        a { font-weight: bold; }
        a:link    { color: #900; background-color: transparent; }
        a:visited { color: #633; background-color: transparent; }
        a:active  { color: #633; background-color: transparent; }

        p { margin-left: 2em; margin-right: 2em; }
        p.copyright { font-size: x-small; }
        p.toc { font-size: small; font-weight: bold; margin-left: 3em; }
        table.toc { margin: 0 0 0 3em; padding: 0; border: 0; vertical-align: text-top; }
        td.toc { font-size: small; font-weight: bold; vertical-align: text-top; }

        ol.text { margin-left: 2em; margin-right: 2em; }
        ul.text { margin-left: 2em; margin-right: 2em; }
        li      { margin-left: 3em; }

        /* RFC-2629 <spanx>s and <artwork>s. */
        em     { font-style: italic; }
        strong { font-weight: bold; }
        dfn    { font-weight: bold; font-style: normal; }
        cite   { font-weight: normal; font-style: normal; }
        tt     { color: #036; }
        tt, pre, pre dfn, pre em, pre cite, pre span {
                font-family: "Courier New", Courier, monospace; font-size: small;
        }
        pre {
                text-align: left; padding: 4px;
                color: #000; background-color: #CCC;
        }
        pre dfn  { color: #900; }
        pre em   { color: #66F; background-color: #FFC; font-weight: normal; }
        pre .key { color: #33C; font-weight: bold; }
        pre .id  { color: #900; }
        pre .str { color: #000; background-color: #CFF; }
        pre .val { color: #066; }
        pre .rep { color: #909; }
        pre .oth { color: #000; background-color: #FCF; }
        pre .err { background-color: #FCC; }

        /* RFC-2629 <texttable>s. */
        table.all, table.full, table.headers, table.none {
                font-size: small; text-align: center; border-width: 2px;
                vertical-align: top; border-collapse: collapse;
        }
        table.all, table.full { border-style: solid; border-color: black; }
        table.headers, table.none { border-style: none; }
        th {
                font-weight: bold; border-color: black;
                border-width: 2px 2px 3px 2px;
        }
        table.all th, table.full th { border-style: solid; }
        table.headers th { border-style: none none solid none; }
        table.none th { border-style: none; }
        table.all td {
                border-style: solid; border-color: #333;
                border-width: 1px 2px;
        }
        table.full td, table.headers td, table.none td { border-style: none; }

        hr { height: 1px; }
        hr.insert {
                width: 80%; border-style: none; border-width: 0;
                color: #CCC; background-color: #CCC;
        }
--></style>
</head>
<body>
<table summary="layout" width="66%" border="0" cellpadding="0" cellspacing="0"><tr><td><table summary="layout" width="100%" border="0" cellpadding="2" cellspacing="1">
<tr><td class="header">Network Working Group</td><td class="header">C. Jennings</td></tr>
<tr><td class="header">Internet-Draft</td><td class="header">Cisco Systems</td></tr>
<tr><td class="header">Intended status:  Informational</td><td class="header">February 24, 2009</td></tr>
<tr><td class="header">Expires:  August 28, 2009</td><td class="header"> </td></tr>
</table></td></tr></table>
<h1><br />DNS SRV Records for HTTP<br />draft-jennings-http-srv-03</h1>

<h3>Status of this Memo</h3>
<p>
This Internet-Draft is submitted to IETF in full
conformance with the provisions of BCP 78 and BCP 79.</p>
<p>
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups.
Note that other groups may also distribute working documents as
Internet-Drafts.</p>
<p>
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any time.
It is inappropriate to use Internet-Drafts as reference material or to cite
them other than as “work in progress.”</p>
<p>
The list of current Internet-Drafts can be accessed at
<a href='http://www.ietf.org/ietf/1id-abstracts.txt'>http://www.ietf.org/ietf/1id-abstracts.txt</a>.</p>
<p>
The list of Internet-Draft Shadow Directories can be accessed at
<a href='http://www.ietf.org/shadow.html'>http://www.ietf.org/shadow.html</a>.</p>
<p>
This Internet-Draft will expire on August 28, 2009.</p>

<h3>Copyright Notice</h3>
<p>
Copyright (c) 2009 IETF Trust and the persons identified as the
document authors.  All rights reserved.</p>
<p>
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document.  Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document.</p>

<h3></h3>

<p>This document may contain material from IETF Documents or IETF
      Contributions published or made publicly available before November 10,
      2008. The person(s) controlling the copyright in some of this material
      may not have granted the IETF Trust the right to allow modifications of
      such material outside the IETF Standards Process. Without obtaining an
      adequate license from the person(s) controlling the copyright in such
      materials, this document may not be modified outside the IETF Standards
      Process, and derivative works of it may not be created outside the IETF
      Standards Process, except to format it for publication as an RFC or to
      translate it into languages other than English.
</p>
<h3>Abstract</h3>

<p>This document specifies a new URI scheme called http+srv which uses a
      DNS SRV lookup to locate a HTTP server. The http+srv scheme operates in
      the same way as an http scheme but instead of the normal DNS lookup that
      a http scheme would use, it first tries an DNS SRV lookup. This memo
      also defines a https+srv scheme that operates in the same way as an
      https URI but uses DNS SRV lookups.
</p>
<p>The draft is being discussed on the apps-discuss@ietf.org list.
</p>
<h3>Legal</h3>

<p>This documents and the information contained therein are provided on
      an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
      OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
      THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
      IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
      INFORMATION THEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
      WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
</p>
<a name="anchor1"></a><br /><hr />
<a name="rfc.section.1"></a><h3>1. 
Introduction</h3>

<p>Web services often define APIs where software running on machine in a
      data center acts as an HTTP client and performs some http transactions
      to another HTTP server. For example, a portal such as Facebook can act
      as a http client and call specific HTTP-based APIs on other http
      servers. The reality of current networks is a large portion of the hosts
      have NATed addresses and often can not run on port 80. This is likely to
      become more common with the deployment of Carrier Grade NAT. DNS SRV
      records allow a DNS lookup of a name like www.example.com to provide
      both a port and the IP addresses of the HTTP server.
</p>
<p>This specification defines two new URI schemes, http+srv, and
      https+srv which are like http and https respectively. When a http client
      uses one of theses schemes to locate a web server, it starts by doing a
      DNS SRV record lookup and if one is found, uses that result. If no SRV
      record is found, it falls back to a DNS address (A or AAAA) record. The
      specification does not update or modify HTTP in any way.
</p>
<p>It is not expected that most web browsers would support these schemes
      for generic web use. It would instead be used for particular
      applications using HTTP such as specific web APIs. These APIs would be
      defined to require the use of this specification. In this situation, the
      end user's web browser might not do the SRV lookup when it browsed to
      the portal web pages, but the HTTP calls that the portal made out to
      other sites to generate the content would use this mechanism. As such
      architectures become more common, DNS SRV would allow many servers that
      are just providing an API to run on ports other than 80 even though main
      portal sites may still be running on the well known ports. Eventually,
      web browsers may end up supporting these SRV lookups, as the
      implementation is trivial and has very little downside.
</p>
<p>This technique is useful where users wish to run a web server behind
      a NAT but cannot control which port the NAT will allocate for the
      service. It is also useful where several users want to run different web
      servers on the same machine. A third use case for HTTP SRV is a
      situation in which all requests should be sent to a primary server, but
      if that server is down, then requests should fall back to an alternative
      server.
</p>
<a name="anchor2"></a><br /><hr />
<a name="rfc.section.2"></a><h3>2. 
Terminology</h3>

<p>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 <a class='info' href='#RFC2119'>RFC 2119<span> (</span><span class='info'>Bradner, S., “Key words for use in RFCs to Indicate           Requirement Levels,” March 1997.</span><span>)</span></a> [RFC2119].
</p>
<a name="anchor3"></a><br /><hr />
<a name="rfc.section.3"></a><h3>3. 
Mechanisms</h3>

<p>Applications compliant with this specification MUST perform an SRV
      lookup as specified in <a class='info' href='#RFC2782'>[RFC2782]<span> (</span><span class='info'>Gulbrandsen, A., Vixie, P., and L. Esibov, “A DNS RR for specifying the location of           services (DNS SRV),” February 2000.</span><span>)</span></a> when resolving the
      host portion of a http+srv or https+srv URI. As defined in the IANA port
      numbers registry, the service names used are _http and _https
      respectively. As described in RFC 2782, if no SRV record is present, the
      resolution will fall back on using other DNS records that would be used
      by a http scheme as defined in HTTP<a class='info' href='#RFC2616'>[RFC2616]<span> (</span><span class='info'>Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., and T. Berners-Lee, “Hypertext Transfer Protocol --           HTTP/1.1,” June 1999.</span><span>)</span></a>. The
      rest of the http+srv URI is processed in the same way as an http URI in
      RFC 2616 while the rest of a https+srv scheme URI is processed the same
      way as a https URI as defined in <a class='info' href='#RFC2818'>[RFC2818]<span> (</span><span class='info'>Rescorla, E., “HTTP Over TLS,” May 2000.</span><span>)</span></a>.
</p>
<a name="anchor4"></a><br /><hr />
<a name="rfc.section.4"></a><h3>4. 
Example</h3>

<p>In the following example, the client will do a lookup on the URI,
      which finds the SRV record that then points at the A record that points
      at the IP address.
</p><br /><hr class="insert" />
<a name="fig-arch64"></a>
<div style='display: table; width: 0; margin-left: 3em; margin-right: auto'><pre>
URI: https+srv://example.com
DNS SRV RR: _https._tcp.example.com. SRV 1 0 8080 host1.example.com.
DNS A RR:   host1.example.com.       A   192.0.2.88
</pre></div><table border="0" cellpadding="0" cellspacing="2" align="center"><tr><td align="center"><font face="monaco, MS Sans Serif" size="1"><b> Figure 1 </b></font><br /></td></tr></table><hr class="insert" />

<p>In this case the client would form a TCP connection to
      192.0.2.88:8080 then start TLS over that connection. Note that the
      certificate in the TLS handshake would be matched to example.com as that
      was the names used in the URI and it would not be matched to
      host1.example.com.
</p>
<a name="anchor5"></a><br /><hr />
<a name="rfc.section.5"></a><h3>5. 
IANA Considerations</h3>

<p>This specification registers two provisional URI schemes.
</p>
<a name="anchor6"></a><br /><hr />
<a name="rfc.section.5.1"></a><h3>5.1. 
http+srv URI scheme</h3>

<p></p>
<blockquote class="text"><dl>
<dt>URI scheme name:</dt>
<dd>
</dd>
<dt></dt>
<dd>http+srv
</dd>
<dt>Status:</dt>
<dd>
</dd>
<dt></dt>
<dd>provisional
</dd>
<dt>URI scheme syntax:</dt>
<dd>
</dd>
<dt></dt>
<dd>Identical to http URI as defined in RFC 2616 but using the
            'http+srv' protocol identifier in place of the 'http' protocol
            identifier
</dd>
<dt>URI scheme semantics:</dt>
<dd>
</dd>
<dt></dt>
<dd>See draft-jennings-http-uri
</dd>
<dt>Encoding considerations:</dt>
<dd>
</dd>
<dt></dt>
<dd>No special considerations
</dd>
<dt>Applications/protocols that use this URI scheme name:</dt>
<dd>
</dd>
<dt></dt>
<dd>Applications which need to lookup http servers using DNS
            SRV
</dd>
<dt>Interoperability considerations.:</dt>
<dd>
</dd>
<dt></dt>
<dd>None known
</dd>
<dt>Security considerations.:</dt>
<dd>
</dd>
<dt></dt>
<dd>Same as http URI. See RFC 2616
</dd>
<dt>Contact.:</dt>
<dd>
</dd>
<dt></dt>
<dd>Cullen Jennings <fluffy@cisco.com>
</dd>
<dt>Author/Change controller.:</dt>
<dd>
</dd>
<dt></dt>
<dd>Cullen Jennings <fluffy@cisco.com>
</dd>
<dt> References.:</dt>
<dd>
</dd>
<dt></dt>
<dd>draft-jennings-http-srv
</dd>
<dt></dt>
<dd>RFC 3986
</dd>
<dt></dt>
<dd>RFC 2616
</dd>
</dl></blockquote>

<a name="anchor7"></a><br /><hr />
<a name="rfc.section.5.2"></a><h3>5.2. 
https+srv URI scheme</h3>

<p></p>
<blockquote class="text"><dl>
<dt>URI scheme name:</dt>
<dd>
</dd>
<dt></dt>
<dd>https+srv
</dd>
<dt>Status:</dt>
<dd>
</dd>
<dt></dt>
<dd>provisional
</dd>
<dt>URI scheme syntax:</dt>
<dd>
</dd>
<dt></dt>
<dd>Identical to http URI as defined in RFC 2818 but using the
            'https+srv' protocol identifier in place of the 'https' protocol
            identifier
</dd>
<dt>URI scheme semantics:</dt>
<dd>
</dd>
<dt></dt>
<dd>See draft-jennings-http-uri
</dd>
<dt>Encoding considerations:</dt>
<dd>
</dd>
<dt></dt>
<dd>No special considerations
</dd>
<dt>Applications/protocols that use this URI scheme name:</dt>
<dd>
</dd>
<dt></dt>
<dd>Applications which need to lookup http servers using DNS
            SRV
</dd>
<dt>Interoperability considerations.:</dt>
<dd>
</dd>
<dt></dt>
<dd>None known
</dd>
<dt>Security considerations.:</dt>
<dd>
</dd>
<dt></dt>
<dd>Same as https URI. See RFC 2818
</dd>
<dt>Contact.:</dt>
<dd>
</dd>
<dt></dt>
<dd>Cullen Jennings <fluffy@cisco.com>
</dd>
<dt>Author/Change controller.:</dt>
<dd>
</dd>
<dt></dt>
<dd>Cullen Jennings <fluffy@cisco.com>
</dd>
<dt> References.:</dt>
<dd>
</dd>
<dt></dt>
<dd>draft-jennings-http-srv
</dd>
<dt></dt>
<dd>RFC 3986
</dd>
<dt></dt>
<dd>RFC 2818
</dd>
</dl></blockquote>

<a name="anchor8"></a><br /><hr />
<a name="rfc.section.6"></a><h3>6. 
Security Considerations</h3>

<p>This introduces no new security considerations beyond the common
      usage of HTTP. It is analogous to DNS CNAME records that redirect
      address records.
</p>
<a name="acks"></a><br /><hr />
<a name="rfc.section.7"></a><h3>7. 
Acknowledgements</h3>

<p>Variants of this idea has been proposed by many people, including
      Mark Andrews and Thor Kottelin in an internet draft in 2000. Some text
      came from various documents by Ted Hardie. Thanks to good feedback from
      many people including Ted Hardie, Mr. Moonesamy, Cyrus Daboo, Stefanos
      Harhalakis, Ray Bellis, John Klensin, and Eran Hammer-Lahav.
</p>
<a name="rfc.references1"></a><br /><hr />
<h3>8. Normative References</h3>
<table width="99%" border="0">
<tr><td class="author-text" valign="top"><a name="RFC2119">[RFC2119]</a></td>
<td class="author-text"><a href="mailto:sob@harvard.edu">Bradner, S.</a>, “<a href="http://tools.ietf.org/html/rfc2119">Key words for use in RFCs to Indicate
          Requirement Levels</a>,” BCP 14, RFC 2119, March 1997 (<a href="ftp://ftp.isi.edu/in-notes/rfc2119.txt">TXT</a>, <a href="http://xml.resource.org/public/rfc/html/rfc2119.html">HTML</a>, <a href="http://xml.resource.org/public/rfc/xml/rfc2119.xml">XML</a>).</td></tr>
<tr><td class="author-text" valign="top"><a name="RFC2616">[RFC2616]</a></td>
<td class="author-text"><a href="mailto:fielding@ics.uci.edu">Fielding, R.</a>, <a href="mailto:jg@w3.org">Gettys, J.</a>, <a href="mailto:mogul@wrl.dec.com">Mogul, J.</a>, <a href="mailto:frystyk@w3.org">Frystyk, H.</a>, <a href="mailto:masinter@parc.xerox.com">Masinter, L.</a>, <a href="mailto:paulle@microsoft.com">Leach, P.</a>, and <a href="mailto:timbl@w3.org">T. Berners-Lee</a>, “<a href="http://tools.ietf.org/html/rfc2616">Hypertext Transfer Protocol --
          HTTP/1.1</a>,” RFC 2616, June 1999 (<a href="ftp://ftp.isi.edu/in-notes/rfc2616.txt">TXT</a>, <a href="ftp://ftp.isi.edu/in-notes/rfc2616.ps">PS</a>, <a href="ftp://ftp.isi.edu/in-notes/rfc2616.pdf">PDF</a>, <a href="http://xml.resource.org/public/rfc/html/rfc2616.html">HTML</a>, <a href="http://xml.resource.org/public/rfc/xml/rfc2616.xml">XML</a>).</td></tr>
<tr><td class="author-text" valign="top"><a name="RFC2782">[RFC2782]</a></td>
<td class="author-text"><a href="mailto:arnt@troll.no">Gulbrandsen, A.</a>, Vixie, P., and <a href="mailto:levone@microsoft.com">L. Esibov</a>, “<a href="http://tools.ietf.org/html/rfc2782">A DNS RR for specifying the location of
          services (DNS SRV)</a>,” RFC 2782, February 2000 (<a href="ftp://ftp.isi.edu/in-notes/rfc2782.txt">TXT</a>).</td></tr>
<tr><td class="author-text" valign="top"><a name="RFC2818">[RFC2818]</a></td>
<td class="author-text">Rescorla, E., “<a href="http://tools.ietf.org/html/rfc2818">HTTP Over TLS</a>,” RFC 2818, May 2000 (<a href="ftp://ftp.isi.edu/in-notes/rfc2818.txt">TXT</a>).</td></tr>
</table>

<a name="rfc.authors"></a><br /><hr />
<h3>Author's Address</h3>
<table width="99%" border="0" cellpadding="0" cellspacing="0">
<tr><td class="author-text"> </td>
<td class="author-text">Cullen Jennings</td></tr>
<tr><td class="author-text"> </td>
<td class="author-text">Cisco Systems</td></tr>
<tr><td class="author-text"> </td>
<td class="author-text">170 West Tasman Drive</td></tr>
<tr><td class="author-text"> </td>
<td class="author-text">Mailstop SJC-30</td></tr>
<tr><td class="author-text"> </td>
<td class="author-text">San Jose, CA  95134</td></tr>
<tr><td class="author-text"> </td>
<td class="author-text">USA</td></tr>
<tr><td class="author" align="right">Phone: </td>
<td class="author-text">+1 408 902-3341</td></tr>
<tr><td class="author" align="right">Email: </td>
<td class="author-text"><a href="mailto:fluffy@cisco.com">fluffy@cisco.com</a></td></tr>
</table>
</body></html>

PAFTECH AB 2003-20262026-04-23 10:04:25