<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.6 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-core-corr-clar-03" category="std" consensus="true" submissionType="IETF" updates="6690, 7252, 7641, 7959, 8132, 8323" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title abbrev="Corrections and Clarifications to CoAP">Constrained Application Protocol (CoAP): Corrections and Clarifications</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-core-corr-clar-03"/>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universität Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63921</phone>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <date year="2024" month="February" day="28"/>
    <abstract>
      <?line 50?>

<t>RFC 7252 defines the Constrained Application Protocol (CoAP), along
with a number of additional specifications, including RFC 7641, RFC
7959, RFC 8132, and RFC 8323.
RFC 6690 defines the link format that is used in CoAP self-description
documents.</t>
      <t>Some parts of the specification may be unclear or even contain errors
that may lead to misinterpretations that may impair interoperability
between different implementations.
The present document provides corrections, additions, and
clarifications to the RFCs cited; this document thus updates these
RFCs.
In addition, other clarifications related to the use of CoAP in other
specifications, including RFC 7390 and RFC 8075, are also provided.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-bormann-core-corr-clar/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        core Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/core-wg/corrclar"/>.</t>
    </note>
  </front>
  <middle>
    <?line 68?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="RFC7252"/> defines the Constrained Application Protocol (CoAP), along
with a number of additional specifications, including <xref target="RFC7641"/>,
<xref target="RFC7959"/>, <xref target="RFC8132"/>, and <xref target="RFC8323"/>.
<xref target="RFC6690"/> defines the link format that is used in CoAP
self-description documents.</t>
      <t>During implementation and interoperability testing of these RFCs, and
in their practical use, some ambiguities and common misinterpretations
have been identified, as well as a few errors.</t>
      <t>The present document summarizes identified issues and provides
corrections needed for implementations of CoAP to interoperate, i.e.,
it constitutes an update to the RFCs referenced.  This document also
provides other clarifications related to common misinterpretations of
the specification.  References to CoAP should, therefore, also include
this document.</t>
      <t>In addition, some clarifications and corrections are also provided for
documents that are related to CoAP, including RFC 7390 and RFC 8075.</t>
      <section anchor="process">
        <name>Process</name>
        <section anchor="original-text">
          <name>Original text</name>
          <t>The present document is an Internet-Draft, which is not intended to be
published as an RFC quickly.  Instead, it will be maintained as a
running document of the CoRE WG, probably for a number of years, until
the need for new entries tails off and the document can finally be
published as an RFC.  (This paragraph to be rephrased when that
happens.)</t>
          <t>The status of this document as a running document of the WG implies a
consensus process that is applied in making updates to it.  The rest
of this subsection provides more details about this consensus process.
(This is the intended status; currently, the document is an individual submission only.)</t>
          <t>(Consensus process TBD, but it will likely be based on an editor's
version in a publicly accessible git repository, as well as periodic
calls for consensus that lead to a new published Internet-Draft.)</t>
        </section>
        <section anchor="proposed-text-based-on-ietf-117-and-2023-08-30-core-wg-interim-discussion">
          <name>Proposed text based on IETF 117 and 2023-08-30 CoRE WG interim discussion</name>
          <t>This section describes the process that will be used for developing
the present document (called "-corr-clar" colloquially).</t>
          <t>This process might be revised as its execution progresses.</t>
          <ol spacing="normal" type="1" start="0"><li>
              <t>(Done as of this a draft): include the present process proposal.<br/>
The document can then already be considered for WG adoption.</t>
            </li>
            <li>
              <t>Go through the following available material and revise/create
Github issues at <eref target="https://github.com/core-wg/corrclar/issues">ISSUES</eref> as needed:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Existing issues at <eref target="https://github.com/core-wg/corrclar/issues">ISSUES</eref>
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>More to be opened by Jon Shallow regarding Block-wise, see <eref target="https://datatracker.ietf.org/doc/minutes-interim-2023-core-11-202307051400/#attacks-on-the-constrained-application-protocol-coap-christian-amsuss-jon-shallow">JON-ISSUES</eref></t>
                    </li>
                  </ul>
                </li>
                <li>
                  <t>CoAP FAQ at the CoRE WIKI <eref target="https://github.com/core-wg/wiki/wiki/CoAP-FAQ">WIKI-FAQ</eref>
                  </t>
                  <ul spacing="normal">
                    <li>
                      <t>Each point likely to become a new, short issue</t>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li>
              <t>Categorize the Github issues at <eref target="https://github.com/core-wg/corrclar/issues">ISSUES</eref> as to the topics they relate to, by tagging them.<br/>
Completing a first round of this will be a task for a dedicated team.</t>
            </li>
            <li>
              <t>For each issue or set of issues at <eref target="https://github.com/core-wg/corrclar/issues">ISSUES</eref>, confirm with the CoRE
WG and gather feedback from affected protocol
designers/implementors if the issue is best to be:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Included and covered in -corr-clar, as is or revised</t>
                </li>
                <li>
                  <t>Simply omitted in -corr-clar</t>
                </li>
                <li>
                  <t>Omitted in -corr-clar and left for a possible -bis document.<br/>
(For example, this might be the case for some specific points related to RFC 7959.)</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Reshape the -corr-clar document in order to reflect a sequence of
 pairs (Diagnosis, Therapy), where:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Diagnosis is the gist of a set of Github issues to cover, and</t>
                </li>
                <li>
                  <t>Therapy is the correction or clarification to address those.</t>
                </li>
              </ul>
              <t>
Even though at a high-level, the scope should be already clear by
looking at the table of contents.
That is, at this stage, there is no need to necessarily elaborate
the Therapy in detail, but it is necessary to make a reader
understand "what we are dealing with and taking which direction".</t>
            </li>
            <li>
              <t>WG document work can then focus on improving the therapy parts,
until all points are satisfactorily addressed and documented.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
        <?line -18?>

<t>When a section of this document makes formal corrections, additions
or invalidations to text in a referenced RFC, this is clearly summarized.
The text from the RFC that is being addressed is given and labeled
"INCOMPLETE", "INCORRECT", or "INCORRECT AND INVALIDATED", followed
by the correct text labeled "CORRECTED", where applicable.  When text
is added that does not simply correct text in previous
specifications, it is given with the label "FORMAL ADDITION".</t>
        <t>Where a resolution has not yet been agreed, the resolution is marked PENDING.</t>
        <t>In this document, a reference to a section in RFC nnnn is written
as RFC nnnn-&lt;number&gt;, where &lt;number&gt; is the section number.</t>
      </section>
    </section>
    <section anchor="rfc-7252">
      <name>RFC 7252</name>
      <section anchor="rfc7252-5105-max-age">
        <name>RFC7252-5.10.5: Max-Age</name>
        <t>In the discussion of <xref target="RFC8516"/>, a comment was
made that it would be needed to define the point in time relative to
which Max-Age is defined.  A sender might reference it to the time it
actually sends the message containing the option (and paragraph 3 of
RFC7252-5.10.5 indeed requests that Max-Age be updated each time a
message is retransmitted).  The receiver of the message does not have
reliable information about the time of sending, though.  It may
instead reference the Max-Age to the time of reception.  This in
effect extends the time of Max-Age by the latency of the packet.
This extension was deemed acceptable for the purposes of <xref target="RFC8516"/>,
but may be suboptimal when Max-Age is about the lifetime of a response
object.</t>
        <dl newline="true">
          <dt>INCOMPLETE:</dt>
          <dd>
            <t>The value is intended to be current at the time of transmission.</t>
          </dd>
        </dl>
        <t>PENDING.</t>
      </section>
      <section anchor="rfc7252-721-ct-attribute-content-format-code">
        <name>RFC7252-7.2.1: "ct" Attribute (content-format code)</name>
        <t>As has been noted in <xref target="Err5078"/>, there is no information in <xref target="RFC7252"/>
about whether the "ct" target attribute can be present multiply or
not.</t>
        <t>The text does indicate that the value of the attribute <bcp14>MAY</bcp14> be "a
space-separated sequence of Content-Format codes, indicating that
multiple content-formats are available", but it does not repeat the
prohibition of multiple instances that the analogously structured "rt"
and "if" attributes in Sections <xref target="RFC6690" section="3.1" sectionFormat="bare"/> and <xref target="RFC6690" section="3.2" sectionFormat="bare"/> of <xref target="RFC6690"/> have.</t>
        <t>This appears to be an oversight.
Published examples in <xref section="4.1" sectionFormat="of" target="RFC9148"/> and <xref section="4.3" sectionFormat="of" target="RFC9176"/> further illustrate that the space-separated approach is
generally accepted to be the one to be used.
There is no gain to be had from allowing both variants, and it would
be likely to cause interoperability problems.</t>
        <t>At the 2022-11-23 CoRE WG interim meeting, there was agreement that
<xref target="Err5078"/> should be marked "VERIFIED", which was done on 2023-01-18.</t>
        <dl newline="true">
          <dt>INCOMPLETE; FORMAL ADDITION:</dt>
          <dd>
            <t>The Content-Format code attribute <bcp14>MUST NOT</bcp14> appear more than once in a
link.</t>
          </dd>
        </dl>
      </section>
      <section anchor="ct">
        <name>RFC 7252-12.3: Content-Format Registry</name>
        <t><xref section="12.3" sectionFormat="of" target="RFC7252"/> established the CoAP Content-Formats
Registry, which maps a combination of an Internet Media Type
with an HTTP Content Coding, collectively called a Content-Format, to
a concise numeric identifier for that Content-Format.
The "Media Type" is more than a Media-Type-Name (see <xref target="RFC9193"/> for an
extensive discussion), i.e., it may contain parameters beyond the mere
combination of a type-name and a subtype-name registered in
<xref target="IANA.media-types"/>, as per <xref target="RFC6838"/>, conventionally identified by
the two names separated by a slash.
This construct is often called a Content Type to reduce the confusion
with a Media-Type-Name (e.g., in <xref section="8.3" sectionFormat="of" target="RFC9110"/>, which then
however also opts to use the term Media Type for the same information set).</t>
        <t>The second column of the Content-Format registry is the Content
Coding, which is defined in <xref section="8.4.1" sectionFormat="of" target="RFC9110"/>.
For historical reasons, the HTTP header field that actually carries
the content coding is called Content-Encoding; this often leads to the
misnaming of Content Coding as "content encoding".</t>
        <t>As has been noted in <xref target="Err4954"/>, the text in <xref section="12.3" sectionFormat="of" target="RFC7252"/>
incorrectly uses these terms in the context of content types and
content coding:</t>
        <ol spacing="normal" type="1"><li>
            <t>The field that describes the Content Type is called "Media Type".
This can lead to the misunderstanding that this column just carries
a Media-Type-Name (such as "<tt>text/plain</tt>"), while it actually also
can carry media type parameters (as in "<tt>text/plain; charset=UTF-8</tt>").</t>
          </li>
          <li>
            <t>The field that describes the Content Coding uses the incorrect name
"Content Encoding".</t>
          </li>
        </ol>
        <dl newline="true">
          <dt>INCORRECT, CORRECTED:</dt>
          <dd>
            <t>The VERIFIED Errata Report <xref target="Err4954"/> corrects the usage of
"Content-Encoding" in the text and changes the name of the first
column of the Content-Format registry to "Content Type" and the name
of the second field to "Content Coding"; this change has been
carried out by IANA.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no new requests to IANA.</t>
      <t>Individual clarifications may contain IANA considerations; as for
example in <xref target="ct"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document provides a number of corrections and clarifications to
existing RFCs, but it does not make any changes with regard to the security
aspects of the protocol.  As a consequence, the security
considerations of the referenced RFCs apply without additions.</t>
      <t>(To be changed when that is no longer true; probably the security
considerations will then be on the individual clarifications.)</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6690">
          <front>
            <title>Constrained RESTful Environments (CoRE) Link Format</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <date month="August" year="2012"/>
            <abstract>
              <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6690"/>
          <seriesInfo name="DOI" value="10.17487/RFC6690"/>
        </reference>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks. Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates. In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS). These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs. In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers. Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations. Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <reference anchor="RFC8132">
          <front>
            <title>PATCH and FETCH Methods for the Constrained Application Protocol (CoAP)</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="A. Sehgal" initials="A." surname="Sehgal"/>
            <date month="April" year="2017"/>
            <abstract>
              <t>The methods defined in RFC 7252 for the Constrained Application Protocol (CoAP) only allow access to a complete resource, not to parts of a resource. In case of resources with larger or complex data, or in situations where resource continuity is required, replacing or requesting the whole resource is undesirable. Several applications using CoAP need to access parts of the resources.</t>
              <t>This specification defines the new CoAP methods, FETCH, PATCH, and iPATCH, which are used to access and update parts of a resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8132"/>
          <seriesInfo name="DOI" value="10.17487/RFC8132"/>
        </reference>
        <reference anchor="RFC8323">
          <front>
            <title>CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="S. Lemay" initials="S." surname="Lemay"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="B. Silverajan" initials="B." surname="Silverajan"/>
            <author fullname="B. Raymor" initials="B." role="editor" surname="Raymor"/>
            <date month="February" year="2018"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP), although inspired by HTTP, was designed to use UDP instead of TCP. The message layer of CoAP over UDP includes support for reliable delivery, simple congestion control, and flow control.</t>
              <t>Some environments benefit from the availability of CoAP carried over reliable transports such as TCP or Transport Layer Security (TLS). This document outlines the changes required to use CoAP over TCP, TLS, and WebSockets transports. It also formally updates RFC 7641 for use with these transports and RFC 7959 to enable the use of larger messages over a reliable transport.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8323"/>
          <seriesInfo name="DOI" value="10.17487/RFC8323"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <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="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8516">
          <front>
            <title>"Too Many Requests" Response Code for the Constrained Application Protocol</title>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <date month="January" year="2019"/>
            <abstract>
              <t>A Constrained Application Protocol (CoAP) server can experience temporary overload because one or more clients are sending requests to the server at a higher rate than the server is capable or willing to handle. This document defines a new CoAP response code for a server to indicate that a client should reduce the rate of requests.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8516"/>
          <seriesInfo name="DOI" value="10.17487/RFC8516"/>
        </reference>
        <reference anchor="Err4954" target="https://www.rfc-editor.org/errata/eid5078">
          <front>
            <title>Errata Report 4954</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
          <seriesInfo name="RFC" value="7252"/>
        </reference>
        <reference anchor="Err5078" target="https://www.rfc-editor.org/errata/eid5078">
          <front>
            <title>Errata Report 5078</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
          <seriesInfo name="RFC" value="7252"/>
        </reference>
        <reference anchor="RFC9148">
          <front>
            <title>EST-coaps: Enrollment over Secure Transport with the Secure Constrained Application Protocol</title>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="S. Raza" initials="S." surname="Raza"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>Enrollment over Secure Transport (EST) is used as a certificate provisioning protocol over HTTPS. Low-resource devices often use the lightweight Constrained Application Protocol (CoAP) for message exchanges. This document defines how to transport EST payloads over secure CoAP (EST-coaps), which allows constrained devices to use existing EST functionality for provisioning certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9148"/>
          <seriesInfo name="DOI" value="10.17487/RFC9148"/>
        </reference>
        <reference anchor="RFC9176">
          <front>
            <title>Constrained RESTful Environments (CoRE) Resource Directory</title>
            <author fullname="C. Amsüss" initials="C." role="editor" surname="Amsüss"/>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="M. Koster" initials="M." surname="Koster"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>In many Internet of Things (IoT) applications, direct discovery of resources is not practical due to sleeping nodes or networks where multicast traffic is inefficient. These problems can be solved by employing an entity called a Resource Directory (RD), which contains information about resources held on other servers, allowing lookups to be performed for those resources. The input to an RD is composed of links, and the output is composed of links constructed from the information stored in the RD. This document specifies the web interfaces that an RD supports for web servers to discover the RD and to register, maintain, look up, and remove information on resources. Furthermore, new target attributes useful in conjunction with an RD are defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9176"/>
          <seriesInfo name="DOI" value="10.17487/RFC9176"/>
        </reference>
        <reference anchor="RFC9193">
          <front>
            <title>Sensor Measurement Lists (SenML) Fields for Indicating Data Value Content-Format</title>
            <author fullname="A. Keränen" initials="A." surname="Keränen"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Sensor Measurement Lists (SenML) media types support multiple types of values, from numbers to text strings and arbitrary binary Data Values. In order to facilitate processing of binary Data Values, this document specifies a pair of new SenML fields for indicating the content format of those binary Data Values, i.e., their Internet media type, including parameters as well as any content codings applied.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9193"/>
          <seriesInfo name="DOI" value="10.17487/RFC9193"/>
        </reference>
        <reference anchor="IANA.media-types" target="https://www.iana.org/assignments/media-types">
          <front>
            <title>Media Types</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
      </references>
    </references>
    <?line 309?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The present document is modeled after RFC 4815 and the Internet-Drafts
of the ROHC WG that led to it.  Many thanks to the co-chairs of the
ROHC WG and WG members that made this a worthwhile and successful
experiment at the time.</t>
      <!--  LocalWords:  interoperate invalidations retransmitted ROHC
 -->
<!--  LocalWords:  suboptimal
 -->

</section>
  </back>
  <!-- ##markdown-source:
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
mWxCvyDZtirCMp+KLQ3MhUT7V2Jrf5kjWPy1xy1kl3OV0+qa7yLQPUBT8KJr
zV7P/Hfjy55haXVXfK7TOdCG9d98uH6RnGKDAR+s/CbhBP1HjehWTRwsiKJe
HHrRsYtPpEMu+Pu6rfxjHow5dueSXMeIYplfh7tJVC9RE77dujXuXrQUNhM+
2UBYnwXaOYQGz+azHqV/o79D6b2uufTao/0ghXgPTYJIkGpnkoixF5xPiGo9
h8hgO8k0oXZEXQ7rfEEKP/gGFJ0xhrs46voTzSXurK86tWoZF7ncnIXvXA7p
pijeKN3a6DmZJl0PCUBUPBj44Z5Jgys3FSGyL5PXHv13L1KkO7d8H9x0w57h
LFOuMu1Ce2n7F+tWv5xY5OQyumgdCFSGukGby4Kxy0wNBgEtRSxK+tsTt+UR
52/34uRqxJoJIO21HT0Iae9aqkemsXNxI+Bkuq9G1VnV2OebSydfooBPI/kY
YsIQVDzyM/ql0y66bkcniKSwcXpTlCuEuBnj35qcVFRis2++Kkr46Wcv6SyA
TjnNI21UDDaPT4cnrRdsX0yoVZDU1dsfzgiOh0sNWXtX5DWpjhDXTXtmm5YJ
5ESnajJZxcm0B/5bWKK0vZLJjSc+1V8hWswlYNJQxFQ6Hpo2OWyIrlosdgp3
6OXr30Es+lWJiP8jtfVHeuv+2E4jdquPwzwpnSTffmqVTZdChvwLqQlBbXUv
AAA=

-->

</rfc>
