<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.9 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-doh-dns-over-https" category="std">

  <front>
    <title abbrev="DNS Queries over HTTPS (DoH)">DNS Queries over HTTPS (DoH)</title>

    <author initials="P." surname="Hoffman" fullname="Paul Hoffman">
      <organization>ICANN</organization>
      <address>
        <email>paul.hoffman@icann.org</email>
      </address>
    </author>
    <author initials="P." surname="McManus" fullname="Patrick McManus">
      <organization>Mozilla</organization>
      <address>
        <email>mcmanus@ducksong.com</email>
      </address>
    </author>

    <date year="2018" month="August" day="16"/>

    <area>Art</area>
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document defines a protocol for sending DNS queries and
getting DNS responses over HTTPS. Each DNS query-response pair is
mapped into an HTTP exchange.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>This document defines a specific protocol, DNS over HTTPS (DoH), for
sending DNS <xref target="RFC1035"/> queries and getting DNS responses over HTTP
<xref target="RFC7540"/> using https <xref target="RFC2818"/> URIs (and therefore TLS <xref target="RFC8446"/> security
for integrity and confidentiality). Each DNS query-response pair is
mapped into an HTTP exchange.</t>

<t>The described approach is more than a tunnel over HTTP. It establishes
default media formatting types for requests and responses but uses
normal HTTP content negotiation mechanisms for selecting alternatives
that endpoints may prefer in anticipation of serving new use cases. In
addition to this media type negotiation, it aligns itself with HTTP
features such as caching, redirection, proxying, authentication, and
compression.</t>

<t>The integration with HTTP provides a transport suitable for both
existing DNS clients and native web applications seeking access to
the DNS.</t>

<t>Two primary use cases were considered during this protocol’s
development. They were preventing on-path devices from interfering
with DNS operations and allowing web applications to access DNS
information via existing browser APIs in a safe way consistent with
Cross Origin Resource Sharing (CORS) <xref target="CORS"/>. No special effort has
been taken to enable or prevent application to other use cases.
This document focuses on communication between DNS clients (such as operating
system stub resolvers) and recursive resolvers.</t>

</section>
<section anchor="terminology" title="Terminology">

<t>A server that supports this protocol is called a “DoH server” to
differentiate it from a “DNS server”
(one that only provides DNS service over one or more of the other transport protocols
standardized for DNS).
Similarly, a client that supports this protocol is called a
“DoH client”.</t>

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”,
and “OPTIONAL” in this document are to be interpreted as described in
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
<section anchor="selection" title="Selection of DoH Server">

<t>The DoH client is configured with a URI Template <xref target="RFC6570"/> which
describes how to construct the URL to use for resolution.
Configuration, discovery, and updating of the URI Template is done out
of band from this protocol. Note that configuration might be manual
(such as a user typing URI Templates in a user interface for
“options”) or automatic (such as URI Templates being supplied in
responses from DHCP or similar protocols). DoH Servers MAY support
more than one URI Template. This allows the different endpoints to
have different properties such as different authentication
requirements or service level guarantees.</t>

<t>A DoH client uses configuration to select the URI, and thus the
DoH server, that is to be used for resolution. <xref target="RFC2818"/> defines how HTTPS
verifies the DoH server’s identity.</t>

<t>A DoH client MUST NOT use a different URI simply because it was
discovered outside of the client’s configuration (such as through
HTTP/2 push), or because a server offers an unsolicited response that
appears to be a valid answer to a DNS query. This specification does
not extend DNS resolution privileges to URIs that are not recognized
by the DoH client as configured URIs. Such scenarios may create
additional operational, tracking, and security hazards that require
limitations for safe usage. A future specification may support this
use case.</t>

</section>
<section anchor="the-http-exchange" title="The HTTP Exchange">

<section anchor="httprequest" title="The HTTP Request">

<t>A DoH client encodes a single DNS query
into an HTTP request using either the HTTP GET or POST method and the
other requirements of this section. The DoH server defines the URI
used by the request through the use of a URI Template.</t>

<t>The URI Template defined in this document is processed without any
variables when the HTTP method is POST. When the HTTP method is
GET the single variable “dns” is defined as the content of the DNS request
(as described in <xref target="dnswire"/>), encoded with base64url <xref target="RFC4648"/>.</t>

<t>Future specifications for new media types for DoH MUST define the variables
used for URI Template processing with this protocol.</t>

<t>DoH servers MUST implement both the POST and GET methods.</t>

<t>When using the POST method the DNS query is included as the message
body of the HTTP request and the Content-Type request header field indicates
the media type of the message. POST-ed requests are generally smaller than their
GET equivalents.</t>

<t>Using the GET method is friendlier to many HTTP cache implementations.</t>

<t>The DoH client SHOULD include an HTTP “Accept” request header field to
indicate what type of content can be understood in
response. Irrespective of the value of the Accept request header field, the
client MUST be prepared to process “application/dns-message”
(as described in <xref target="dnswire"/>) responses but MAY also process other
DNS-related media types it receives.</t>

<t>In order to maximize HTTP cache friendliness, DoH clients using media
formats that include the ID field from the DNS message header, such as application/dns-message,
SHOULD use a DNS ID of 0 in every DNS request.  HTTP correlates
the request and response, thus eliminating the need for the ID in a media
type such as application/dns-message. The use of a varying
DNS ID can cause semantically equivalent DNS queries to be cached
separately.</t>

<t>DoH clients can use HTTP/2 padding and compression <xref target="RFC7540"/> in the same way
that other HTTP/2 clients use (or don’t use) them.</t>

<section anchor="http-request-examples" title="HTTP Request Examples">

<t>These examples use HTTP/2 style formatting from <xref target="RFC7540"/>.</t>

<t>These examples use a DoH service with a URI Template of
“https://dnsserver.example.net/dns-query{?dns}” to resolve
IN A records.</t>

<t>The requests are represented as application/dns-message typed bodies.</t>

<t>The first example request uses GET to request www.example.com</t>

<figure><artwork><![CDATA[
:method = GET
:scheme = https
:authority = dnsserver.example.net
:path = /dns-query?dns=AAABAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB
accept = application/dns-message
]]></artwork></figure>

<t>The same DNS query for www.example.com, using the POST method would be:</t>

<figure><artwork><![CDATA[
:method = POST
:scheme = https
:authority = dnsserver.example.net
:path = /dns-query
accept = application/dns-message
content-type = application/dns-message
content-length = 33

<33 bytes represented by the following hex encoding>
00 00 01 00 00 01 00 00  00 00 00 00 03 77 77 77
07 65 78 61 6d 70 6c 65  03 63 6f 6d 00 00 01 00
01
]]></artwork></figure>

<t>In this example, the 33 bytes are the DNS message in DNS wire format <xref target="RFC1035"/>
starting with the DNS header.</t>

<t>Finally, a GET based query for
a.62characterlabel-makes-base64url-distinct-from-standard-base64.example.com
is shown as an example to emphasize that the encoding alphabet of
base64url is different than regular base64 and that padding is omitted.</t>

<t>The DNS query, expressed in DNS wire format, is 94 bytes represented by the following:</t>

<figure><artwork><![CDATA[
00 00 01 00 00 01 00 00  00 00 00 00 01 61 3e 36
32 63 68 61 72 61 63 74  65 72 6c 61 62 65 6c 2d
6d 61 6b 65 73 2d 62 61  73 65 36 34 75 72 6c 2d
64 69 73 74 69 6e 63 74  2d 66 72 6f 6d 2d 73 74
61 6e 64 61 72 64 2d 62  61 73 65 36 34 07 65 78
61 6d 70 6c 65 03 63 6f  6d 00 00 01 00 01

:method = GET
:scheme = https
:authority = dnsserver.example.net
:path = /dns-query? (no space or CR)
        dns=AAABAAABAAAAAAAAAWE-NjJjaGFyYWN0ZXJsYWJl (no space or CR)
        bC1tYWtlcy1iYXNlNjR1cmwtZGlzdGluY3QtZnJvbS1z (no space or CR)
        dGFuZGFyZC1iYXNlNjQHZXhhbXBsZQNjb20AAAEAAQ
accept = application/dns-message

]]></artwork></figure>

</section>
</section>
<section anchor="http-response" title="The HTTP Response">

<t>The only response type defined in this document is
“application/dns-message”, but it is possible that other
response formats will be defined in the future.
A DoH server MUST be able to process application/dns-message
request messages.</t>

<t>Different response media types will provide more or less information from a DNS
response. For example, one response type might include information from the
DNS header bytes while another might omit it. The amount and type of information
that a media type gives is solely up to the format, and not defined in
this protocol.</t>

<t>Each DNS request-response pair is mapped to one HTTP exchange.
The responses may be processed and transported in any order
using HTTP’s multi-streaming functionality (<xref target="RFC7540"/> Section 5).</t>

<t><xref target="caching"/> discusses the relationship between DNS and HTTP
response caching.</t>

<section anchor="handling-dns-and-http-errors" title="Handling DNS and HTTP Errors">

<t>DNS response codes indicate either success or failure for the DNS query. A
successful HTTP response with a 2xx status code (<xref target="RFC7231"/> Section 6.3) is used for
any valid DNS response, regardless of the DNS response code. For example, a
successful 2xx HTTP status code is used even with a DNS message whose DNS
response code indicates failure, such as SERVFAIL or NXDOMAIN.</t>

<t>HTTP responses with non-successful HTTP status codes do not contain
replies to the original DNS question in the HTTP request.
DoH clients need to use the same semantic processing of non-successful
HTTP status codes as other HTTP clients. This might mean that the DoH
client retries the query with the same DoH server, such as if there are authorization
failures (HTTP status code 401 <xref target="RFC7235"/> Section 3.1). It could also mean
that the DoH client retries  with a different DoH server, such as for
unsupported media types (HTTP status code 415, <xref target="RFC7231"/> Section 6.5.13), or
where the server cannot generate a representation suitable for the client
(HTTP status code 406, <xref target="RFC7231"/> Section 6.5.6), and so on.</t>

</section>
<section anchor="http-response-example" title="HTTP Response Example">

<t>This is an example response for a query for the IN AAAA records for
“www.example.com” with recursion turned on. The response bears one
answer record with an address of 2001:db8:abcd:12:1:2:3:4 and a TTL of
3709 seconds.</t>

<figure><artwork><![CDATA[
:status = 200
content-type = application/dns-message
content-length = 61
cache-control = max-age=3709

<61 bytes represented by the following hex encoding>
00 00 81 80 00 01 00 01  00 00 00 00 03 77 77 77
07 65 78 61 6d 70 6c 65  03 63 6f 6d 00 00 1c 00
01 c0 0c 00 1c 00 01 00  00 0e 7d 00 10 20 01 0d
b8 ab cd 00 12 00 01 00  02 00 03 00 04

]]></artwork></figure>

</section>
</section>
</section>
<section anchor="http-integration" title="HTTP Integration">

<t>This protocol MUST be used with the https scheme URI <xref target="RFC7230"/>.</t>

<t><xref target="PrivacyConsiderations"/> and <xref target="Security"/> discuss additional considerations
for the integration with HTTP.</t>

<section anchor="caching" title="Cache Interaction">

<t>A DoH exchange can pass through a hierarchy of caches that include
both HTTP- and DNS-specific caches.
These caches may exist between the DoH server and client, or on the DoH client itself.
HTTP caches are by design generic;
that is, they do not understand this protocol. Even if a DoH
client has modified its cache implementation to be aware of DoH
semantics, it does not follow that all upstream caches (for example,
inline proxies, server-side gateways and Content Delivery Networks) will
be.</t>

<t>As a result, DoH servers need to carefully consider the HTTP
caching metadata they send in response to GET requests (responses to POST requests
are not cacheable unless specific response header fields are sent; this is
not widely implemented, and not advised for DoH).</t>

<t>In particular, DoH servers SHOULD assign an explicit HTTP freshness
lifetime (<xref target="RFC7234"/> Section 4.2)
so that the DoH client is more likely to use fresh DNS data.
This requirement is due to HTTP caches being able to assign
their own heuristic freshness (such as that described in <xref target="RFC7234"/> Section 4.2.2),
which would take control of the cache contents out of the hands of the DoH server.</t>

<t>The assigned freshness lifetime of a DoH HTTP response MUST be less
than or equal to the smallest TTL in the Answer section of the DNS
response. A freshness lifetime equal to the smallest TTL in the Answer
section is RECOMMENDED. For example, if a HTTP response carries three
RRsets with TTLs of 30, 600, and 300, the HTTP freshness lifetime
should be 30 seconds (which could be specified as “Cache-Control:
max-age=30”).
This requirement helps prevent exipred RRsets in messages in an HTTP cache
from unintentionally being served.</t>

<t>If the DNS response has no records in the Answer section, and the DNS
response has an SOA record in the Authority section, the response
freshness lifetime MUST NOT be greater than the MINIMUM field from
that SOA record (see <xref target="RFC2308"/>).</t>

<t>The stale-while-revalidate and stale-if-error Cache-Control directives
(<xref target="RFC5861"/>) could be well-suited to a DoH implementation when
allowed by server policy. Those mechanisms allow a client, at the
server’s discretion, to reuse an HTTP cache entry that is no longer fresh.
In such a case, the client reuses all of a cached entry, or none of it.</t>

<t>DoH servers also need to consider HTTP caching when generating
responses that are not globally valid. For instance, if a DoH
server customizes a response based on the client’s identity, it would
not want to allow global reuse of that response. This could be
accomplished through a variety of HTTP techniques such as a
Cache-Control max-age of 0, or by using the Vary response header field
(<xref target="RFC7231"/> Section 7.1.4) to establish a secondary cache key
(<xref target="RFC7234"/> Section 4.1).</t>

<t>DoH clients MUST account for the Age response header field’s value
(<xref target="RFC7234"/>) when calculating the DNS TTL of a response. For example,
if an RRset is received with a DNS TTL of 600, but the Age header field
indicates that the response has been cached for 250 seconds, the
remaining lifetime of the RRset is 350 seconds.
This requirement applies to both DoH client HTTP caches and
DoH client DNS caches.</t>

<t>DoH clients can request an uncached copy of a HTTP response by using
the “no-cache” request cache control directive (<xref target="RFC7234"/>, Section
5.2.1.4) and similar controls. Note that some caches might not honor
these directives, either due to configuration or interaction with
traditional DNS caches that do not have such a mechanism.</t>

<t>HTTP conditional requests (<xref target="RFC7232"/>) may be of limited value to
DoH, as revalidation provides only a bandwidth benefit and DNS
transactions are normally latency bound. Furthermore, the HTTP
response header fields that enable revalidation (such as “Last-Modified” and
“Etag”) are often fairly large when compared to the overall DNS
response size, and have a variable nature that creates constant
pressure on the HTTP/2 compression dictionary <xref target="RFC7541"/>. Other types
of DNS data, such as zone transfers, may be larger and benefit more
from revalidation.</t>

</section>
<section anchor="http2" title="HTTP/2">

<t>HTTP/2 <xref target="RFC7540"/> is the minimum RECOMMENDED version of HTTP for use with DoH.</t>

<t>The messages in classic UDP-based DNS <xref target="RFC1035"/> are inherently
unordered and have low overhead. A competitive HTTP transport needs to
support reordering, parallelism, priority, and header compression to
achieve similar performance. Those features were introduced to HTTP in
HTTP/2 <xref target="RFC7540"/>. Earlier versions of HTTP are capable of conveying
the semantic requirements of DoH but may result in very poor
performance.</t>

</section>
<section anchor="server-push" title="Server Push">

<t>Before using DoH response data for DNS resolution, the client MUST
establish that the HTTP request URI can be used for the DoH query.
For HTTP requests initiated by the DoH client, this is
implicit in the selection of URI. For HTTP server push (<xref target="RFC7540"/>
Section 8.2) extra care must be taken to ensure that the pushed URI is
one that the client would have directed the same query to if the
client had initiated the request (in addition to the other security
checks normally needed for server push).</t>

</section>
<section anchor="content-negotiation" title="Content Negotiation">

<t>In order to maximize interoperability, DoH clients and DoH
servers MUST support the “application/dns-message” media
type. Other media types MAY be used as defined by HTTP Content
Negotiation (<xref target="RFC7231"/> Section 3.4).
Those media types MUST be flexible enough to express every
DNS query that would normally be sent in DNS over UDP (including queries and
responses that use DNS extensions, but not those that require multiple
responses).</t>

</section>
</section>
<section anchor="dnswire" title="Definition of the application/dns-message media type">

<t>The data payload for the application/dns-message media type is a
single message of the DNS on-the-wire format defined in Section 4.2.1
of <xref target="RFC1035"/>, which in turn refers to the full wire format defined
in Section 4.1 of that RFC.</t>

<t>Although <xref target="RFC1035"/> says “Messages carried by UDP are restricted to 512
bytes”, that was later updated by <xref target="RFC6891"/>. This media type
restricts the maximum size of the DNS message to 65535 bytes.</t>

<t>Note that the wire format used in this media type is different than the
wire format used in <xref target="RFC7858"/> (which uses the format defined in
Section 4.2.2 of <xref target="RFC1035"/> that includes two length bytes).</t>

<t>DoH clients using this media type MAY have one or more EDNS options
<xref target="RFC6891"/> in the request. DoH servers using this media type MUST ignore
the value given for the EDNS UDP payload size in DNS requests.</t>

<t>When using the GET method, the data payload for this media type MUST be
encoded with base64url <xref target="RFC4648"/> and then provided as a variable named
“dns” to the URI Template expansion. Padding characters for base64url MUST
NOT be included.</t>

<t>When using the POST method, the data payload for this media type MUST NOT
be encoded and is used directly as the HTTP message body.</t>

</section>
<section anchor="iana" title="IANA Considerations">

<section anchor="dnsMessageType" title="Registration of application/dns-message Media Type">

<figure><artwork><![CDATA[
To: ietf-types@iana.org
Subject: Registration of MIME media type
         application/dns-message

MIME media type name: application

MIME subtype name: dns-message

Required parameters: n/a

Optional parameters: n/a

Encoding considerations: This is a binary format. The contents are a
DNS message as defined in RFC 1035. The format used here is for DNS
over UDP, which is the format defined in the diagrams in RFC 1035.

Security considerations:  See [this document].
The content is a DNS message, and thus not executable code.

Interoperability considerations:  None.

Published specification:  This document.

Applications that use this media type:
  Systems that want to exchange full DNS messages.

Additional information:

Magic number(s):  n/a

File extension(s):  n/a

Macintosh file type code(s):  n/a

Person & email address to contact for further information:
   Paul Hoffman, paul.hoffman@icann.org

Intended usage:  COMMON

Restrictions on usage:  n/a

Author:  Paul Hoffman, paul.hoffman@icann.org

Change controller:  IESG
]]></artwork></figure>

</section>
</section>
<section anchor="PrivacyConsiderations" title="Privacy Considerations">

<t><xref target="RFC7626"/> discusses DNS privacy considerations in both “On the
wire” (Section 2.4), and “In the server” (Section 2.5) contexts. This
is also a useful framing for DoH’s privacy considerations.</t>

<section anchor="OnTheWire" title="On The Wire">

<t>DoH encrypts DNS traffic and requires authentication of the
server. This mitigates both passive surveillance <xref target="RFC7258"/> and
active attacks that attempt to divert DNS traffic to rogue servers
(<xref target="RFC7626"/> Section 2.5.1). DNS over TLS <xref target="RFC7858"/> provides
similar protections, while direct UDP and TCP based transports are
vulnerable to this class of attack.
An experimental effort to offer guidance on choosing the padding 
length can be found in <xref target="I-D.ietf-dprive-padding-policy"/>.</t>

<t>Additionally, the use of the HTTPS default port 443 and the ability to
mix DoH traffic with other HTTPS traffic on the same connection can
deter unprivileged on-path devices from interfering with DNS operations and make
DNS traffic analysis more difficult.</t>

</section>
<section anchor="InTheServer" title="In The Server">

<t>The DNS wire format <xref target="RFC1035"/> contains no client identifiers; however, 
various transports of DNS queries and responses do provide data that can be
used to correlate requests. HTTPS presents new considerations for
correlation, such as explicit HTTP cookies and implicit
fingerprinting of the unique set and ordering of HTTP request header fields.</t>

<t>A DoH implementation is built on IP, TCP, TLS, and HTTP. Each layer
contains one or more common features that can be used to correlate
queries to the same identity. DNS transports will generally
carry the same privacy properties of the layers used to implement
them. For example, the properties of IP, TCP, and TLS apply to DNS
over TLS implementations.</t>

<t>The privacy considerations of using the HTTPS layer in DoH are
incremental to those of DNS over TLS. DoH is not known to introduce
new concerns beyond those associated with HTTPS.</t>

<t>At the IP level, the client address provides obvious correlation
information. This can be mitigated by use of a NAT, proxy, VPN, or
simple address rotation over time. It may be aggravated by use of a
DNS server that can correlate real-time addressing information with
other personal identifiers, such as when a DNS server and DHCP server
are operated by the same entity.</t>

<t>DNS implementations that use one TCP connection for multiple DNS
requests directly group those requests. Long-lived connections have
better performance behaviors than short-lived connections, but group
more requests which can expose more information to correlation and
consolidation. TCP-based solutions may also seek performance through
the use of TCP Fast Open <xref target="RFC7413"/>. The cookies used in TCP Fast
Open allow servers to correlate TCP sessions.</t>

<t>TLS-based implementations often achieve better handshake performance
through the use of some form of session resumption mechanism such as
<xref target="RFC8446"/> Section 2.2. Session resumption creates trivial
mechanisms for a server to correlate TLS connections
together.</t>

<t>HTTP’s feature set can also be used for identification and tracking in
a number of different ways. For example, authentication request header
fields explicitly identify profiles in use, and HTTP Cookies are
designed as an explicit state-tracking mechanism between the client
and serving site and often are used as an authentication mechanism.</t>

<t>Additionally, the User-Agent and Accept-Language request header fields
often convey specific information about the client version or locale.
This facilitates content negotiation and operational work-arounds for
implementation bugs. Request header fields that control caching
can expose state information about a subset of the client’s
history. Mixing DoH requests with other HTTP requests on the same
connection also provides an opportunity for richer data correlation.</t>

<t>The DoH protocol design allows applications to fully leverage the HTTP
ecosystem, including features that are not enumerated here. Utilizing the full
set of HTTP features enables DoH to be more than an HTTP tunnel, but
at the cost of opening up implementations to the full set of privacy
considerations of HTTP.</t>

<t>Implementations of DoH clients and servers need to consider the
benefit and privacy impact of these features, and their deployment
context, when deciding whether or not to enable them. Implementations
are advised to expose the minimal set of data needed to achieve the desired
feature set.</t>

<t>Determining whether or not a DoH implementation requires HTTP cookie
<xref target="RFC6265"/> support is particularly important because HTTP cookies are the primary
state tracking mechanism in HTTP. HTTP Cookies SHOULD NOT be accepted
by DOH clients unless they are explicitly required by a use case.</t>

</section>
</section>
<section anchor="Security" title="Security Considerations">

<t>Running DNS over HTTPS relies on the security of the underlying
HTTP transport. This mitigates classic amplification
attacks for UDP-based DNS. Implementations utilizing HTTP/2 benefit from the TLS
profile defined in <xref target="RFC7540"/> Section 9.2.</t>

<t>Session-level encryption has well-known weaknesses with respect to
traffic analysis which might be particularly acute when dealing with
DNS queries.
HTTP/2 provides further advice about the use of compression
(<xref target="RFC7540"/> Section 10.6) and padding (<xref target="RFC7540"/> Section 10.7 ).
DoH Servers can also add DNS padding <xref target="RFC7830"/> if the DoH client requests
it in the DNS query. An experimental effort to offer guidance on choosing the padding 
length can be found in <xref target="I-D.ietf-dprive-padding-policy"/>.</t>

<t>The HTTPS connection provides transport security for the interaction between the
DoH server and client, but does not provide the response integrity of DNS
data provided by DNSSEC. DNSSEC and DoH are independent and fully compatible
protocols, each solving different problems. The use of one does not diminish the
need nor the usefulness of the other. It is the choice of a client to either
perform full DNSSEC validation of answers or to trust the DoH server to do
DNSSEC validation and inspect the AD (Authentic Data) bit in the returned
message to determine whether an answer was authentic or not. As noted in
<xref target="http-response"/>, different response media types will provide more or less
information from a DNS response so this choice may be affected by the response
media type.</t>

<t><xref target="caching"/> describes the interaction of this protocol with HTTP
caching. An adversary that can control the cache used by the client
can affect that client’s view of the DNS. This is no different
than the security implications of HTTP caching for other protocols
that use HTTP.</t>

<t>In the absence of DNSSEC information, a DoH server can give a
client invalid data in response to a DNS query. <xref target="selection"/>
disallows the use of DoH DNS responses that do not originate from
configured servers. This prohibition does not guarantee protection against invalid
data, but it does reduce the risk.</t>

</section>
<section anchor="operational-considerations" title="Operational Considerations">

<t>Local policy considerations and similar factors mean different DNS
servers may provide different results to the same query, for instance
in split DNS configurations <xref target="RFC6950"/>.  It logically follows that
the server that is queried can influence the end result.  Therefore a
client’s choice of DNS server may affect the responses it gets to its
queries.
For example, in the case of DNS64 <xref target="RFC6147"/>, the choice could affect
whether IPv6/IPv4 translation will work at all.</t>

<t>The HTTPS channel used by this specification establishes secure
two-party communication between the DoH client and the DoH server.
Filtering or inspection systems that rely on unsecured transport of
DNS will not function in a DNS over HTTPS environment
due to the confidentiality and integrity protection provided by TLS.</t>

<t>Some HTTPS client implementations perform real time third-party checks
of the revocation status of the certificates being used by TLS. If
this check is done as part of the DoH server connection procedure
and the check itself requires DNS resolution to connect to the third
party a deadlock can occur. The use of OCSP <xref target="RFC6960"/> servers or AIA
for CRL fetching (<xref target="RFC5280"/> Section 4.2.2.1) are examples of how
this deadlock can happen.  To mitigate the possibility of deadlock,
the authentication given DoH servers SHOULD NOT rely on DNS-based references to external
resources in the TLS handshake. For OCSP, the server can bundle the
certificate status as part of the handshake using a mechanism
appropriate to the version of TLS, such as using <xref target="RFC8446"/> Section 4.4.2.1
for TLS version 1.3. AIA deadlocks can be avoided by providing
intermediate certificates that might otherwise be obtained through
additional requests. Note that these deadlocks also need to be
considered for servers that a DoH server might redirect to.</t>

<t>A DoH client may face a similar bootstrapping problem when the
HTTP request needs to resolve the hostname portion of the DNS
URI. Just as the address of a traditional DNS nameserver cannot be
originally determined from that same server, a DoH client cannot use
its DoH server to initially resolve the server’s host name into an
address. Alternative strategies a client might employ include making
the initial resolution part of the configuration, IP-based URIs and
corresponding IP-based certificates for HTTPS, or resolving the DNS
API server’s hostname via traditional DNS or another DoH server while
still authenticating the resulting connection via HTTPS.</t>

<t>HTTP <xref target="RFC7230"/> is a stateless application-level protocol and
therefore DoH implementations do not provide stateful ordering
guarantees between different requests. DoH cannot be used as a
transport for other protocols that require strict ordering.</t>

<t>A DoH server is allowed to answer queries with any valid DNS response.
For example, a valid DNS response might have the TC (truncation) bit set in
the DNS header to indicate that the server
was not able to retrieve a full answer for the query but is providing
the best answer it could get.
A DoH server can reply to queries with an HTTP error
for queries that it cannot fulfill.
In this same example, a DoH server could use an HTTP error instead
of a non-error response that has the TC bit set.</t>

<t>Many extensions to DNS, using <xref target="RFC6891"/>, have been defined over the years.
Extensions that are specific to the choice of transport, such as <xref target="RFC7828"/>,
are not applicable to DoH.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC1035" target='https://www.rfc-editor.org/info/rfc1035'>
<front>
<title>Domain names - implementation and specification</title>
<author initials='P.V.' surname='Mockapetris' fullname='P.V. Mockapetris'><organization /></author>
<date year='1987' month='November' />
<abstract><t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System.  It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t></abstract>
</front>
<seriesInfo name='STD' value='13'/>
<seriesInfo name='RFC' value='1035'/>
<seriesInfo name='DOI' value='10.17487/RFC1035'/>
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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.  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='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference  anchor="RFC2308" target='https://www.rfc-editor.org/info/rfc2308'>
<front>
<title>Negative Caching of DNS Queries (DNS NCACHE)</title>
<author initials='M.' surname='Andrews' fullname='M. Andrews'><organization /></author>
<date year='1998' month='March' />
<abstract><t>RFC1034 provided a description of how to cache negative responses.  It however had a fundamental flaw in that it did not allow a name server to hand out those cached responses to other resolvers, thereby greatly reducing the effect of the caching.  This document addresses issues raise in the light of experience and replaces RFC1034 Section 4.3.4. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2308'/>
<seriesInfo name='DOI' value='10.17487/RFC2308'/>
</reference>



<reference  anchor="RFC4648" target='https://www.rfc-editor.org/info/rfc4648'>
<front>
<title>The Base16, Base32, and Base64 Data Encodings</title>
<author initials='S.' surname='Josefsson' fullname='S. Josefsson'><organization /></author>
<date year='2006' month='October' />
<abstract><t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes.  It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4648'/>
<seriesInfo name='DOI' value='10.17487/RFC4648'/>
</reference>



<reference  anchor="RFC6265" target='https://www.rfc-editor.org/info/rfc6265'>
<front>
<title>HTTP State Management Mechanism</title>
<author initials='A.' surname='Barth' fullname='A. Barth'><organization /></author>
<date year='2011' month='April' />
<abstract><t>This document defines the HTTP Cookie and Set-Cookie header fields. These header fields can be used by HTTP servers to store state (called cookies) at HTTP user agents, letting the servers maintain a stateful session over the mostly stateless HTTP protocol.  Although cookies have many historical infelicities that degrade their security and privacy, the Cookie and Set-Cookie header fields are widely used on the Internet.  This document obsoletes RFC 2965.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6265'/>
<seriesInfo name='DOI' value='10.17487/RFC6265'/>
</reference>



<reference  anchor="RFC6570" target='https://www.rfc-editor.org/info/rfc6570'>
<front>
<title>URI Template</title>
<author initials='J.' surname='Gregorio' fullname='J. Gregorio'><organization /></author>
<author initials='R.' surname='Fielding' fullname='R. Fielding'><organization /></author>
<author initials='M.' surname='Hadley' fullname='M. Hadley'><organization /></author>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<author initials='D.' surname='Orchard' fullname='D. Orchard'><organization /></author>
<date year='2012' month='March' />
<abstract><t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet.   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6570'/>
<seriesInfo name='DOI' value='10.17487/RFC6570'/>
</reference>



<reference  anchor="RFC7230" target='https://www.rfc-editor.org/info/rfc7230'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems.  This document provides an overview of HTTP architecture and its associated terminology, defines the &quot;http&quot; and &quot;https&quot; Uniform Resource Identifier (URI) schemes, defines the HTTP/1.1 message syntax and parsing requirements, and describes related security concerns for implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='7230'/>
<seriesInfo name='DOI' value='10.17487/RFC7230'/>
</reference>



<reference  anchor="RFC7231" target='https://www.rfc-editor.org/info/rfc7231'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems.  This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t></abstract>
</front>
<seriesInfo name='RFC' value='7231'/>
<seriesInfo name='DOI' value='10.17487/RFC7231'/>
</reference>



<reference  anchor="RFC7232" target='https://www.rfc-editor.org/info/rfc7232'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypertext information systems.  This document defines HTTP/1.1 conditional requests, including metadata header fields for indicating state changes, request header fields for making preconditions on such state, and rules for constructing the responses to a conditional request when one or more preconditions evaluate to false.</t></abstract>
</front>
<seriesInfo name='RFC' value='7232'/>
<seriesInfo name='DOI' value='10.17487/RFC7232'/>
</reference>



<reference  anchor="RFC7234" target='https://www.rfc-editor.org/info/rfc7234'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Caching</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems.  This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t></abstract>
</front>
<seriesInfo name='RFC' value='7234'/>
<seriesInfo name='DOI' value='10.17487/RFC7234'/>
</reference>



<reference  anchor="RFC7235" target='https://www.rfc-editor.org/info/rfc7235'>
<front>
<title>Hypertext Transfer Protocol (HTTP/1.1): Authentication</title>
<author initials='R.' surname='Fielding' fullname='R. Fielding' role='editor'><organization /></author>
<author initials='J.' surname='Reschke' fullname='J. Reschke' role='editor'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Hypertext Transfer Protocol (HTTP) is a stateless application- level protocol for distributed, collaborative, hypermedia information systems.  This document defines the HTTP Authentication framework.</t></abstract>
</front>
<seriesInfo name='RFC' value='7235'/>
<seriesInfo name='DOI' value='10.17487/RFC7235'/>
</reference>



<reference  anchor="RFC7540" target='https://www.rfc-editor.org/info/rfc7540'>
<front>
<title>Hypertext Transfer Protocol Version 2 (HTTP/2)</title>
<author initials='M.' surname='Belshe' fullname='M. Belshe'><organization /></author>
<author initials='R.' surname='Peon' fullname='R. Peon'><organization /></author>
<author initials='M.' surname='Thomson' fullname='M. Thomson' role='editor'><organization /></author>
<date year='2015' month='May' />
<abstract><t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2).  HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection.  It also introduces unsolicited push of representations from servers to clients.</t><t>This specification is an alternative to, but does not obsolete, the HTTP/1.1 message syntax.  HTTP's existing semantics remain unchanged.</t></abstract>
</front>
<seriesInfo name='RFC' value='7540'/>
<seriesInfo name='DOI' value='10.17487/RFC7540'/>
</reference>



<reference  anchor="RFC7541" target='https://www.rfc-editor.org/info/rfc7541'>
<front>
<title>HPACK: Header Compression for HTTP/2</title>
<author initials='R.' surname='Peon' fullname='R. Peon'><organization /></author>
<author initials='H.' surname='Ruellan' fullname='H. Ruellan'><organization /></author>
<date year='2015' month='May' />
<abstract><t>This specification defines HPACK, a compression format for efficiently representing HTTP header fields, to be used in HTTP/2.</t></abstract>
</front>
<seriesInfo name='RFC' value='7541'/>
<seriesInfo name='DOI' value='10.17487/RFC7541'/>
</reference>



<reference  anchor="RFC7626" target='https://www.rfc-editor.org/info/rfc7626'>
<front>
<title>DNS Privacy Considerations</title>
<author initials='S.' surname='Bortzmeyer' fullname='S. Bortzmeyer'><organization /></author>
<date year='2015' month='August' />
<abstract><t>This document describes the privacy issues associated with the use of the DNS by Internet users.  It is intended to be an analysis of the present situation and does not prescribe solutions.</t></abstract>
</front>
<seriesInfo name='RFC' value='7626'/>
<seriesInfo name='DOI' value='10.17487/RFC7626'/>
</reference>



<reference  anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>



<reference  anchor="RFC8446" target='https://www.rfc-editor.org/info/rfc8446'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2018' month='August' />
<abstract><t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t><t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='8446'/>
<seriesInfo name='DOI' value='10.17487/RFC8446'/>
</reference>




    </references>

    <references title='Informative References'>





<reference anchor="I-D.ietf-dprive-padding-policy">
<front>
<title>Padding Policy for EDNS(0)</title>

<author initials='A' surname='Mayrhofer' fullname='Alexander Mayrhofer'>
    <organization />
</author>

<date month='July' day='19' year='2018' />

<abstract><t>RFC 7830 specifies the EDNS(0) 'Padding' option, but does not specify the actual padding length for specific applications.  This memo lists the possible options ("Padding Policies"), discusses implications of each of these options, and provides a recommended (experimental) option.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-dprive-padding-policy-06' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-dprive-padding-policy-06.txt' />
</reference>



<reference  anchor="RFC2818" target='https://www.rfc-editor.org/info/rfc2818'>
<front>
<title>HTTP Over TLS</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2000' month='May' />
<abstract><t>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.</t></abstract>
</front>
<seriesInfo name='RFC' value='2818'/>
<seriesInfo name='DOI' value='10.17487/RFC2818'/>
</reference>



<reference  anchor="RFC5280" target='https://www.rfc-editor.org/info/rfc5280'>
<front>
<title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
<author initials='D.' surname='Cooper' fullname='D. Cooper'><organization /></author>
<author initials='S.' surname='Santesson' fullname='S. Santesson'><organization /></author>
<author initials='S.' surname='Farrell' fullname='S. Farrell'><organization /></author>
<author initials='S.' surname='Boeyen' fullname='S. Boeyen'><organization /></author>
<author initials='R.' surname='Housley' fullname='R. Housley'><organization /></author>
<author initials='W.' surname='Polk' fullname='W. Polk'><organization /></author>
<date year='2008' month='May' />
<abstract><t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet.  An overview of this approach and model is provided as an introduction.  The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms.  Standard certificate extensions are described and two Internet-specific extensions are defined.  A set of required certificate extensions is specified.  The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions.  An algorithm for X.509 certification path validation is described.  An ASN.1 module and examples are provided in the appendices.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5280'/>
<seriesInfo name='DOI' value='10.17487/RFC5280'/>
</reference>



<reference  anchor="RFC5861" target='https://www.rfc-editor.org/info/rfc5861'>
<front>
<title>HTTP Cache-Control Extensions for Stale Content</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<date year='2010' month='May' />
<abstract><t>This document defines two independent HTTP Cache-Control extensions that allow control over the use of stale responses by caches.  This  document is not an Internet Standards Track specification; it is published for informational purposes.</t></abstract>
</front>
<seriesInfo name='RFC' value='5861'/>
<seriesInfo name='DOI' value='10.17487/RFC5861'/>
</reference>



<reference  anchor="RFC6147" target='https://www.rfc-editor.org/info/rfc6147'>
<front>
<title>DNS64: DNS Extensions for Network Address Translation from IPv6 Clients to IPv4 Servers</title>
<author initials='M.' surname='Bagnulo' fullname='M. Bagnulo'><organization /></author>
<author initials='A.' surname='Sullivan' fullname='A. Sullivan'><organization /></author>
<author initials='P.' surname='Matthews' fullname='P. Matthews'><organization /></author>
<author initials='I.' surname='van Beijnum' fullname='I. van Beijnum'><organization /></author>
<date year='2011' month='April' />
<abstract><t>DNS64 is a mechanism for synthesizing AAAA records from A records. DNS64 is used with an IPv6/IPv4 translator to enable client-server communication between an IPv6-only client and an IPv4-only server, without requiring any changes to either the IPv6 or the IPv4 node, for the class of applications that work through NATs.  This document specifies DNS64, and provides suggestions on how it should be deployed in conjunction with IPv6/IPv4 translators.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6147'/>
<seriesInfo name='DOI' value='10.17487/RFC6147'/>
</reference>



<reference  anchor="RFC6891" target='https://www.rfc-editor.org/info/rfc6891'>
<front>
<title>Extension Mechanisms for DNS (EDNS(0))</title>
<author initials='J.' surname='Damas' fullname='J. Damas'><organization /></author>
<author initials='M.' surname='Graff' fullname='M. Graff'><organization /></author>
<author initials='P.' surname='Vixie' fullname='P. Vixie'><organization /></author>
<date year='2013' month='April' />
<abstract><t>The Domain Name System's wire protocol includes a number of fixed fields whose range has been or soon will be exhausted and does not allow requestors to advertise their capabilities to responders.  This document describes backward-compatible mechanisms for allowing the protocol to grow.</t><t>This document updates the Extension Mechanisms for DNS (EDNS(0)) specification (and obsoletes RFC 2671) based on feedback from deployment experience in several implementations.  It also obsoletes RFC 2673 (&quot;Binary Labels in the Domain Name System&quot;) and adds considerations on the use of extended labels in the DNS.</t></abstract>
</front>
<seriesInfo name='STD' value='75'/>
<seriesInfo name='RFC' value='6891'/>
<seriesInfo name='DOI' value='10.17487/RFC6891'/>
</reference>



<reference  anchor="RFC6950" target='https://www.rfc-editor.org/info/rfc6950'>
<front>
<title>Architectural Considerations on Application Features in the DNS</title>
<author initials='J.' surname='Peterson' fullname='J. Peterson'><organization /></author>
<author initials='O.' surname='Kolkman' fullname='O. Kolkman'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author>
<author initials='B.' surname='Aboba' fullname='B. Aboba'><organization /></author>
<date year='2013' month='October' />
<abstract><t>A number of Internet applications rely on the Domain Name System (DNS) to support their operations.  Many applications use the DNS to locate services for a domain; some, for example, transform identifiers other than domain names into formats that the DNS can process, and then fetch application data or service location data from the DNS. Proposals incorporating sophisticated application behavior using DNS as a substrate have raised questions about the role of the DNS as an application platform.  This document explores the architectural consequences of using the DNS to implement certain application features, and it provides guidance to future application designers as to the limitations of the DNS as a substrate and the situations in which alternative designs should be considered.</t></abstract>
</front>
<seriesInfo name='RFC' value='6950'/>
<seriesInfo name='DOI' value='10.17487/RFC6950'/>
</reference>



<reference  anchor="RFC6960" target='https://www.rfc-editor.org/info/rfc6960'>
<front>
<title>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</title>
<author initials='S.' surname='Santesson' fullname='S. Santesson'><organization /></author>
<author initials='M.' surname='Myers' fullname='M. Myers'><organization /></author>
<author initials='R.' surname='Ankney' fullname='R. Ankney'><organization /></author>
<author initials='A.' surname='Malpani' fullname='A. Malpani'><organization /></author>
<author initials='S.' surname='Galperin' fullname='S. Galperin'><organization /></author>
<author initials='C.' surname='Adams' fullname='C. Adams'><organization /></author>
<date year='2013' month='June' />
<abstract><t>This document specifies a protocol useful in determining the current status of a digital certificate without requiring Certificate Revocation Lists (CRLs). Additional mechanisms addressing PKIX operational requirements are specified in separate documents.  This document obsoletes RFCs 2560 and 6277.  It also updates RFC 5912.</t></abstract>
</front>
<seriesInfo name='RFC' value='6960'/>
<seriesInfo name='DOI' value='10.17487/RFC6960'/>
</reference>



<reference  anchor="RFC7258" target='https://www.rfc-editor.org/info/rfc7258'>
<front>
<title>Pervasive Monitoring Is an Attack</title>
<author initials='S.' surname='Farrell' fullname='S. Farrell'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author>
<date year='2014' month='May' />
<abstract><t>Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t></abstract>
</front>
<seriesInfo name='BCP' value='188'/>
<seriesInfo name='RFC' value='7258'/>
<seriesInfo name='DOI' value='10.17487/RFC7258'/>
</reference>



<reference  anchor="RFC7413" target='https://www.rfc-editor.org/info/rfc7413'>
<front>
<title>TCP Fast Open</title>
<author initials='Y.' surname='Cheng' fullname='Y. Cheng'><organization /></author>
<author initials='J.' surname='Chu' fullname='J. Chu'><organization /></author>
<author initials='S.' surname='Radhakrishnan' fullname='S. Radhakrishnan'><organization /></author>
<author initials='A.' surname='Jain' fullname='A. Jain'><organization /></author>
<date year='2014' month='December' />
<abstract><t>This document describes an experimental TCP mechanism called TCP Fast Open (TFO).  TFO allows data to be carried in the SYN and SYN-ACK packets and consumed by the receiving end during the initial connection handshake, and saves up to one full round-trip time (RTT) compared to the standard TCP, which requires a three-way handshake (3WHS) to complete before data can be exchanged.  However, TFO deviates from the standard TCP semantics, since the data in the SYN could be replayed to an application in some rare circumstances.  Applications should not use TFO unless they can tolerate this issue, as detailed in the Applicability section.</t></abstract>
</front>
<seriesInfo name='RFC' value='7413'/>
<seriesInfo name='DOI' value='10.17487/RFC7413'/>
</reference>



<reference  anchor="RFC7828" target='https://www.rfc-editor.org/info/rfc7828'>
<front>
<title>The edns-tcp-keepalive EDNS0 Option</title>
<author initials='P.' surname='Wouters' fullname='P. Wouters'><organization /></author>
<author initials='J.' surname='Abley' fullname='J. Abley'><organization /></author>
<author initials='S.' surname='Dickinson' fullname='S. Dickinson'><organization /></author>
<author initials='R.' surname='Bellis' fullname='R. Bellis'><organization /></author>
<date year='2016' month='April' />
<abstract><t>DNS messages between clients and servers may be received over either UDP or TCP.  UDP transport involves keeping less state on a busy server, but can cause truncation and retries over TCP.  Additionally, UDP can be exploited for reflection attacks.  Using TCP would reduce retransmits and amplification.  However, clients commonly use TCP only for retries and servers typically use idle timeouts on the order of seconds.</t><t>This document defines an EDNS0 option (&quot;edns-tcp-keepalive&quot;) that allows DNS servers to signal a variable idle timeout.  This signalling encourages the use of long-lived TCP connections by allowing the state associated with TCP transport to be managed effectively with minimal impact on the DNS transaction time.</t></abstract>
</front>
<seriesInfo name='RFC' value='7828'/>
<seriesInfo name='DOI' value='10.17487/RFC7828'/>
</reference>



<reference  anchor="RFC7830" target='https://www.rfc-editor.org/info/rfc7830'>
<front>
<title>The EDNS(0) Padding Option</title>
<author initials='A.' surname='Mayrhofer' fullname='A. Mayrhofer'><organization /></author>
<date year='2016' month='May' />
<abstract><t>This document specifies the EDNS(0) &quot;Padding&quot; option, which allows DNS clients and servers to pad request and response messages by a variable number of octets.</t></abstract>
</front>
<seriesInfo name='RFC' value='7830'/>
<seriesInfo name='DOI' value='10.17487/RFC7830'/>
</reference>



<reference  anchor="RFC7858" target='https://www.rfc-editor.org/info/rfc7858'>
<front>
<title>Specification for DNS over Transport Layer Security (TLS)</title>
<author initials='Z.' surname='Hu' fullname='Z. Hu'><organization /></author>
<author initials='L.' surname='Zhu' fullname='L. Zhu'><organization /></author>
<author initials='J.' surname='Heidemann' fullname='J. Heidemann'><organization /></author>
<author initials='A.' surname='Mankin' fullname='A. Mankin'><organization /></author>
<author initials='D.' surname='Wessels' fullname='D. Wessels'><organization /></author>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></author>
<date year='2016' month='May' />
<abstract><t>This document describes the use of Transport Layer Security (TLS) to provide privacy for DNS.  Encryption provided by TLS eliminates opportunities for eavesdropping and on-path tampering with DNS queries in the network, such as discussed in RFC 7626.  In addition, this document specifies two usage profiles for DNS over TLS and provides advice on performance considerations to minimize overhead from using TCP and TLS with DNS.</t><t>This document focuses on securing stub-to-recursive traffic, as per the charter of the DPRIVE Working Group.  It does not prevent future applications of the protocol to recursive-to-authoritative traffic.</t></abstract>
</front>
<seriesInfo name='RFC' value='7858'/>
<seriesInfo name='DOI' value='10.17487/RFC7858'/>
</reference>


<reference anchor="CORS" target="https://fetch.spec.whatwg.org/#http-cors-protocol">
  <front>
    <title>Cross-Origin Resource Sharing</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>


    </references>


<section anchor="protocol-development" title="Protocol Development">

<t>This appendix describes the requirements used to design DoH. These requirements are listed
here to help readers understand the current protocol, not to limit how the protocol might
be developed in the future. This appendix is non-normative.</t>

<t>The protocol described in this document based its design on the following protocol requirements:</t>

<t><list style="symbols">
  <t>The protocol must use normal HTTP semantics.</t>
  <t>The queries and responses must be able to be flexible enough to express every
DNS query that would normally be sent in DNS over UDP (including queries and
responses that use DNS extensions, but not those that require multiple
responses).</t>
  <t>The protocol must permit the addition of new formats for DNS queries and responses.</t>
  <t>The protocol must ensure interoperability by specifying a single format for
requests and responses that is mandatory to implement.  That format must be
able to support future modifications to the DNS protocol including the
inclusion of one or more EDNS options (including those not yet defined).</t>
  <t>The protocol must use a secure transport that meets the
requirements for HTTPS.</t>
</list></t>

<t>The following were considered non-requirements:</t>

<t><list style="symbols">
  <t>Supporting network-specific DNS64 <xref target="RFC6147"/></t>
  <t>Supporting other network-specific inferences from plaintext DNS queries</t>
  <t>Supporting insecure HTTP</t>
</list></t>

</section>
<section anchor="previous-work-on-dns-over-http-or-in-other-formats" title="Previous Work on DNS over HTTP or in Other Formats">

<t>The following is an incomplete list of earlier work that related to DNS over HTTP/1 or representing DNS
data in other formats.</t>

<t>The list includes links to the tools.ietf.org site (because these documents
are all expired) and web sites of software.</t>

<t><list style="symbols">
  <t>https://tools.ietf.org/html/draft-mohan-dns-query-xml</t>
  <t>https://tools.ietf.org/html/draft-daley-dnsxml</t>
  <t>https://tools.ietf.org/html/draft-dulaunoy-dnsop-passive-dns-cof</t>
  <t>https://tools.ietf.org/html/draft-bortzmeyer-dns-json</t>
  <t>https://www.nlnetlabs.nl/projects/dnssec-trigger/</t>
</list></t>

</section>
<section numbered="false" anchor="acknowledgments" title="Acknowledgments">

<t>This work required a high level of cooperation between experts in
different technologies. Thank you
Ray Bellis,
Stephane Bortzmeyer,
Manu Bretelle,
Sara Dickinson,
Massimiliano Fantuzzi,
Tony Finch,
Daniel Kahn Gilmor,
Olafur Gudmundsson,
Wes Hardaker,
Rory Hewitt,
Joe Hildebrand,
David Lawrence,
Eliot Lear,
John Mattsson,
Alex Mayrhofer,
Mark Nottingham,
Jim Reid,
Adam Roach,
Ben Schwartz,
Davey Song,
Daniel Stenberg,
Andrew Sullivan,
Martin Thomson,
and Sam Weiler.</t>

</section>


  </back>

<!-- ##markdown-source:
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
dzD0Bw9mFiaG/R/gb1pdmn0AAA==

-->

</rfc>

