DNS SRV Records for HTTP Cisco Systems
170 West Tasman Drive Mailstop SJC-30 San Jose CA 95134 USA +1 408 902-3341 fluffy@cisco.com
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 was as an https URI but uses DNS SRV lookups. The draft is being discussed on the apps-discuss@ietf.org list. 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.
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. 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. 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. 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.
The big open issue seems to be if one should just update the HTTP scheme to do this SRV lookup and not create a new scheme. The 00 version of this draft did that. A new scheme makes this somewhat unusable for general web surfing while using the old scheme results in a very long transition times where different clients resolve URLs in different ways.
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.
Applications compliant with this specification MUST perform an SRV lookup as specified in 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. 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 .
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.
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.
This specification registers two provisional URI schemes.
http+srv provisional Identical to http URI as defined in RFC 2616 but using the 'http+srv' protocol identifier in place of the 'http' protocol identifier See draft-jennings-http-srv No special considerations Applications which need to lookup http servers using DNS SRV None known Same as http URI. See RFC 2616 Cullen Jennings <fluffy@cisco.com> Cullen Jennings <fluffy@cisco.com> draft-jennings-http-srv RFC 3986 RFC 2616
https+srv provisional Identical to http URI as defined in RFC 2818 but using the 'https+srv' protocol identifier in place of the 'https' protocol identifier See draft-jennings-http-srv No special considerations Applications which need to lookup http servers using DNS SRV None known Same as https URI. See RFC 2818 Cullen Jennings <fluffy@cisco.com> Cullen Jennings <fluffy@cisco.com> draft-jennings-http-srv RFC 3986 RFC 2818
This introduces no new security considerations beyond the common usage of HTTP. It is analogous to DNS CNAME records that redirect address records.
Variants of this idea has been proposed by many people, including Mark Andrews and Thor Kottelin in an internet draft in 2000. A related draft discusses selecting SCTP for HTTP. Some text came from various documents by Ted Hardie. Thanks to good feedback from many people including Ted Hardie, S. Moonesamy, Cyrus Daboo, Stefanos Harhalakis, Ray Bellis, John Klensin, and Eran Hammer-Lahav.
Key words for use in RFCs to Indicate Requirement Levels Harvard University
1350 Mass. Ave. Cambridge MA 02138 - +1 617 495 3864 sob@harvard.edu
General keyword 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: 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. Note that the force of these words is modified by the requirement level of the document in which they are used.
Hypertext Transfer Protocol -- HTTP/1.1 Department of Information and Computer Science
University of California, Irvine Irvine CA 92697-3425 +1(949)824-1715 fielding@ics.uci.edu
World Wide Web Consortium
MIT Laboratory for Computer Science, NE43-356 545 Technology Square Cambridge MA 02139 +1(617)258-8682 jg@w3.org
Compaq Computer Corporation
Western Research Laboratory 250 University Avenue Palo Alto CA 94305 mogul@wrl.dec.com
World Wide Web Consortium
MIT Laboratory for Computer Science, NE43-356 545 Technology Square Cambridge MA 02139 +1(617)258-8682 frystyk@w3.org
Xerox Corporation
MIT Laboratory for Computer Science, NE43-356 3333 Coyote Hill Road Palo Alto CA 94034 masinter@parc.xerox.com
Microsoft Corporation
1 Microsoft Way Redmond WA 98052 paulle@microsoft.com
World Wide Web Consortium
MIT Laboratory for Computer Science, NE43-356 545 Technology Square Cambridge MA 02139 +1(617)258-8682 timbl@w3.org
The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypermedia information systems. It is a generic, stateless, protocol which can be used for many tasks beyond its use for hypertext, such as name servers and distributed object management systems, through extension of its request methods, error codes and headers . A feature of HTTP is the typing and negotiation of data representation, allowing systems to be built independently of the data being transferred. HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification defines the protocol referred to as "HTTP/1.1", and is an update to RFC 2068 .
HTTP Over TLS This memo describes how to use Transport Layer Security (TLS) to secure Hypertext Transfer Protocol (HTTP) connections over the Internet. This memo provides information for the Internet community. A DNS RR for specifying the location of services (DNS SRV) Troll Tech
Waldemar Thranes gate 98B Oslo N-0175 NO +47 22 806390 +47 22 806380 arnt@troll.no
Internet Software Consortium
950 Charter Street Redwood City CA 94063 US +1 650 779 7001
Microsoft Corporation
One Microsoft Way Redmond WA 98052 US levone@microsoft.com
This document describes a DNS RR which specifies the location of the server(s) for a specific protocol and domain.
Specifying transport mechanisms for retrieval or delivery of URIs This document describes a simple extension of the URI format to allow preferred transport mechanisms and interfaces to be specified. This explicit configuration is beneficial for separation of HTTP from underlying transports, which has been increasingly recognised as useful. Explicit configuration in the URI for programs is valuable when TCP, traditionally used to carry HTTP, is not present or not desired, or when other methods of determining or negotiating the appropriate transport method to use, e.g. the Domain Name System (DNS), are absent.