<?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.0.40 -->

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

<?rfc strict="yes"?>
<?rfc toc="yes"?>
<?rfc tocdepth="2"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="no"?>
<?rfc subcompact="no"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-core-coap-tcp-tls-09" category="std" updates="7252, 7641, 7959">

  <front>
    <title abbrev="TCP/TLS/WebSockets Transports for CoAP">CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets</title>

    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universitaet 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>
    <author initials="S." surname="Lemay" fullname="Simon Lemay">
      <organization>Zebra Technologies</organization>
      <address>
        <postal>
          <street>820 W. Jackson Blvd. Suite 700</street>
          <city>Chicago</city>
          <code>60607</code>
          <country>United States of America</country>
        </postal>
        <phone>+1-847-634-6700</phone>
        <email>slemay@zebra.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization>ARM Ltd.</organization>
      <address>
        <postal>
          <street>110 Fulbourn Rd</street>
          <city>Cambridge</city>
          <code>CB1 9NJ</code>
          <country>Great Britain</country>
        </postal>
        <email>Hannes.tschofenig@gmx.net</email>
        <uri>http://www.tschofenig.priv.at</uri>
      </address>
    </author>
    <author initials="K." surname="Hartke" fullname="Klaus Hartke">
      <organization>Universitaet Bremen TZI</organization>
      <address>
        <postal>
          <street>Postfach 330440</street>
          <city>Bremen</city>
          <code>D-28359</code>
          <country>Germany</country>
        </postal>
        <phone>+49-421-218-63905</phone>
        <email>hartke@tzi.org</email>
      </address>
    </author>
    <author initials="B." surname="Silverajan" fullname="Bilhanan Silverajan">
      <organization>Tampere University of Technology</organization>
      <address>
        <postal>
          <street>Korkeakoulunkatu 10</street>
          <city>Tampere</city>
          <code>FI-33720</code>
          <country>Finland</country>
        </postal>
        <email>bilhanan.silverajan@tut.fi</email>
      </address>
    </author>
    <author initials="B." surname="Raymor" fullname="Brian Raymor" role="editor">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <street>One Microsoft Way</street>
          <city>Redmond</city>
          <code>98052</code>
          <country>United States of America</country>
        </postal>
        <email>brian.raymor@microsoft.com</email>
      </address>
    </author>

    <date year="2017" month="May" day="16"/>

    <area>Applications Area (app)</area>
    <workgroup>CORE</workgroup>
    

    <abstract>


<t>The Constrained Application Protocol (CoAP), although inspired by HTTP, was designed to use UDP
instead of TCP. The message layer of the CoAP over UDP protocol 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 TLS. This document outlines the changes required to use
CoAP over TCP, TLS, and WebSockets transports. It also formally
updates RFC 7252 fixing an erratum in the URI syntax, RFC 7641
for use with the new transports, and RFC 7959 to enable the use of larger messages over
a reliable transport.</t>



    </abstract>


  </front>

  <middle>


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

<t>The <xref target="RFC7252">Constrained Application Protocol (CoAP)</xref> was designed
for Internet of Things (IoT) deployments, assuming that UDP <xref target="RFC0768"/> 
or Datagram Transport Layer Security (DTLS) <xref target="RFC6347"/> over UDP can be
used unimpeded. UDP is a good choice for transferring small amounts of
data across networks that follow the IP architecture.</t>

<t>Some CoAP deployments need to integrate well with existing enterprise
infrastructures, where UDP-based protocols may not be well-received or may
even be blocked by firewalls. Middleboxes that are unaware of CoAP usage for
IoT can make the use of UDP brittle, resulting in lost or malformed packets.</t>

<t>Emerging standards such as Lightweight Machine to Machine <xref target="LWM2M"/> currently use CoAP over UDP
as a transport and require support for CoAP over TCP to address the issues above and to protect
investments in existing CoAP implementations and deployments. Although HTTP/2 could also potentially
address these requirements, there would be additional costs and delays introduced by such a transition.
Currently, there are also fewer HTTP/2 implementations available for constrained devices in
comparison to CoAP.</t>

<t>To address these requirements, this document defines how to transport
CoAP over TCP, CoAP over TLS, and CoAP over WebSockets.  For these cases, the
reliability offered by the transport protocol subsumes the reliability
functions of the message layer used for CoAP over UDP.
(Note that both for a reliable transport and the CoAP over UDP message
layer, the reliability offered is per transport hop: where proxies —
see Sections 5.7 and 10 of <xref target="RFC7252"/> — are involved, that layer’s
reliability function does not extend end-to-end.)
<xref target="fig-layering"/> illustrates the layering:</t>

<figure title="Layering of CoAP over Reliable Transports" anchor="fig-layering"><artwork align="center"><![CDATA[
        +--------------------------------+
        |          Application           |
        +--------------------------------+
        +--------------------------------+
        |  Requests/Responses/Signaling  |  CoAP (RFC 7252) / This Document
        |--------------------------------|
        |        Message Framing         |  This Document
        +--------------------------------+
        |      Reliable Transport        |
        +--------------------------------+
]]></artwork></figure>

<t>Where NATs are present, CoAP over TCP can help with their traversal.
NATs often calculate expiration timers based on the transport layer protocol
being used by application protocols. Many NATs maintain TCP-based NAT bindings
for longer periods based on the assumption that a transport layer protocol, such
as TCP, offers additional information about the session life cycle. UDP, on the other
hand, does not provide such information to a NAT and timeouts tend to be much 
shorter <xref target="HomeGateway"/>.</t>

<t>Some environments may also benefit from the ability of TCP to exchange
larger payloads, such as firmware images, without application layer
segmentation and to utilize the more sophisticated congestion control
capabilities provided by many TCP implementations. Note that there is
ongoing work to add more elaborate congestion control to CoAP (see <xref target="I-D.ietf-core-cocoa"/>).</t>

<t>CoAP may be integrated into a Web environment where the front-end
uses CoAP over UDP from IoT devices to a cloud infrastructure and then CoAP
over TCP between the back-end services. A TCP-to-UDP gateway can be used at
the cloud boundary to communicate with the UDP-based IoT device.</t>

<t>To allow IoT devices to better communicate in these demanding environments, CoAP
needs to support different transport protocols, namely TCP <xref target="RFC0793"/>,
in some situations secured by TLS <xref target="RFC5246"/>.</t>

<t>CoAP applications running inside a web browser without access to
connectivity other than HTTP and the <xref target="RFC6455">WebSocket protocol</xref>
may cross-proxy their CoAP requests via HTTP to a HTTP-to-CoAP
cross-proxy or transport them via the the WebSocket protocol, which
provides two-way communication between a WebSocket client and a
WebSocket server after upgrading an <xref target="RFC7230">HTTP/1.1</xref> connection.</t>

<t>This document specifies how to access resources using CoAP requests
and responses over the TCP, TLS and WebSocket protocols. This allows
connectivity-limited applications to obtain end-to-end CoAP
connectivity either by communicating CoAP directly with a CoAP server
accessible over a TCP, TLS or WebSocket connection or via a CoAP intermediary
that proxies CoAP requests and responses between different transports,
such as between WebSockets and UDP.</t>

<t><xref target="observing"/> updates the <xref target="RFC7641">“Observing Resources in the Constrained Application Protocol”</xref> specification 
for use with CoAP over reliable transports. <xref target="RFC7641"/> is an extension to the CoAP 
protocol that enables CoAP clients to “observe” a resource on a CoAP server. (The CoAP client
retrieves a representation of a resource and registers to be notified by the CoAP server when
the representation is updated.)</t>

<t><xref target="URI"/> fixes an erratum on the URI scheme syntax in <xref target="RFC7252"/>.
<xref target="bert"/> defines semantics for a value 7 for the field “SZX” in a
Block1 or Block2 option, updating <xref target="RFC7959"/>.</t>

</section>
<section anchor="conventions-and-terminology" title="Conventions and Terminology">

<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 <xref target="RFC2119"/>.</t>

<t>This document assumes that readers are familiar with the terms and
concepts that are used in <xref target="RFC6455"/>, <xref target="RFC7252"/>, <xref target="RFC7641"/>, and <xref target="RFC7959"/>.</t>

<t>The term “reliable transport” is used only to refer to transport protocols, such
as TCP, which provide reliable and ordered delivery of a byte-stream.</t>

<t><list style="hanging">
  <t hangText='Block-wise Extension for Reliable Transport (BERT):'><vspace blankLines='0'/>
  BERT extends <xref target="RFC7959"/> to enable the use of larger messages over a reliable
transport.</t>
  <t hangText='BERT Option:'><vspace blankLines='0'/>
  A Block1 or Block2 option that includes an SZX value of 7.</t>
  <t hangText='BERT Block:'><vspace blankLines='0'/>
  The payload of a CoAP message that is affected by a BERT Option in
descriptive usage (see Section 2.1 of <xref target="RFC7959"/>).</t>
  <t hangText='Connection Initiator:'><vspace blankLines='0'/>
  The peer that opens a reliable byte stream connection, i.e., the
TCP active opener, TLS client, or WebSocket client.</t>
  <t hangText='Connection Acceptor:'><vspace blankLines='0'/>
  The peer that accepts the reliable byte stream connection opened by
the other peer, i.e., the TCP passive opener, TLS server, or
WebSocket server.</t>
</list></t>

<t>For simplicity, a Payload Marker (0xFF) is shown in all examples for message formats:</t>

<figure><artwork><![CDATA[
    ...
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |1 1 1 1 1 1 1 1|    Payload (if any) ...
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The Payload Marker indicates the start of the optional payload and is absent for zero-length
payloads (see Section 3 of <xref target="RFC7252"/>).</t>

</section>
<section anchor="coap-over-tcp" title="CoAP over TCP">

<t>The request/response interaction model of CoAP over TCP is the same as CoAP over UDP.
The primary differences are in the message layer. The message layer of CoAP over UDP
supports optional reliability by defining four types of messages: Confirmable,
Non-confirmable, Acknowledgement, and Reset. In addition, messages include a
Message ID to relate Acknowledgments to Confirmable messages and to detect duplicate
messages.</t>

<section anchor="messaging-model" title="Messaging Model">

<t>Conceptually, CoAP over TCP replaces most of the message layer of CoAP over UDP
with a framing mechanism on top of the byte-stream provided by TCP/TLS,
conveying the length information for each message that on datagram transports
is provided by the UDP/DTLS datagram layer.</t>

<t>TCP ensures reliable message transmission, so the message layer of CoAP over TCP
is not required to support acknowledgements or to detect duplicate
messages. As a result, both the Type and Message ID fields are no longer required
and are removed from the CoAP over TCP message format.</t>

<t><xref target="fig-flow-comparison"/> illustrates the difference between CoAP over UDP and
CoAP over reliable transport. The removed Type and Message ID fields
are indicated by dashes.</t>

<figure title="Comparison between CoAP over unreliable and reliable transport" anchor="fig-flow-comparison"><artwork align="center"><![CDATA[
CoAP Client       CoAP Server  CoAP Client       CoAP Server
    |                    |         |                    |
    |   CON [0xbc90]     |         | (-------) [------] |
    | GET /temperature   |         | GET /temperature   |
    |   (Token 0x71)     |         |   (Token 0x71)     |
    +------------------->|         +------------------->|
    |                    |         |                    |
    |   ACK [0xbc90]     |         | (-------) [------] |
    |   2.05 Content     |         |   2.05 Content     |
    |   (Token 0x71)     |         |   (Token 0x71)     |
    |     "22.5 C"       |         |     "22.5 C"       |
    |<-------------------+         |<-------------------+
    |                    |         |                    |

        CoAP over UDP                CoAP over reliable
                                         transport
]]></artwork></figure>

</section>
<section anchor="tcp-message-format" title="Message Format">

<t>The CoAP message format defined in <xref target="RFC7252"/>, as shown in 
<xref target="CoAP-Header"/>, relies on the datagram transport (UDP, or DTLS over
UDP) for keeping the individual messages separate and for providing 
length information.</t>

<figure title="RFC 7252 defined CoAP Message Format" anchor="CoAP-Header"><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver| T |  TKL  |      Code     |          Message ID           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Token (if any, TKL bytes) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Options (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 1 1|    Payload (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The CoAP over TCP message format is very similar to the format
specified for CoAP over UDP. The differences are as follows:</t>

<t><list style="symbols">
  <t>Since the underlying TCP connection provides retransmissions and
deduplication, there is no need for the reliability mechanisms
provided by CoAP over UDP. The Type (T) and Message ID fields in
the CoAP message header are elided.</t>
  <t>The Version (Vers) field is elided as well. In contrast to the message format
of CoAP over UDP, the message format for CoAP over TCP does not include a version
number. CoAP is defined in <xref target="RFC7252"/> with a version number of 1. At this time,
there is no known reason to support version numbers different from 1. If version
negotiation needs to be addressed in the future, then Capabilities and Settings Messages
(CSM see <xref target="csm"/>) have been specifically designed to enable such a potential feature.</t>
  <t>In a stream oriented transport protocol such as TCP, a form of message 
delimitation is needed. For this purpose, CoAP over TCP introduces a 
length field with variable size. <xref target="fig-frame"/> shows the adjusted CoAP 
message format with a modified structure for the fixed header (first 4
bytes of the CoAP over UDP header), which includes the length information of
variable size, shown here as an 8-bit length.</t>
</list></t>

<figure title="CoAP frame with 8-bit Extended Length field" anchor="fig-frame"><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Len=13 |  TKL  |Extended Length|      Code     | TKL bytes ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Options (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 1 1|    Payload (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t><list style="hanging">
  <t hangText='Length (Len):'>
  4-bit unsigned integer. A value between 0 and 12 directly indicates the
length of the message in bytes starting with the first bit of the Options
field. Three values are reserved for special constructs:

      <list style="hanging">
        <t hangText='13:'>
        An 8-bit unsigned integer (Extended Length) follows the initial byte and indicates
the length of options/payload minus 13.</t>
        <t hangText='14:'>
        A 16-bit unsigned integer (Extended Length) in network byte order follows the
initial byte and indicates the length of options/payload minus
269.</t>
        <t hangText='15:'>
        A 32-bit unsigned integer (Extended Length) in network byte order follows the
initial byte and indicates the length of options/payload minus
65805.</t>
      </list>
  </t>
</list></t>

<t>The encoding of the Length field is modeled after the Option Length field of the CoAP Options (see Section 3.1 of <xref target="RFC7252"/>).</t>

<t>The following figures show the message format for the 0-bit, 16-bit, and 
the 32-bit variable length cases.</t>

<figure title="CoAP message format without an Extended Length field" anchor="fig-frame1"><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Len  |  TKL  |      Code     | Token (if any, TKL bytes) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Options (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 1 1|    Payload (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>For example: A CoAP message just containing a 2.03 code with the
token 7f and no options or payload would be encoded as shown in <xref target="fig-frame2"/>.</t>

<figure title="CoAP message with no options or payload" anchor="fig-frame2"><artwork><![CDATA[
 0                   1                   2
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      0x01     |      0x43     |      0x7f     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 Len   =    0 ------>  0x01
 TKL   =    1 ___/
 Code  =  2.03     --> 0x43
 Token =               0x7f
]]></artwork></figure>

<figure title="CoAP message format with 16-bit Extended Length field" anchor="fig-frame3"><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Len=14 |  TKL  | Extended Length (16 bits)     |   Code        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Token (if any, TKL bytes) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Options (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 1 1|    Payload (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<figure title="CoAP message format with 32-bit Extended Length field" anchor="fig-frame4"><artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Len=15 |  TKL  | Extended Length (32 bits)                              
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                |    Code       |  Token (if any, TKL bytes) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Options (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 1 1|    Payload (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The semantics of the other CoAP header fields are left unchanged.</t>

</section>
<section anchor="message-transmission" title="Message Transmission">

<t>Once a connection is established, both endpoints MUST send a Capabilities and Settings message (CSM see <xref target="csm"/>)
as their first message on the connection. This message establishes the initial settings and
capabilities for the endpoint, such as maximum message size or support for block-wise transfers.
The absence of options in the CSM indicates that base values are assumed.</t>

<t>To avoid a deadlock, the Connection Initiator MUST NOT wait for the
Connection Acceptor to send its initial CSM message before sending its
own initial CSM message.  Conversely, the Connection Acceptor MAY wait
for the Connection Initiator to send its initial CSM message before
sending its own initial CSM message.</t>

<t>To avoid unnecessary latency, a Connection Initiator MAY send additional messages without waiting to receive
the Connection Acceptor’s CSM; however, it is important to note that
the Connection Acceptor’s CSM might advertise capabilities
that impact how the initiator is expected to communicate with the acceptor. For example, the acceptor CSM
could advertise a Max-Message-Size option (see <xref target="max-message-size"/>) that is smaller than the base value (1152).</t>

<t>Endpoints MUST treat a missing or invalid CSM as a connection error and abort
the connection (see <xref target="sec-abort"/>).</t>

<t>CoAP requests and responses are exchanged asynchronously over the
TCP/TLS connection. A CoAP client can send multiple requests
without waiting for a response and the CoAP server can return
responses in any order. Responses MUST be returned over the same
connection as the originating request. Concurrent requests are
differentiated by their Token, which is scoped locally to the
connection.</t>

<t>The connection is bi-directional, so requests can be sent both by
the entity that established the connection (Connection Initiator) and
the remote host (Connection Acceptor).
If one side does not implement a CoAP server, an error response MUST be
returned for all CoAP requests from the other side. The simplest approach
is to always return 5.01 (Not Implemented). A more elaborate mock server
could also return 4.xx responses such as 4.04 (Not Found) or 4.02 (Bad Option)
where appropriate.</t>

<t>Retransmission and deduplication of messages is provided by the
TCP protocol.</t>

</section>
<section anchor="liveliness" title="Connection Health">

<t>Empty messages (Code 0.00) can always be sent and MUST be ignored by the
recipient. This provides a basic keep-alive function that can refresh NAT
bindings.</t>

<t>If a CoAP client does not receive any response for some time after
sending a CoAP request (or, similarly, when a client observes a
resource and it does not receive any notification for some time),
it can send a CoAP Ping Signaling message (see <xref target="sec-ping"/>) to test
the connection and verify that the CoAP server is responsive.</t>

<t>When the underlying TCP connection is closed or reset, the signaling state
and any observation state (see <xref target="observe-cancel"/>) associated with the reliable
connection are removed. In flight messages may or may not be lost.</t>

</section>
</section>
<section anchor="websockets-overview" title="CoAP over WebSockets">

<t>CoAP over WebSockets is intentionally similar to CoAP over TCP; therefore,
this section only specifies the differences between the transports.</t>

<t>CoAP over WebSockets can be used in a number of configurations. The
most basic configuration is a CoAP client retrieving or updating a
CoAP resource located on a CoAP server that exposes a WebSocket endpoint
(see <xref target="arch-1"/>). The CoAP client acts as the WebSocket client, establishes
a WebSocket connection, and sends a CoAP request, to which the CoAP server
returns a CoAP response. The WebSocket connection can be used for any number
of requests.</t>

<figure title="CoAP Client (WebSocket client) accesses CoAP Server (WebSocket server)" anchor="arch-1"><artwork align="center"><![CDATA[
 ___________                            ___________
|           |                          |           |
|          _|___      requests      ___|_          |
|   CoAP  /  \  \  ------------->  /  /  \  CoAP   |
|  Client \__/__/  <-------------  \__\__/ Server  |
|           |         responses        |           |
|___________|                          |___________|
        WebSocket  =============>  WebSocket
          Client     Connection     Server
]]></artwork></figure>

<t>The challenge with this configuration is how to identify a resource in the
namespace of the CoAP server. When the WebSocket protocol is used by
a dedicated client directly (i.e., not from a web page through a web browser),
the client can connect to any WebSocket endpoint. <xref target="coap-ws-scheme"/> and
<xref target="coaps-ws-scheme"/> define how the “coap” and “coaps” URI schemes can
be used to enable the client to identify both a WebSocket endpoint and
the path and query of the CoAP resource within that endpoint.</t>

<t>Another possible configuration is to set up a CoAP forward proxy
at the WebSocket endpoint. Depending on what transports are available
to the proxy, it could forward the request to a CoAP server with a
CoAP UDP endpoint (<xref target="arch-2"/>), an SMS endpoint (a.k.a. mobile phone),
or even another WebSocket endpoint. The CoAP client specifies the resource to be
updated or retrieved in the Proxy-Uri Option.</t>

<figure title="CoAP Client (WebSocket client) accesses CoAP Server (UDP server) via a CoAP proxy (WebSocket server/UDP client)" anchor="arch-2"><artwork align="center"><![CDATA[
 ___________                ___________                ___________
|           |              |           |              |           |
|          _|___        ___|_         _|___        ___|_          |
|   CoAP  /  \  \ ---> /  /  \ CoAP  /  \  \ ---> /  /  \  CoAP   |
|  Client \__/__/ <--- \__\__/ Proxy \__/__/ <--- \__\__/ Server  |
|           |              |           |              |           |
|___________|              |___________|              |___________|
        WebSocket ===> WebSocket      UDP            UDP
          Client        Server      Client          Server
]]></artwork></figure>

<t>A third possible configuration is a CoAP server running inside a web browser
(<xref target="arch-3"/>). The web browser initially connects to a WebSocket endpoint and
is then reachable through the WebSocket server. When no connection exists, the
CoAP server is unreachable. Because the WebSocket server is the only way to
reach the CoAP server, the CoAP proxy should be a reverse-proxy.</t>

<figure title="CoAP Client (UDP client) accesses CoAP Server (WebSocket client) via a CoAP proxy (UDP server/WebSocket server)" anchor="arch-3"><artwork align="center"><![CDATA[
 ___________                ___________                ___________
|           |              |           |              |           |
|          _|___        ___|_         _|___        ___|_          |
|   CoAP  /  \  \ ---> /  /  \ CoAP  /  /  \ ---> /  \  \  CoAP   |
|  Client \__/__/ <--- \__\__/ Proxy \__\__/ <--- \__/__/ Server  |
|           |              |           |              |           |
|___________|              |___________|              |___________|
           UDP            UDP      WebSocket <=== WebSocket
         Client          Server      Server        Client
]]></artwork></figure>

<t>Further configurations are possible, including those where a
WebSocket connection is established through an HTTP proxy.</t>

<section anchor="handshake" title="Opening Handshake">

<t>Before CoAP requests and responses are exchanged, a WebSocket
connection is established as defined in Section 4 of <xref target="RFC6455"/>.
<xref target="handshake-example"/> shows an example.</t>

<t>The WebSocket client MUST include the subprotocol name “coap” in
the list of protocols, which indicates support for the protocol
defined in this document. Any later, incompatible versions of
CoAP or CoAP over WebSockets will use a different subprotocol
name.</t>

<t>The WebSocket client includes the hostname of the WebSocket server
in the Host header field of its handshake as per <xref target="RFC6455"/>. The Host
header field also indicates the default value of the Uri-Host Option in
requests from the WebSocket client to the WebSocket server.</t>

<figure title="Example of an Opening Handshake" anchor="handshake-example"><artwork align="center"><![CDATA[
GET /.well-known/coap HTTP/1.1
Host: example.org
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Protocol: coap
Sec-WebSocket-Version: 13

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: coap
]]></artwork></figure>

</section>
<section anchor="websocket-message-format" title="Message Format">

<t>Once a WebSocket connection is established, CoAP requests and
responses can be exchanged as WebSocket messages. Since CoAP uses a
binary message format, the messages are transmitted in binary data
frames as specified in Sections 5 and 6 of <xref target="RFC6455"/>.</t>

<t>The message format shown in <xref target="ws-message-format"/> is the same as the CoAP
over TCP message format (see <xref target="tcp-message-format"/>) with one change. The
Length (Len) field MUST be set to zero because the WebSockets frame contains
the length.</t>

<figure title="CoAP Message Format over WebSockets" anchor="ws-message-format"><artwork align="center"><![CDATA[
  0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Len=0 |  TKL  |      Code     |    Token (TKL bytes) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Options (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 1 1|    Payload (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>As with CoAP over TCP, the message format for CoAP over WebSockets
eliminates the Version field defined in CoAP over UDP. If CoAP version
negotiation is required in the future, CoAP over WebSockets can address
the requirement by the definition of a new subprotocol identifier that is
negotiated during the opening handshake.</t>

<t>Requests and response messages can be fragmented as specified in
Section 5.4 of <xref target="RFC6455"/>, though typically they are sent unfragmented
as they tend to be small and fully buffered before transmission. The WebSocket
protocol does not provide means for multiplexing. If it is not desirable for a
large message to monopolize the connection, requests and responses can be
transferred in a block-wise fashion as defined in <xref target="RFC7959"/>.</t>

</section>
<section anchor="requests-responses" title="Message Transmission">

<t>As with CoAP over TCP, both endpoints MUST send a Capabilities
and Settings message (CSM see <xref target="csm"/>) as their first message on the WebSocket connection.</t>

<t>CoAP requests and responses are exchanged asynchronously over the
WebSocket connection. A CoAP client can send multiple requests
without waiting for a response and the CoAP server can return
responses in any order. Responses MUST be returned over the same
connection as the originating request. Concurrent requests are
differentiated by their Token, which is scoped locally to the
connection.</t>

<t>The connection is bi-directional, so requests can be sent both by
the entity that established the connection and the remote host.</t>

<t>As with CoAP over TCP, retransmission and deduplication of messages is provided by the
WebSocket protocol. CoAP over WebSockets therefore does not make a
distinction between Confirmable or Non-Confirmable messages, and does
not provide Acknowledgement or Reset messages.</t>

</section>
<section anchor="ws-liveliness" title="Connection Health">

<t>As with CoAP over TCP, a CoAP client can test the health of the CoAP over WebSocket
connection by sending a CoAP Ping Signaling message (<xref target="sec-ping"/>). WebSocket Ping
and unsolicited Pong frames (Section 5.5 of <xref target="RFC6455"/>) SHOULD NOT be used to ensure
that redundant maintenance traffic is not transmitted.</t>

</section>
</section>
<section anchor="signaling" title="Signaling">

<t>Signaling messages are introduced to allow peers to:</t>

<t><list style="symbols">
  <t>Learn related characteristics, such as maximum message size for the connection</t>
  <t>Shut down the connection in an orderly fashion</t>
  <t>Provide diagnostic information when terminating a connection in response to a serious error condition</t>
</list></t>

<t>Signaling is a third basic kind of message in CoAP, after requests and responses. 
Signaling messages share a common structure with the existing CoAP messages.
There is a code, a token, options, and an optional payload.</t>

<t>(See Section 3 of <xref target="RFC7252"/> for the overall structure of the message format, option format, and option value format.)</t>

<section anchor="signaling-codes" title="Signaling Codes">

<t>A code in the 7.00-7.31 range indicates a Signaling message. Values in this
range are assigned by the “CoAP Signaling Codes” sub-registry (see <xref target="message-codes"/>).</t>

<t>For each message, there is a sender and a peer receiving the message.</t>

<t>Payloads in Signaling messages are diagnostic payloads as defined in Section
5.5.2 of <xref target="RFC7252"/>), unless otherwise defined by a Signaling
message option.</t>

</section>
<section anchor="signaling-option-numbers" title="Signaling Option Numbers">

<t>Option numbers for Signaling messages are specific to the message
code. They do not share the number space with CoAP options for
request/response messages or with Signaling messages using other
codes.</t>

<t>Option numbers are assigned by the “CoAP Signaling Option Numbers”
sub-registry (see <xref target="option-codes"/>).</t>

<t>Signaling options are elective or critical as defined in Section 5.4.1
of <xref target="RFC7252"/>. If a Signaling option is critical and not understood by
the receiver, it MUST abort the connection (see <xref target="sec-abort"/>). If the
option is understood but cannot be processed, the option documents the behavior.</t>

</section>
<section anchor="csm" title="Capabilities and Settings Messages (CSM)">

<t>Capabilities and Settings messages (CSM) are used for two purposes:</t>

<t><list style="symbols">
  <t>Each capability option advertises one capability of the sender to the recipient.</t>
  <t>Each setting option indicates a setting that will be applied by the sender.</t>
</list></t>

<t>One CSM MUST be sent by both endpoints at the start of the connection. Further
CSM MAY be sent at any other time by either endpoint over the lifetime of
the connection.</t>

<t>Both capability and setting options are cumulative. A CSM does not invalidate a previously sent capability indication or setting
even if it is not repeated. A capability message without any option is a no-operation (and
can be used as such). An option that is sent might override a previous value for
the same option. The option defines how to handle this case if needed.</t>

<t>Base values are listed below for CSM Options. These are the values for the
capability and setting before any Capabilities and Settings messages send a
modified value.</t>

<t>These are not default values for the option, as defined in Section 5.4.4 in <xref target="RFC7252"/>.
A default value would mean that an empty Capabilities and Settings message would result in
the option being set to its default value.</t>

<t>Capabilities and Settings messages are indicated by the 7.01 code (CSM).</t>

<section anchor="max-message-size" title="Max-Message-Size Capability Option">

<t>The sender can use the elective Max-Message-Size Option to indicate the maximum message size
in bytes that it can receive.</t>

<texttable title="C=Critical, R=Repeatable">
      <ttcol width='2em' align='right'>#</ttcol>
      <ttcol align='left'>C</ttcol>
      <ttcol align='left'>R</ttcol>
      <ttcol width='8em' align='left'>Applies to</ttcol>
      <ttcol width='17em' align='left'>Name</ttcol>
      <ttcol width='6em' align='right'>Format</ttcol>
      <ttcol width='6em' align='right'>Length</ttcol>
      <ttcol width='7em' align='left'>Base Value</ttcol>
      <c>2</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>CSM</c>
      <c>Max-Message-Size</c>
      <c>uint</c>
      <c>0-4</c>
      <c>1152</c>
</texttable>

<t>As per Section 4.6 of <xref target="RFC7252"/>, the base value (and the value used when this option
is not implemented) is 1152.</t>

<t>The active value of the Max-Message-Size Option is replaced each time the option
is sent with a modified value. Its starting value is its base value.</t>

</section>
<section anchor="block-wise-transfer-capability-option" title="Block-wise Transfer Capability Option">

<texttable title="C=Critical, R=Repeatable">
      <ttcol width='2em' align='right'>#</ttcol>
      <ttcol align='left'>C</ttcol>
      <ttcol align='left'>R</ttcol>
      <ttcol width='8em' align='left'>Applies to</ttcol>
      <ttcol width='17em' align='left'>Name</ttcol>
      <ttcol width='6em' align='right'>Format</ttcol>
      <ttcol width='6em' align='right'>Length</ttcol>
      <ttcol width='7em' align='left'>Base Value</ttcol>
      <c>4</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>CSM</c>
      <c>Block-wise Transfer</c>
      <c>empty</c>
      <c>0</c>
      <c>(none)</c>
</texttable>

<t>A sender can use the elective Block-wise Transfer Option to indicate that it
supports the block-wise transfer protocol <xref target="RFC7959"/>.</t>

<t>If the option is not given, the peer has no information about whether block-wise
transfers are supported by the sender or not. An implementation that supports
block-wise transfers SHOULD indicate the Block-wise Transfer Option. If a
Max-Message-Size Option is indicated with a value that is greater than 1152
(in the same or a different CSM message), the Block-wise Transfer Option also
indicates support for BERT (see <xref target="bert"/>). Subsequently, if the Max-Message-Size
Option is indicated with a value equal to or less than 1152, BERT support is no longer
indicated.</t>

</section>
</section>
<section anchor="sec-ping" title="Ping and Pong Messages">

<t>In CoAP over reliable transports, Empty messages (Code 0.00) can always be sent and MUST be ignored
by the recipient. This provides a basic keep-alive function. In contrast, Ping and Pong messages are
a bidirectional exchange.</t>

<t>Upon receipt of a Ping message, the receiver MUST return a Pong message with an identical token
in response. Unless there is an option with delaying semantics such as the Custody Option, it
SHOULD respond as soon as practical. As with all Signaling messages, the recipient of a Ping or
Pong message MUST ignore elective options it does not understand.</t>

<t>Ping and Pong messages are indicated by the 7.02 code (Ping) and the 7.03 code (Pong).</t>

<section anchor="custody-option" title="Custody Option">

<texttable title="C=Critical, R=Repeatable">
      <ttcol width='2em' align='right'>#</ttcol>
      <ttcol align='left'>C</ttcol>
      <ttcol align='left'>R</ttcol>
      <ttcol width='8em' align='left'>Applies to</ttcol>
      <ttcol width='17em' align='left'>Name</ttcol>
      <ttcol width='6em' align='right'>Format</ttcol>
      <ttcol width='6em' align='right'>Length</ttcol>
      <ttcol width='7em' align='left'>Base Value</ttcol>
      <c>2</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>Ping, Pong</c>
      <c>Custody</c>
      <c>empty</c>
      <c>0</c>
      <c>(none)</c>
</texttable>

<t>When responding to a Ping message, the receiver can include an elective
Custody Option in the Pong message. This option indicates that the application has
processed all the request/response messages received prior to the Ping message
on the current connection. (Note that there is no definition of specific application
semantics for “processed”, but there is an expectation that the receiver of a Pong
Message with a Custody Option should be able to free buffers based on this indication.)</t>

<t>A sender can also include an elective Custody Option in a Ping message to explicitly
request the inclusion of an elective Custody Option in the corresponding Pong message.
In that case, the receiver SHOULD delay its Pong message until it finishes processing
all the request/response messages received prior to the Ping message on the current connection.</t>

</section>
</section>
<section anchor="release-messages" title="Release Messages">

<t>A Release message indicates that the sender does not want to continue
maintaining the connection and opts for an orderly shutdown. The details
are in the options. A diagnostic payload (see Section
5.5.2 of <xref target="RFC7252"/>) MAY be included.  A peer will normally
respond to a Release message by closing the TCP/TLS connection. 
Messages may be in flight when the sender decides to send a Release message.
The general expectation is that these will still be processed.</t>

<t>Release messages are indicated by the 7.04 code (Release).</t>

<t>Release messages can indicate one or more reasons using elective options.
The following options are defined:</t>

<texttable title="C=Critical, R=Repeatable">
      <ttcol width='2em' align='right'>#</ttcol>
      <ttcol align='left'>C</ttcol>
      <ttcol align='left'>R</ttcol>
      <ttcol width='8em' align='left'>Applies to</ttcol>
      <ttcol width='17em' align='left'>Name</ttcol>
      <ttcol width='6em' align='right'>Format</ttcol>
      <ttcol width='6em' align='right'>Length</ttcol>
      <ttcol width='7em' align='left'>Base Value</ttcol>
      <c>2</c>
      <c>&#160;</c>
      <c>x</c>
      <c>Release</c>
      <c>Alternative-Address</c>
      <c>string</c>
      <c>1-255</c>
      <c>(none)</c>
</texttable>

<t>The elective Alternative-Address Option requests the peer to instead open a connection
of the same scheme as the present connection to the alternative transport address given.
Its value is in the form “authority” as defined in Section 3.2 of <xref target="RFC3986"/>.</t>

<t>The Alternative-Address Option is a repeatable option as defined in Section 5.4.5 of <xref target="RFC7252"/>.
When multiple occurrences of the option are included, the peer can choose any of the alternative
transport addresses.</t>

<texttable title="C=Critical, R=Repeatable">
      <ttcol width='2em' align='right'>#</ttcol>
      <ttcol align='left'>C</ttcol>
      <ttcol align='left'>R</ttcol>
      <ttcol width='8em' align='left'>Applies to</ttcol>
      <ttcol width='17em' align='left'>Name</ttcol>
      <ttcol width='6em' align='right'>Format</ttcol>
      <ttcol width='6em' align='right'>Length</ttcol>
      <ttcol width='7em' align='left'>Base Value</ttcol>
      <c>4</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>Release</c>
      <c>Hold-Off</c>
      <c>uint</c>
      <c>0-3</c>
      <c>(none)</c>
</texttable>

<t>The elective Hold-Off Option indicates that the server is requesting that the peer not
reconnect to it for the number of seconds given in the value.</t>

</section>
<section anchor="sec-abort" title="Abort Messages">

<t>An Abort message indicates that the sender is unable to continue
maintaining the connection and cannot even wait for an orderly
release. The sender shuts down the connection immediately after
the abort (and may or may not wait for a Release or Abort message or
connection shutdown in the inverse direction). A diagnostic payload
(see Section 5.5.2 of <xref target="RFC7252"/>) SHOULD be included in the Abort message.
Messages may be in flight when the sender decides to send an Abort message.
The general expectation is that these will NOT be processed.</t>

<t>Abort messages are indicated by the 7.05 code (Abort).</t>

<t>Abort messages can indicate one or more reasons using elective
options. The following option is defined:</t>

<texttable title="C=Critical, R=Repeatable">
      <ttcol width='2em' align='right'>#</ttcol>
      <ttcol align='left'>C</ttcol>
      <ttcol align='left'>R</ttcol>
      <ttcol width='8em' align='left'>Applies to</ttcol>
      <ttcol width='17em' align='left'>Name</ttcol>
      <ttcol width='6em' align='right'>Format</ttcol>
      <ttcol width='6em' align='right'>Length</ttcol>
      <ttcol width='7em' align='left'>Base Value</ttcol>
      <c>2</c>
      <c>&#160;</c>
      <c>&#160;</c>
      <c>Abort</c>
      <c>Bad-CSM-Option</c>
      <c>uint</c>
      <c>0-2</c>
      <c>(none)</c>
</texttable>

<t>The elective Bad-CSM-Option Option indicates that the sender is unable to process the
CSM option identified by its option number, e.g. when it is critical
and the option number is unknown by the sender, or when there is
parameter problem with the value of an elective option. More detailed
information SHOULD be included as a diagnostic payload.</t>

<t>For CoAP over UDP, messages which contain syntax violations are
processed as message format errors. As described in Sections 4.2 and 4.3
of <xref target="RFC7252"/>, such messages are rejected by sending a matching Reset
message and otherwise ignoring the message.</t>

<t>For CoAP over reliable transports, the recipient rejects such messages by
sending an Abort message and otherwise ignoring the message. No specific option
has been defined for the Abort message in this case, as the details are
best left to a diagnostic payload.</t>

</section>
<section anchor="signaling-examples" title="Signaling examples">

<t>An encoded example of a Ping message with a non-empty token is shown
in <xref target="fig-ping-example"/>.</t>

<figure title="Ping Message Example" anchor="fig-ping-example"><artwork><![CDATA[
    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      0x01     |      0xe2     |      0x42     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    Len   =    0 -------> 0x01
    TKL   =    1 ___/
    Code  = 7.02 Ping --> 0xe2
    Token =               0x42
]]></artwork></figure>

<t>An encoded example of the corresponding Pong message is shown in <xref target="fig-pong-example"/>.</t>

<figure title="Pong Message Example" anchor="fig-pong-example"><artwork><![CDATA[
    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      0x01     |      0xe3     |      0x42     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    Len   =    0 -------> 0x01
    TKL   =    1 ___/
    Code  = 7.03 Pong --> 0xe3
    Token =               0x42
]]></artwork></figure>

</section>
</section>
<section anchor="bert" title="Block-wise Transfer and Reliable Transports">

<t>The message size restrictions defined in Section 4.6 of CoAP <xref target="RFC7252"/>
to avoid IP fragmentation are not necessary when CoAP is used over a reliable
transport. While this suggests that the Block-wise transfer protocol
<xref target="RFC7959"/> is also no longer needed, it remains applicable for a number of cases:</t>

<t><list style="symbols">
  <t>large messages, such as firmware downloads, may cause undesired
head-of-line blocking when a single TCP connection is used</t>
  <t>a UDP-to-TCP gateway may simply not have the context to convert a
message with a Block Option into the equivalent exchange without any
use of a Block Option (it would need to convert the entire
blockwise exchange from start to end into a single exchange)</t>
</list></t>

<t>The ‘Block-wise Extension for Reliable Transport (BERT)’ extends the
Block protocol to enable the use of larger messages over a reliable
transport.</t>

<t>The use of this new extension is signaled by sending Block1 or
Block2 Options with SZX == 7 (a “BERT option”). SZX == 7 is a 
reserved value in <xref target="RFC7959"/>.</t>

<t>In control usage, a BERT option is interpreted in the same way as the
equivalent Option with SZX == 6, except that it also indicates the
capability to process BERT blocks. As with the basic Block protocol,
the recipient of a CoAP request with a BERT option in control usage is
allowed to respond with a different SZX value, e.g. to send a non-BERT
block instead.</t>

<t>In descriptive usage, a BERT Option is interpreted in the same way as
the equivalent Option with SZX == 6, except that the payload is also
allowed to contain a multiple of 1024 bytes (non-final BERT block) or
more than 1024 bytes (final BERT block).</t>

<t>The recipient of a non-final BERT block (M=1) conceptually partitions
the payload into a sequence of 1024-byte blocks and acts exactly as
if it had received this sequence in conjunction with block numbers
starting at, and sequentially increasing from, the block number given
in the Block Option. In other words, the entire BERT block is
positioned at the byte position that results from multiplying the
block number with 1024. The position of further blocks to be
transferred is indicated by incrementing the block number by the
number of elements in this sequence (i.e., the size of the payload
divided by 1024 bytes).</t>

<t>As with SZX == 6, the recipient of a final BERT block (M=0) simply
appends the payload at the byte position that is indicated by the
block number multiplied with 1024.</t>

<t>The following examples illustrate BERT options. A value of SZX == 7
is labeled as “BERT” or as “BERT(nnn)” to indicate a payload of size nnn.</t>

<t>In all these examples, a Block Option is decomposed to indicate the
kind of Block Option (1 or 2) followed by a colon, the block number (NUM),
more bit (M), and block size (2**(SZX+4)) separated by slashes.
E.g., a Block2 Option value of 33 would be shown as 2:2/0/32), or a Block1
Option value of 59 would be shown as 1:3/1/128.</t>

<section anchor="example-get-with-bert-blocks" title="Example: GET with BERT Blocks">

<t><xref target="fig-bert1"/> shows a GET request with a response that
is split into three BERT blocks. The first response contains 3072
bytes of payload; the second, 5120; and the third, 4711. Note how
the block number increments to move the position inside the response
body forward.</t>

<figure title="GET with BERT blocks" anchor="fig-bert1"><artwork><![CDATA[
CoAP Client                             CoAP Server
  |                                            |
  | GET, /status                       ------> |
  |                                            |
  | <------   2.05 Content, 2:0/1/BERT(3072)   |
  |                                            |
  | GET, /status, 2:3/0/BERT           ------> |
  |                                            |
  | <------   2.05 Content, 2:3/1/BERT(5120)   |
  |                                            |
  | GET, /status, 2:8/0/BERT          ------>  |
  |                                            |
  | <------   2.05 Content, 2:8/0/BERT(4711)   |
]]></artwork></figure>

</section>
<section anchor="example-put-with-bert-blocks" title="Example: PUT with BERT Blocks">

<t><xref target="fig-bert2"/> demonstrates a PUT exchange with BERT blocks.</t>

<figure title="PUT with BERT blocks" anchor="fig-bert2"><artwork><![CDATA[
CoAP Client                             CoAP Server
  |                                             |
  | PUT, /options, 1:0/1/BERT(8192)     ------> |
  |                                             |
  | <------   2.31 Continue, 1:0/1/BERT         |
  |                                             |
  | PUT, /options, 1:8/1/BERT(16384)    ------> |
  |                                             |
  | <------   2.31 Continue, 1:8/1/BERT         |
  |                                             |
  | PUT, /options, 1:24/0/BERT(5683)    ------> |
  |                                             |
  | <------   2.04 Changed, 1:24/0/BERT         |
  |                                             |
]]></artwork></figure>

</section>
</section>
<section anchor="URI" title="CoAP over Reliable Transport URIs">

<t>CoAP over UDP <xref target="RFC7252"/> defines the “coap” and “coaps” URI schemes. This document
corrects an erratum in Sections 6.1 and 6.2 of <xref target="RFC7252"/> and defines
how to use the schemes with the new transports.
Section 8 (Multicast CoAP) in <xref target="RFC7252"/> is not applicable to these
new transports.</t>

<t>The syntax for the URI schemes in this section are specified using
Augmented Backus-Naur Form (ABNF) <xref target="RFC5234"></xref>. The definitions of “host”,
“port”, “path-abempty”, “query”, and “fragment” are adopted from <xref target="RFC3986"></xref>.</t>

<t>The ABNF syntax defined in Sections 6.1 and 6.2 of <xref target="RFC7252"/> for “coap” and “coaps”
schemes lacks the fragment identifer.  This specification updates
the two rules in those sections as follows:</t>

<figure><artwork type="abnf" align="left"><![CDATA[
coap-URI = "coap:" "//" host [ ":" port ]
  path-abempty [ "?" query ]  [ "#" fragment ]
coaps-URI = "coaps:" "//" host [ ":" port ]
  path-abempty [ "?" query ] [ "#" fragment ]
]]></artwork></figure>

<section anchor="use-of-the-coap-uri-scheme-with-tcp" title="Use of the “coap” URI scheme with TCP">

<t>The “coap” URI scheme defined in Section 6.1 of <xref target="RFC7252"/> can also be
used to identify CoAP resources that are intended to be accessible
using CoAP over TCP.</t>

<t>The syntax defined in Section 6.1 of <xref target="RFC7252"/> applies to this transport, with the following change:</t>

<t><list style="symbols">
  <t>The port subcomponent indicates the TCP port at which the CoAP server is located.
(If it is empty or not given, then the default port 5683 is assumed, as with UDP.)</t>
</list></t>

</section>
<section anchor="use-of-the-coaps-uri-scheme-with-tls-over-tcp" title="Use of the “coaps” URI scheme with TLS over TCP">

<t>The “coaps” URI scheme defined in Section 6.2 of <xref target="RFC7252"/> can also be
used to identify CoAP resources that are intended to be accessible
using CoAP over TCP secured with TLS.</t>

<t>The syntax defined in Section 6.2 of <xref target="RFC7252"/> applies to this transport, with the following changes:</t>

<t><list style="symbols">
  <t>The port subcomponent indicates the TCP port at which the TLS server
for the CoAP Connection Acceptor is located. If it is empty or not given, then
the default port 5684 is assumed.</t>
  <t>If a TLS server does not support the Application-Layer Protocol
Negotiation Extension (ALPN) <xref target="RFC7301"/> or wishes to accommodate TLS
clients that do not support ALPN, it MAY offer a coaps endpoint
on the default TCP port 5684. This endpoint MAY also be ALPN
enabled. A TLS server MAY offer coaps endpoints on TCP ports other
than 5684; these then MUST be ALPN enabled.</t>
  <t>For TCP ports other than port 5684, the TLS client MUST use the ALPN extension to advertise
the “coap” protocol identifier (see <xref target="alpnpid"/>) in the list of protocols in its
ClientHello. If the TCP server selects and returns the “coap” protocol identifier using the
ALPN extension in its ServerHello, then the connection succeeds. If the TLS server either does
not negotiate the ALPN extension or returns a no_application_protocol alert, the TLS client
MUST close the connection.</t>
  <t>For TCP port 5684, a TLS client MAY use the ALPN extension to advertise the “coap” protocol
identifier in the list of protocols in its ClientHello. If the TLS server selects and returns
the “coap” protocol identifier using the ALPN extension in its ServerHello, then the connection
succeeds. If the TLS server returns a no_application_protocol alert, then the TLS client MUST close the
connection. If the TLS server does not negotiate the ALPN extension,
then coaps over TCP is implicitly
selected.</t>
  <t>For TCP port 5684, if the TLS client does not use the ALPN extension to negotiate the protocol,
then coaps over TCP is implicitly selected.</t>
</list></t>

</section>
<section anchor="coap-ws-scheme" title="Use of the “coap” URI scheme with WebSockets">

<t>The “coap” URI scheme defined in Section 6.1 of <xref target="RFC7252"/> can also be
used to identify CoAP resources that are intended to be accessible
using CoAP over WebSockets.</t>

<t>The WebSocket endpoint is identified by a “ws” URI that is composed of the authority
part of the “coap” URI and the well-known path “/.well-known/coap”
<xref target="RFC5785"/> <xref target="I-D.bormann-hybi-ws-wk"/>.
The path and query parts of the “coap” URI identify a resource within the specified
endpoint which can be operated on by the methods defined by CoAP:</t>

<figure title="Building ws URIs and Uri options from coap URIs" anchor="coap-ws-example"><artwork align="center"><![CDATA[
      coap://example.org/sensors/temperature?u=Cel
        \______  ______/\___________  ___________/
               \/                   \/
                                     Uri-Path: "sensors"
ws://example.org/.well-known/coap    Uri-Path: "temperature"
                                     Uri-Query: "u=Cel"
]]></artwork></figure>

<t>Note that the default port for “coap” is 5683, while the default port
for “ws” is 80.  Therefore, if the port given for “coap” is 80, the
default port for “ws” can be used.  If the port is not given for “coap”,
then an explicit port number of 5683 needs to be given for “ws”.</t>

</section>
<section anchor="coaps-ws-scheme" title="Use of the “coaps” URI scheme with WebSockets">

<t>The “coaps” URI scheme defined in Section 6.2 of <xref target="RFC7252"/> can also be
used to identify CoAP resources that are intended to be accessible
using CoAP over WebSockets secured by TLS.</t>

<t>The WebSocket endpoint is identified by a “wss” URI that is composed of the authority
part of the “coaps” URI and the well-known path “/.well-known/coap”
<xref target="RFC5785"/> <xref target="I-D.bormann-hybi-ws-wk"/>.
The path and query parts of the “coaps” URI identify a resource within the specified
endpoint which can be operated on by the methods defined by CoAP.</t>

<figure title="Building wss URIs and Uri options from coaps URIs" anchor="coaps-ws-example"><artwork align="center"><![CDATA[
      coaps://example.org/sensors/temperature?u=Cel
         \______  ______/\___________  ___________/
                \/                   \/
                                     Uri-Path: "sensors"
wss://example.org/.well-known/coap   Uri-Path: "temperature"
                                     Uri-Query: "u=Cel"
]]></artwork></figure>

<t>Note that the default port for “coaps” is 5684, while the default port
for “wss” is 443.  If the port given for “coap” is 443, the default
port for “wss” can be used.  If the port is not given for “coaps”, then an
explicit port number of 5684 needs to be given for “wss”.</t>

</section>
<section anchor="uri-host-and-uri-port-options" title="Uri-Host and Uri-Port Options">

<t>Except for the transports over WebSockets, CoAP over reliable
transports maintains the property from Section 5.10.1 of <xref target="RFC7252"/>:</t>

<t><list style='empty'>
  <t>The default values for the Uri-Host and Uri-Port Options are
sufficient for requests to most servers.</t>
</list></t>

<t>Unless otherwise noted, the default value of the Uri-Host Option is the IP literal representing
the destination IP address of the request message. The default value of the Uri-Port Option is
the destination TCP port.</t>

<t>For CoAP over TLS, these default values are the same unless Server Name Indication
(SNI) <xref target="RFC6066"/> is negotiated. In this case, the default value of the Uri-Host Option in requests
from the TLS client to the TLS server is the SNI host.</t>

<t>For CoAP over WebSockets, the default value of the Uri-Host Option in requests from the WebSocket
client to the WebSocket server is indicated by the Host header field from the WebSocket handshake.</t>

</section>
<section anchor="decomposing-uris-into-options" title="Decomposing URIs into Options">

<t>The steps are the same as specified in Section 6.4 of <xref target="RFC7252"/> with minor changes.</t>

<t>This step from <xref target="RFC7252"/>:</t>

<figure><artwork><![CDATA[
7.  If |port| does not equal the request's destination UDP port,
    include a Uri-Port Option and let that option's value be |port|.
]]></artwork></figure>

<t>is updated to:</t>

<figure><artwork><![CDATA[
7.  If |port| does not equal the request's destination UDP port or
    TCP port, include a Uri-Port Option and let that option's value
    be |port|.
]]></artwork></figure>

</section>
<section anchor="composing-uris-from-options" title="Composing URIs from Options">

<t>The steps are the same as specified in Section 6.5 of <xref target="RFC7252"/> with minor changes.</t>

<t>This step from <xref target="RFC7252"/>:</t>

<figure><artwork><![CDATA[
1.  If the request is secured using DTLS, let |url| be the string
    "coaps://". Otherwise, let |url| be the string "coap://".
]]></artwork></figure>

<t>is updated to:</t>

<figure><artwork><![CDATA[
1.  If the request is secured using DTLS or TLS, let |url| be
    the string "coaps://". Otherwise, let |url| be the string
    "coap://".
]]></artwork></figure>

<t>This step from <xref target="RFC7252"/>:</t>

<figure><artwork><![CDATA[
4.  If the request includes a Uri-Port Option, let |port| be that
    option's value.  Otherwise, let |port| be the request's
    destination UDP port.
]]></artwork></figure>

<t>is updated to:</t>

<figure><artwork><![CDATA[
4.  If the request includes a Uri-Port Option, let |port| be that
    option's value.  Otherwise, let |port| be the request's
    destination UDP port or TCP port.
]]></artwork></figure>

</section>
<section anchor="trying-out-multiple-transports-at-once" title="Trying out multiple transports at once">

<t>As in the “Happy Eyeballs” approach to using IPv6 and IPv4
<xref target="RFC6555"/>, an application may want to try out multiple
transports for a given URI at the same time, e.g., DTLS over UDP and
TLS over TCP.  However, two important caveats need to be considered:</t>

<t><list style="symbols">
  <t>Initiating multiple instances of the same exchange with the
intention of using only one of the successful results is only safe
for idempotent exchanges (see Section 5.1 of <xref target="RFC7252"/>).</t>
  <t>An important setback in using the UDP or DTLS over UDP transport
through NATs and other middleboxes can be the quick loss of NAT
bindings during idling periods <xref target="HomeGateway"/>.  This will not be
evident right on the initial exchange.</t>
</list></t>

<t>After the initial exchange, or whenever important information is
learned about which selection to prefer, an endpoint may want to cache
this information; however, the information may become stale after the
endpoint moves or the network changes.  A cache timeout (possibly
enhanced by movement detection) is advisable.</t>

<t>Alternatively, or additionally, the choice of transport may be aided
by configuration and resource directory information; the
self-description of a node may also include target attributes for
links given to resources there.  Details of such attributes are out of
scope for the present document; see for instance <xref target="I-D.ietf-core-resource-directory"/>.</t>

</section>
</section>
<section anchor="securing" title="Securing CoAP">

<t>Security Challenges for the Internet of Things <xref target="SecurityChallenges"/> recommends:</t>

<t><list style='empty'>
  <t>… it is essential that IoT protocol suites specify a mandatory to implement
but optional to use security solution. This will ensure security is available
in all implementations, but configurable to use when not necessary (e.g., in closed environment).
… even if those features stretch the capabilities of such devices.</t>
</list></t>

<t>A security solution MUST be implemented to protect CoAP over reliable transports and MUST
be enabled by default. This document defines the TLS binding, but alternative
solutions at different layers in the protocol stack MAY be used to protect
CoAP over reliable transports when appropriate. Note that there is ongoing work to support a
data object-based security model for CoAP that is independent of transport
(see <xref target="I-D.ietf-core-object-security"/>).</t>

<section anchor="tls-binding-for-coap-over-tcp" title="TLS binding for CoAP over TCP">

<t>The TLS usage guidance in <xref target="RFC7925"/> applies, including the guidance
about cipher suites in that document that are derived from the
mandatory to implement (MTI) cipher suites defined in <xref target="RFC7252"/>.
(Note that this selection caters for the device-to-cloud use case of
CoAP over TLS more than for any use within a back-end environment,
where the standard TLS 1.2 cipher suites or the more recent ones
defined in <xref target="RFC7525"/> are more appropriate.)</t>

<t>During the provisioning phase, a CoAP device is provided with the security information
that it needs, including keying materials, access control lists, and authorization servers.
At the end of the provisioning phase, the device will be in one of four security modes:</t>

<t><list style="hanging">
  <t hangText='NoSec:'>
  TLS is disabled.</t>
  <t hangText='PreSharedKey:'>
  TLS is enabled. The guidance in Section 4.2 of <xref target="RFC7925"/> applies.</t>
  <t hangText='RawPublicKey:'>
  TLS is enabled. The guidance in Section 4.3 of <xref target="RFC7925"/> applies.</t>
  <t hangText='Certificate:'>
  TLS is enabled. The guidance in Section 4.4 of <xref target="RFC7925"/> applies.</t>
</list></t>

<t>The “NoSec” mode is optional-to-implement. The system simply sends the packets over normal
TCP which is indicated by the “coap” scheme and the TCP CoAP default port.
The system is secured only by keeping attackers from being able to send
or receive packets from the network with the CoAP nodes.</t>

<t>“PreSharedKey”, “RawPublicKey”, or “Certificate” is mandatory-to-implement for the TLS
binding depending on the credential type used with the device. These security modes are
achieved using TLS and are indicated by the “coaps” scheme and TLS-secured CoAP default port.</t>

</section>
<section anchor="tls-usage-for-coap-over-websockets" title="TLS usage for CoAP over WebSockets">

<t>A CoAP client requesting a resource identified by a “coaps” URI negotiates a secure WebSocket
connection to a WebSocket server endpoint with a “wss” URI. This is described in <xref target="coaps-ws-scheme"/>.</t>

<t>The client MUST perform a TLS handshake after opening the connection to the server. The guidance in
Section 4.1 of <xref target="RFC6455"/> applies. When a CoAP server exposes resources identified by a “coaps” URI,
the guidance in Section 4.4 of <xref target="RFC7925"/> applies towards mandatory-to-implement TLS functionality
for certificates. For the server-side requirements in accepting incoming connections over a HTTPS
(HTTP-over-TLS) port, the guidance in Section 4.2 of <xref target="RFC6455"/> applies.</t>

<t>Note that this formally inherits the mandatory to implement cipher
suites defined in <xref target="RFC5246"/>.  However, modern usually browsers
implement more recent cipher suites that then are automatically picked
up via the JavaScript WebSocket API.  WebSocket Servers that provide
Secure CoAP over WebSockets for the browser use case will need to
follow the browser preferences and MUST follow <xref target="RFC7525"/>.</t>

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

<t>The security considerations of <xref target="RFC7252"/> apply. For CoAP over WebSockets and
CoAP over TLS-secured WebSockets, the security considerations of <xref target="RFC6455"/>
also apply.</t>

<section anchor="signaling-messages" title="Signaling Messages">

<t>The guidance given by an Alternative-Address Option cannot be
followed blindly. In particular, a peer MUST NOT assume that a
successful connection to the Alternative-Address inherits all the
security properties of the current connection.</t>

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

<section anchor="message-codes" title="Signaling Codes">

<t>IANA is requested to create a third sub-registry for values of the Code field in the CoAP
header (Section 12.1 of <xref target="RFC7252"/>). The name of this sub-registry is “CoAP Signaling Codes”.</t>

<t>Each entry in the sub-registry must include the Signaling Code in the range
7.00-7.31, its name, and a reference to its documentation.</t>

<t>Initial entries in this sub-registry are as follows:</t>

<texttable title="CoAP Signal Codes" anchor="signal-codes">
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>7.01</c>
      <c>CSM</c>
      <c>[RFCthis]</c>
      <c>7.02</c>
      <c>Ping</c>
      <c>[RFCthis]</c>
      <c>7.03</c>
      <c>Pong</c>
      <c>[RFCthis]</c>
      <c>7.04</c>
      <c>Release</c>
      <c>[RFCthis]</c>
      <c>7.05</c>
      <c>Abort</c>
      <c>[RFCthis]</c>
</texttable>

<t>All other Signaling Codes are Unassigned.</t>

<t>The IANA policy for future additions to this sub-registry is “IETF
Review or IESG Approval” as described in <xref target="RFC5226"/>.</t>

</section>
<section anchor="option-codes" title="CoAP Signaling Option Numbers Registry">

<t>IANA is requested to create a sub-registry for Options Numbers used
in CoAP signaling options within the “CoRE Parameters” registry.
The name of this sub-registry is “CoAP Signaling Option Numbers”.</t>

<t>Each entry in the sub-registry must include one or more of the codes
in the Signaling Codes subregistry (<xref target="message-codes"/>), the option
number, the name of the option, and a reference to the option’s 
documentation.</t>

<t>Initial entries in this sub-registry are as follows:</t>

<texttable title="CoAP Signal Option Codes" anchor="signal-option-codes">
      <ttcol align='left'>Applies to</ttcol>
      <ttcol align='right'>Number</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='center'>Reference</ttcol>
      <c>7.01</c>
      <c>2</c>
      <c>Max-Message-Size</c>
      <c>[RFCthis]</c>
      <c>7.01</c>
      <c>4</c>
      <c>Block-wise-Transfer</c>
      <c>[RFCthis]</c>
      <c>7.02, 7.03</c>
      <c>2</c>
      <c>Custody</c>
      <c>[RFCthis]</c>
      <c>7.04</c>
      <c>2</c>
      <c>Alternative-Address</c>
      <c>[RFCthis]</c>
      <c>7.04</c>
      <c>4</c>
      <c>Hold-Off</c>
      <c>[RFCthis]</c>
      <c>7.05</c>
      <c>2</c>
      <c>Bad-CSM-Option</c>
      <c>[RFCthis]</c>
</texttable>

<t>The IANA policy for future additions to this sub-registry is based on
number ranges for the option numbers, analogous to the policy defined
in Section 12.2 of <xref target="RFC7252"/>.</t>

<t>The documentation for a Signaling Option Number should specify the semantics of
an option with that number, including the following properties:</t>

<t><list style="symbols">
  <t>Whether the option is critical or elective, as determined by the Option Number.</t>
  <t>Whether the option is repeatable.</t>
  <t>The format and length of the option’s value.</t>
  <t>The base value for the option, if any.</t>
</list></t>

</section>
<section anchor="service-name-and-port-number-registration" title="Service Name and Port Number Registration">

<t>IANA is requested to assign the port number 5683 and the service name “coap”,
in accordance with <xref target="RFC6335"/>.</t>

<t><list style="hanging">
  <t hangText='Service Name.'><vspace blankLines='0'/>
  coap</t>
  <t hangText='Transport Protocol.'><vspace blankLines='0'/>
  tcp</t>
  <t hangText='Assignee.'><vspace blankLines='0'/>
  IESG &lt;iesg@ietf.org&gt;</t>
  <t hangText='Contact.'><vspace blankLines='0'/>
  IETF Chair &lt;chair@ietf.org&gt;</t>
  <t hangText='Description.'><vspace blankLines='0'/>
  Constrained Application Protocol (CoAP)</t>
  <t hangText='Reference.'><vspace blankLines='0'/>
  [RFCthis]</t>
  <t hangText='Port Number.'><vspace blankLines='0'/>
  5683</t>
</list></t>

</section>
<section anchor="secure-service-name-and-port-number-registration" title="Secure Service Name and Port Number Registration">

<t>IANA is requested to assign the port number 5684 and the service name “coaps+tcp”,
in accordance with <xref target="RFC6335"/>. The port number is requested also to address the exceptional
case of TLS implementations that do not support the “Application-Layer Protocol
Negotiation Extension” <xref target="RFC7301"/>.</t>

<t><list style="hanging">
  <t hangText='Service Name.'><vspace blankLines='0'/>
  coaps</t>
  <t hangText='Transport Protocol.'><vspace blankLines='0'/>
  tcp</t>
  <t hangText='Assignee.'><vspace blankLines='0'/>
  IESG &lt;iesg@ietf.org&gt;</t>
  <t hangText='Contact.'><vspace blankLines='0'/>
  IETF Chair &lt;chair@ietf.org&gt;</t>
  <t hangText='Description.'><vspace blankLines='0'/>
  Constrained Application Protocol (CoAP)</t>
  <t hangText='Reference.'><vspace blankLines='0'/>
  <xref target="RFC7301"/>, [RFCthis]</t>
  <t hangText='Port Number.'><vspace blankLines='0'/>
  5684</t>
</list></t>

</section>
<section anchor="well-known-uri-suffix-registration" title="Well-Known URI Suffix Registration">

<t>IANA is requested to register the ‘coap’ well-known URI in the “Well-Known URIs” registry. This
registration request complies with <xref target="RFC5785"/>:</t>

<t><list style="hanging">
  <t hangText='URI Suffix.'><vspace blankLines='0'/>
  coap</t>
  <t hangText='Change controller.'><vspace blankLines='0'/>
  IETF</t>
  <t hangText='Specification document(s).'><vspace blankLines='0'/>
  [RFCthis]</t>
  <t hangText='Related information.'><vspace blankLines='0'/>
  None.</t>
</list></t>

</section>
<section anchor="alpnpid" title="ALPN Protocol Identifier">

<t>IANA is requested to assign the following value in the registry
“Application Layer Protocol Negotiation (ALPN) Protocol IDs” created
by <xref target="RFC7301"/>. The “coap” string identifies CoAP when used over TLS.</t>

<t><list style="hanging">
  <t hangText='Protocol.'><vspace blankLines='0'/>
  CoAP</t>
  <t hangText='Identification Sequence.'><vspace blankLines='0'/>
  0x63 0x6f 0x61 0x70 (“coap”)</t>
  <t hangText='Reference.'><vspace blankLines='0'/>
  [RFCthis]</t>
</list></t>

</section>
<section anchor="websocket-subprotocol-registration" title="WebSocket Subprotocol Registration">

<t>IANA is requested to register the WebSocket CoAP subprotocol under the “WebSocket Subprotocol Name Registry”:</t>

<t><list style="hanging">
  <t hangText='Subprotocol Identifier.'><vspace blankLines='0'/>
  coap</t>
  <t hangText='Subprotocol Common Name.'><vspace blankLines='0'/>
  Constrained Application Protocol (CoAP)</t>
  <t hangText='Subprotocol Definition.'><vspace blankLines='0'/>
  [RFCthis]</t>
</list></t>

</section>
<section anchor="coap-option-numbers-registry" title="CoAP Option Numbers Registry">

<t>IANA is requested to add [RFCthis] to the references for the following entries registered
by <xref target="RFC7959"/> in the “CoAP Option Numbers” sub-registry defined by <xref target="RFC7252"/>:</t>

<texttable title="CoAP Option Numbers" anchor="option-numbers">
      <ttcol align='left'>Number</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>23</c>
      <c>Block2</c>
      <c>RFC 7959, [RFCthis]</c>
      <c>27</c>
      <c>Block1</c>
      <c>RFC 7959, [RFCthis]</c>
</texttable>

</section>
</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor='RFC0793' target='http://www.rfc-editor.org/info/rfc793'>
<front>
<title>Transmission Control Protocol</title>
<author initials='J.' surname='Postel' fullname='J. Postel'><organization /></author>
<date year='1981' month='September' />
</front>
<seriesInfo name='STD' value='7'/>
<seriesInfo name='RFC' value='793'/>
<seriesInfo name='DOI' value='10.17487/RFC0793'/>
</reference>



<reference  anchor='RFC2119' target='http://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='RFC3986' target='http://www.rfc-editor.org/info/rfc3986'>
<front>
<title>Uniform Resource Identifier (URI): Generic Syntax</title>
<author initials='T.' surname='Berners-Lee' fullname='T. Berners-Lee'><organization /></author>
<author initials='R.' surname='Fielding' fullname='R. Fielding'><organization /></author>
<author initials='L.' surname='Masinter' fullname='L. Masinter'><organization /></author>
<date year='2005' month='January' />
<abstract><t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='66'/>
<seriesInfo name='RFC' value='3986'/>
<seriesInfo name='DOI' value='10.17487/RFC3986'/>
</reference>



<reference  anchor='RFC5226' target='http://www.rfc-editor.org/info/rfc5226'>
<front>
<title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
<author initials='T.' surname='Narten' fullname='T. Narten'><organization /></author>
<author initials='H.' surname='Alvestrand' fullname='H. Alvestrand'><organization /></author>
<date year='2008' month='May' />
<abstract><t>Many protocols make use of identifiers consisting of constants and other well-known values.  Even after a protocol has been defined and deployment has begun, new values may need to be assigned (e.g., for a new option type in DHCP, or a new encryption or authentication transform for IPsec).  To ensure that such quantities have consistent values and interpretations across all implementations, their assignment must be administered by a central authority.  For IETF protocols, that role is provided by the Internet Assigned Numbers Authority (IANA).</t><t>In order for IANA to manage a given namespace prudently, it needs guidelines describing the conditions under which new values can be assigned or when modifications to existing values can be made.  If IANA is expected to play a role in the management of a namespace, IANA must be given clear and concise instructions describing that role.  This document discusses issues that should be considered in formulating a policy for assigning values to a namespace and provides guidelines for authors on the specific text that must be included in documents that place demands on IANA.</t><t>This document obsoletes RFC 2434.  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='26'/>
<seriesInfo name='RFC' value='5226'/>
<seriesInfo name='DOI' value='10.17487/RFC5226'/>
</reference>



<reference  anchor='RFC5246' target='http://www.rfc-editor.org/info/rfc5246'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
<author initials='T.' surname='Dierks' fullname='T. Dierks'><organization /></author>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2008' month='August' />
<abstract><t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol.  The TLS protocol provides communications security over the Internet.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5246'/>
<seriesInfo name='DOI' value='10.17487/RFC5246'/>
</reference>



<reference  anchor='RFC5785' target='http://www.rfc-editor.org/info/rfc5785'>
<front>
<title>Defining Well-Known Uniform Resource Identifiers (URIs)</title>
<author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
<author initials='E.' surname='Hammer-Lahav' fullname='E. Hammer-Lahav'><organization /></author>
<date year='2010' month='April' />
<abstract><t>This memo defines a path prefix for &quot;well-known locations&quot;, &quot;/.well-known/&quot;, in selected Uniform Resource Identifier (URI) schemes.   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5785'/>
<seriesInfo name='DOI' value='10.17487/RFC5785'/>
</reference>



<reference  anchor='RFC6066' target='http://www.rfc-editor.org/info/rfc6066'>
<front>
<title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
<author initials='D.' surname='Eastlake 3rd' fullname='D. Eastlake 3rd'><organization /></author>
<date year='2011' month='January' />
<abstract><t>This document provides specifications for existing TLS extensions.  It is a companion document for RFC 5246, &quot;The Transport Layer Security (TLS) Protocol Version 1.2&quot;.  The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6066'/>
<seriesInfo name='DOI' value='10.17487/RFC6066'/>
</reference>



<reference  anchor='RFC6455' target='http://www.rfc-editor.org/info/rfc6455'>
<front>
<title>The WebSocket Protocol</title>
<author initials='I.' surname='Fette' fullname='I. Fette'><organization /></author>
<author initials='A.' surname='Melnikov' fullname='A. Melnikov'><organization /></author>
<date year='2011' month='December' />
<abstract><t>The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code.  The security model used for this is the origin-based security model commonly used by web browsers.  The protocol consists of an opening handshake followed by basic message framing, layered over TCP.  The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or &lt;iframe&gt;s and long polling).  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6455'/>
<seriesInfo name='DOI' value='10.17487/RFC6455'/>
</reference>



<reference  anchor='RFC7252' target='http://www.rfc-editor.org/info/rfc7252'>
<front>
<title>The Constrained Application Protocol (CoAP)</title>
<author initials='Z.' surname='Shelby' fullname='Z. Shelby'><organization /></author>
<author initials='K.' surname='Hartke' fullname='K. Hartke'><organization /></author>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></author>
<date year='2014' month='June' />
<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='RFC7301' target='http://www.rfc-editor.org/info/rfc7301'>
<front>
<title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
<author initials='S.' surname='Friedl' fullname='S. Friedl'><organization /></author>
<author initials='A.' surname='Popov' fullname='A. Popov'><organization /></author>
<author initials='A.' surname='Langley' fullname='A. Langley'><organization /></author>
<author initials='E.' surname='Stephan' fullname='E. Stephan'><organization /></author>
<date year='2014' month='July' />
<abstract><t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t></abstract>
</front>
<seriesInfo name='RFC' value='7301'/>
<seriesInfo name='DOI' value='10.17487/RFC7301'/>
</reference>



<reference  anchor='RFC7525' target='http://www.rfc-editor.org/info/rfc7525'>
<front>
<title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
<author initials='Y.' surname='Sheffer' fullname='Y. Sheffer'><organization /></author>
<author initials='R.' surname='Holz' fullname='R. Holz'><organization /></author>
<author initials='P.' surname='Saint-Andre' fullname='P. Saint-Andre'><organization /></author>
<date year='2015' month='May' />
<abstract><t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are widely used to protect data exchanged over application protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP.  Over the last few years, several serious attacks on TLS have emerged, including attacks on its most commonly used cipher suites and their modes of operation.  This document provides recommendations for improving the security of deployed services that use TLS and DTLS. The recommendations are applicable to the majority of use cases.</t></abstract>
</front>
<seriesInfo name='BCP' value='195'/>
<seriesInfo name='RFC' value='7525'/>
<seriesInfo name='DOI' value='10.17487/RFC7525'/>
</reference>



<reference  anchor='RFC7641' target='http://www.rfc-editor.org/info/rfc7641'>
<front>
<title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
<author initials='K.' surname='Hartke' fullname='K. Hartke'><organization /></author>
<date year='2015' month='September' />
<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 &quot;observe&quot; 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='RFC7925' target='http://www.rfc-editor.org/info/rfc7925'>
<front>
<title>Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things</title>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig' role='editor'><organization /></author>
<author initials='T.' surname='Fossati' fullname='T. Fossati'><organization /></author>
<date year='2016' month='July' />
<abstract><t>A common design pattern in Internet of Things (IoT) deployments is the use of a constrained device that collects data via sensors or controls actuators for use in home automation, industrial control systems, smart cities, and other IoT deployments.</t><t>This document defines a Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 1.2 profile that offers communications security for this data exchange thereby preventing eavesdropping, tampering, and message forgery.  The lack of communication security is a common vulnerability in IoT products that can easily be solved by using these well-researched and widely deployed Internet security protocols.</t></abstract>
</front>
<seriesInfo name='RFC' value='7925'/>
<seriesInfo name='DOI' value='10.17487/RFC7925'/>
</reference>



<reference  anchor='RFC7959' target='http://www.rfc-editor.org/info/rfc7959'>
<front>
<title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></author>
<author initials='Z.' surname='Shelby' fullname='Z. Shelby' role='editor'><organization /></author>
<date year='2016' month='August' />
<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 &quot;Block&quot; 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='I-D.bormann-hybi-ws-wk'>
<front>
<title>Well-known URIs for the WebSocket Protocol</title>

<author initials='C' surname='Bormann' fullname='Carsten Bormann'>
    <organization />
</author>

<date month='May' day='11' year='2017' />

<abstract><t>RFC 5785 defines a path prefix, "/.well-known/", that can be used by well-known URIs, specifically for the "http" and "https" URI schemes. The present memo formally updates RFC 6455, which defines the URI schemes defined for the WebSocket Protocol, to extend the use of these well-known URIs to those URI schemes.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-bormann-hybi-ws-wk-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-bormann-hybi-ws-wk-00.txt' />
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='I-D.ietf-core-cocoa'>
<front>
<title>CoAP Simple Congestion Control/Advanced</title>

<author initials='C' surname='Bormann' fullname='Carsten Bormann'>
    <organization />
</author>

<author initials='A' surname='Betzler' fullname='August Betzler'>
    <organization />
</author>

<author initials='C' surname='Gomez' fullname='Carles Gomez'>
    <organization />
</author>

<author initials='I' surname='Demirkol' fullname='Ilker Demirkol'>
    <organization />
</author>

<date month='March' day='13' year='2017' />

<abstract><t>The CoAP protocol needs to be implemented in such a way that it does not cause persistent congestion on the network it uses.  The CoRE CoAP specification defines basic behavior that exhibits low risk of congestion with minimal implementation requirements.  It also leaves room for combining the base specification with advanced congestion control mechanisms with higher performance.  This specification defines some simple advanced CoRE Congestion Control mechanisms, Simple CoCoA.  It is making use of input from simulations and experiments in real networks.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-core-cocoa-01' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-core-cocoa-01.txt' />
</reference>



<reference anchor='I-D.ietf-core-object-security'>
<front>
<title>Object Security of CoAP (OSCOAP)</title>

<author initials='G' surname='Selander' fullname='Goeran Selander'>
    <organization />
</author>

<author initials='J' surname='Mattsson' fullname='John Mattsson'>
    <organization />
</author>

<author initials='F' surname='Palombini' fullname='Francesca Palombini'>
    <organization />
</author>

<author initials='L' surname='Seitz' fullname='Ludwig Seitz'>
    <organization />
</author>

<date month='May' day='3' year='2017' />

<abstract><t>This document defines Object Security of CoAP (OSCOAP), a method for application layer protection of the Constrained Application Protocol (CoAP), using the CBOR Object Signing and Encryption (COSE).  OSCOAP provides end-to-end encryption, integrity and replay protection to CoAP payload, options, and header fields, as well as a secure message binding.  OSCOAP is designed for constrained nodes and networks and can be used across intermediaries and over any layer.  The use of OSCOAP is signaled with the CoAP option Object-Security, also defined in this document.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-core-object-security-03' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-core-object-security-03.txt' />
</reference>



<reference anchor='I-D.ietf-core-resource-directory'>
<front>
<title>CoRE Resource Directory</title>

<author initials='Z' surname='Shelby' fullname='Zach Shelby'>
    <organization />
</author>

<author initials='M' surname='Koster' fullname='Michael Koster'>
    <organization />
</author>

<author initials='C' surname='Bormann' fullname='Carsten Bormann'>
    <organization />
</author>

<author initials='P' surname='Stok' fullname='Peter Van der Stok'>
    <organization />
</author>

<date month='March' day='13' year='2017' />

<abstract><t>In many M2M applications, direct discovery of resources is not practical due to sleeping nodes, disperse networks, or networks where multicast traffic is inefficient.  These problems can be solved by employing an entity called a Resource Directory (RD), which hosts descriptions of resources held on other servers, allowing lookups to be performed for those resources.  This document specifies the web interfaces that a Resource Directory supports in order for web servers to discover the RD and to register, maintain, lookup and remove resource descriptions.  Furthermore, new link attributes useful in conjunction with an RD are defined.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-core-resource-directory-10' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-core-resource-directory-10.txt' />
</reference>


<reference anchor="LWM2M" target="http://www.openmobilealliance.org/release/LightweightM2M/V1_0-20170208-A/OMA-TS-LightweightM2M-V1_0-20170208-A.pdf">
  <front>
    <title>Lightweight Machine to Machine Technical Specification Version 1.0</title>
    <author >
      <organization>Open Mobile Alliance</organization>
    </author>
    <date year="2017" month="February"/>
  </front>
  <format type="PDF" target="http://www.openmobilealliance.org/release/LightweightM2M/V1_0-20170208-A/OMA-TS-LightweightM2M-V1_0-20170208-A.pdf"/>
</reference>




<reference  anchor='RFC0768' target='http://www.rfc-editor.org/info/rfc768'>
<front>
<title>User Datagram Protocol</title>
<author initials='J.' surname='Postel' fullname='J. Postel'><organization /></author>
<date year='1980' month='August' />
</front>
<seriesInfo name='STD' value='6'/>
<seriesInfo name='RFC' value='768'/>
<seriesInfo name='DOI' value='10.17487/RFC0768'/>
</reference>



<reference  anchor='RFC5234' target='http://www.rfc-editor.org/info/rfc5234'>
<front>
<title>Augmented BNF for Syntax Specifications: ABNF</title>
<author initials='D.' surname='Crocker' fullname='D. Crocker' role='editor'><organization /></author>
<author initials='P.' surname='Overell' fullname='P. Overell'><organization /></author>
<date year='2008' month='January' />
<abstract><t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='68'/>
<seriesInfo name='RFC' value='5234'/>
<seriesInfo name='DOI' value='10.17487/RFC5234'/>
</reference>



<reference  anchor='RFC6335' target='http://www.rfc-editor.org/info/rfc6335'>
<front>
<title>Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry</title>
<author initials='M.' surname='Cotton' fullname='M. Cotton'><organization /></author>
<author initials='L.' surname='Eggert' fullname='L. Eggert'><organization /></author>
<author initials='J.' surname='Touch' fullname='J. Touch'><organization /></author>
<author initials='M.' surname='Westerlund' fullname='M. Westerlund'><organization /></author>
<author initials='S.' surname='Cheshire' fullname='S. Cheshire'><organization /></author>
<date year='2011' month='August' />
<abstract><t>This document defines the procedures that the Internet Assigned Numbers Authority (IANA) uses when handling assignment and other requests related to the Service Name and Transport Protocol Port Number registry.  It also discusses the rationale and principles behind these procedures and how they facilitate the long-term sustainability of the registry.</t><t>This document updates IANA's procedures by obsoleting the previous UDP and TCP port assignment procedures defined in Sections 8 and 9.1 of the IANA Allocation Guidelines, and it updates the IANA service name and port assignment procedures for UDP-Lite, the Datagram Congestion Control Protocol (DCCP), and the Stream Control Transmission Protocol (SCTP).  It also updates the DNS SRV specification to clarify what a service name is and how it is registered.  This memo documents an Internet Best Current Practice.</t></abstract>
</front>
<seriesInfo name='BCP' value='165'/>
<seriesInfo name='RFC' value='6335'/>
<seriesInfo name='DOI' value='10.17487/RFC6335'/>
</reference>



<reference  anchor='RFC6347' target='http://www.rfc-editor.org/info/rfc6347'>
<front>
<title>Datagram Transport Layer Security Version 1.2</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<author initials='N.' surname='Modadugu' fullname='N. Modadugu'><organization /></author>
<date year='2012' month='January' />
<abstract><t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol.  The DTLS protocol provides communications privacy for datagram protocols.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.  This document updates DTLS 1.0 to work with TLS version 1.2.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6347'/>
<seriesInfo name='DOI' value='10.17487/RFC6347'/>
</reference>



<reference  anchor='RFC6555' target='http://www.rfc-editor.org/info/rfc6555'>
<front>
<title>Happy Eyeballs: Success with Dual-Stack Hosts</title>
<author initials='D.' surname='Wing' fullname='D. Wing'><organization /></author>
<author initials='A.' surname='Yourtchenko' fullname='A. Yourtchenko'><organization /></author>
<date year='2012' month='April' />
<abstract><t>When a server's IPv4 path and protocol are working, but the server's IPv6 path and protocol are not working, a dual-stack client application experiences significant connection delay compared to an IPv4-only client.  This is undesirable because it causes the dual- stack client to have a worse user experience.  This document specifies requirements for algorithms that reduce this user-visible delay and provides an algorithm.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6555'/>
<seriesInfo name='DOI' value='10.17487/RFC6555'/>
</reference>



<reference  anchor='RFC7230' target='http://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="HomeGateway" >
  <front>
    <title>An experimental study of home gateway characteristics</title>
    <author initials="L." surname="Eggert" fullname="Lars Eggert">
      <organization></organization>
    </author>
    <date year="2010"/>
  </front>
  <seriesInfo name="Proceedings of the 10th annual conference on Internet measurement" value=""/>
</reference>
<reference anchor="SecurityChallenges" target="http://www.iab.org/wp-content/IAB-uploads/2011/03/Turner.pdf">
  <front>
    <title>Security Challenges for the Internet of Things</title>
    <author initials="T." surname="Polk" fullname="Tim Polk">
      <organization></organization>
    </author>
    <author initials="S." surname="Turner" fullname="Sean Turner">
      <organization></organization>
    </author>
    <date year="2011" month="February"/>
  </front>
  <seriesInfo name="Interconnecting Smart Objects with the Internet / IAB Workshop" value=""/>
  <format type="PDF" target="http://www.iab.org/wp-content/IAB-uploads/2011/03/Turner.pdf"/>
</reference>


    </references>


<section anchor="observing" title="Updates to RFC 7641 Observing Resources in the Constrained Application Protocol (CoAP)">

<t>In this appendix, “client” and “server” refer to the CoAP client and
CoAP server.</t>

<section anchor="notifications-and-reordering" title="Notifications and Reordering">

<t>When using the Observe Option with CoAP over UDP, notifications from the server set the option
value to an increasing sequence number for reordering detection on the client since messages
can arrive in a different order than they were sent. This sequence number is not required
for CoAP over reliable transports since the TCP protocol ensures reliable and ordered delivery
of messages. The value of the Observe Option in 2.xx notifications MAY be empty on transmission
and MUST be ignored on reception.</t>

</section>
<section anchor="transmission-and-acknowledgements" title="Transmission and Acknowledgements">

<t>For CoAP over UDP, server notifications to the client can be confirmable or non-confirmable.
A confirmable message requires the client to either respond with an acknowledgement message or
a reset message. An acknowledgement message indicates that the client is alive and wishes to receive
further notifications. A reset message indicates that the client does not recognize
the token which causes the server to remove the associated entry from the list of observers.</t>

<t>Since TCP eliminates the need for the message layer to support reliability, CoAP over reliable
transports does not support confirmable or non-confirmable message types. All notifications are
delivered reliably to the client with positive acknowledgement of receipt occurring at the TCP
level. If the client does not recognize the token in a notification, it MAY immediately abort
the connection (see <xref target="sec-abort"/>).</t>

</section>
<section anchor="freshness" title="Freshness">

<t>For CoAP over UDP, if a client does not receive a notification for some
time, it MAY send a new GET request with the same token as the original request to
re-register its interest in a resource and verify that the server is still
responsive. For CoAP over reliable transports, it is more efficient to check
the health of the connection (and all its active observations) by sending a CoAP
Ping Signaling message (<xref target="sec-ping"/>) rather than individual requests to confirm
active observations.</t>

</section>
<section anchor="observe-cancel" title="Cancellation">

<t>For CoAP over UDP, a client that is no longer interested in receiving notifications can “forget”
the observation and respond to the next notification from the server with a reset message to cancel
the observation.</t>

<t>For CoAP over reliable transports, a client MUST explicitly deregister by issuing a GET request
that has the Token field set to the token of the observation to be cancelled and includes an Observe
Option with the value set to 1 (deregister).</t>

<t>If the client observes one or more resources over a reliable transport, then the CoAP server
(or intermediary in the role of the CoAP server) MUST remove all entries associated with the
client endpoint from the lists of observers when the connection is either closed or times out.</t>

</section>
</section>
<section anchor="examples" title="CoAP over WebSocket Examples">

<t>This section gives examples for the first two configurations
discussed in <xref target="websockets-overview"/>.</t>

<t>An example of the process followed by a CoAP client to retrieve the
representation of a resource identified by a “coap” URI might be as
follows. <xref target="example-1"/> below illustrates the WebSocket and
CoAP messages exchanged in detail.</t>

<t><list style="numbers">
  <t>The CoAP client obtains the URI
  &lt;coap://example.org/sensors/temperature?u=Cel&gt;,
  for example, from a resource representation that it retrieved
  previously.</t>
  <t>It establishes a WebSocket connection to the endpoint URI composed
  of the authority “example.org” and the well-known path
  “/.well-known/coap”, &lt;ws://example.org/.well-known/coap&gt;.</t>
  <t>It sends a single-frame, masked, binary message containing a CoAP
  request. The request indicates the target resource with the
  Uri-Path (“sensors”, “temperature”) and Uri-Query (“u=Cel”)
  options.</t>
  <t>It waits for the server to return a response.</t>
  <t>The CoAP client uses the connection for further requests, or the
  connection is closed.</t>
</list></t>

<figure title="A CoAP client retrieves the representation of a
     resource identified by a &quot;coap&quot; URI over the WebSocket protocol" anchor="example-1"><artwork><![CDATA[
   CoAP        CoAP
  Client      Server
(WebSocket  (WebSocket
  Client)     Server)

     |          |
     |          |
     +=========>|  GET /.well-known/coap HTTP/1.1
     |          |  Host: example.org
     |          |  Upgrade: websocket
     |          |  Connection: Upgrade
     |          |  Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
     |          |  Sec-WebSocket-Protocol: coap
     |          |  Sec-WebSocket-Version: 13
     |          |
     |<=========+  HTTP/1.1 101 Switching Protocols
     |          |  Upgrade: websocket
     |          |  Connection: Upgrade
     |          |  Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
     |          |  Sec-WebSocket-Protocol: coap
     |          |
     |          |
     +--------->|  Binary frame (opcode=%x2, FIN=1, MASK=1)
     |          |    +-------------------------+
     |          |    | GET                     |
     |          |    | Token: 0x53             |
     |          |    | Uri-Path: "sensors"     |
     |          |    | Uri-Path: "temperature" |
     |          |    | Uri-Query: "u=Cel"      |
     |          |    +-------------------------+
     |          |
     |<---------+  Binary frame (opcode=%x2, FIN=1, MASK=0)
     |          |    +-------------------------+
     |          |    | 2.05 Content            |
     |          |    | Token: 0x53             |
     |          |    | Payload: "22.3 Cel"     |
     |          |    +-------------------------+
     :          :
     :          :
     |          |
     +--------->|  Close frame (opcode=%x8, FIN=1, MASK=1)
     |          |
     |<---------+  Close frame (opcode=%x8, FIN=1, MASK=0)
     |          |
]]></artwork></figure>

<t><xref target="example-2"/> shows how a CoAP client uses a CoAP
forward proxy with a WebSocket endpoint to retrieve the representation
of the resource “coap://[2001:db8::1]/”. The use of the forward
proxy and the address of the WebSocket endpoint are determined by the
client from local configuration rules. The request URI is specified
in the Proxy-Uri Option. Since the request URI uses the “coap” URI
scheme, the proxy fulfills the request by issuing a Confirmable GET
request over UDP to the CoAP server and returning the response over
the WebSocket connection to the client.</t>

<figure title="A CoAP client retrieves the representation of a resource identified by a &quot;coap&quot; URI via a WebSocket-enabled CoAP proxy" anchor="example-2"><artwork><![CDATA[
   CoAP        CoAP       CoAP
  Client      Proxy      Server
(WebSocket  (WebSocket    (UDP
  Client)     Server)   Endpoint)

     |          |          |
     +--------->|          |  Binary frame (opcode=%x2, FIN=1, MASK=1)
     |          |          |    +------------------------------------+
     |          |          |    | GET                                |
     |          |          |    | Token: 0x7d                        |
     |          |          |    | Proxy-Uri: "coap://[2001:db8::1]/" |
     |          |          |    +------------------------------------+
     |          |          |
     |          +--------->|  CoAP message (Ver=1, T=Con, MID=0x8f54)
     |          |          |    +------------------------------------+
     |          |          |    | GET                                |
     |          |          |    | Token: 0x0a15                      |
     |          |          |    +------------------------------------+
     |          |          |
     |          |<---------+  CoAP message (Ver=1, T=Ack, MID=0x8f54)
     |          |          |    +------------------------------------+
     |          |          |    | 2.05 Content                       |
     |          |          |    | Token: 0x0a15                      |
     |          |          |    | Payload: "ready"                   |
     |          |          |    +------------------------------------+
     |          |          |
     |<---------+          |  Binary frame (opcode=%x2, FIN=1, MASK=0)
     |          |          |    +------------------------------------+
     |          |          |    | 2.05 Content                       |
     |          |          |    | Token: 0x7d                        |
     |          |          |    | Payload: "ready"                   |
     |          |          |    +------------------------------------+
     |          |          |
]]></artwork></figure>

</section>
<section anchor="change-log" title="Change Log">

<t>The RFC Editor is requested to remove this section at publication.</t>

<section anchor="since-draft-ietf-core-coap-tcp-tls-02" title="Since draft-ietf-core-coap-tcp-tls-02">

<t>Merged draft-savolainen-core-coap-websockets-07
Merged draft-bormann-core-block-bert-01
Merged draft-bormann-core-coap-sig-02</t>

</section>
<section anchor="since-draft-ietf-core-coap-tcp-tls-03" title="Since draft-ietf-core-coap-tcp-tls-03">

<t>Editorial updates</t>

<t>Added mandatory exchange of Capabilities and Settings messages after connecting</t>

<t>Added support for coaps+tcp port 5684 and more details on Application-Layer Protocol Negotiation (ALPN)</t>

<t>Added guidance on CoAP Signaling Ping-Pong versus WebSocket Ping-Pong</t>

<t>Updated references and requirements for TLS security considerations</t>

</section>
<section anchor="since-draft-ietf-core-coap-tcp-tls-04" title="Since draft-ietf-core-coap-tcp-tls-04">

<t>Updated references</t>

<t>Added Appendix: Updates to RFC7641 Observing Resources in the Constrained Application Protocol (CoAP)</t>

<t>Updated Capability and Settings Message (CSM) exchange in the Opening Handshake to allow initiator to send
messages before receiving acceptor CSM</t>

</section>
<section anchor="since-draft-ietf-core-coap-tcp-tls-05" title="Since draft-ietf-core-coap-tcp-tls-05">

<t>Addressed feedback from Working Group Last Call</t>

<t>Added Securing CoAP section and informative reference to OSCOAP</t>

<t>Removed the Server-Name and Bad-Server-Name Options</t>

<t>Clarified the Capability and Settings Message (CSM) exchange</t>

<t>Updated Pong response requirements</t>

<t>Added Connection Initiator and Connection Acceptor terminology where appropriate</t>

<t>Updated LWM2M 1.0 informative reference</t>

</section>
<section anchor="since-draft-ietf-core-coap-tcp-tls-06" title="Since draft-ietf-core-coap-tcp-tls-06">

<t>Addressed feedback from second Working Group Last Call</t>

</section>
<section anchor="since-draft-ietf-core-coap-tcp-tls-07" title="Since draft-ietf-core-coap-tcp-tls-07">

<t>Addressed feedback from IETF Last Call</t>

<t>Addressed feedback from ARTART review</t>

<t>Addressed feedback from GENART review</t>

<t>Addressed feedback from TSVART review</t>

<t>Added fragment identifiers to URI schemes</t>

<t>Added “Updates RFC7959” for BERT</t>

<t>Added “Updates RFC6455” to extend well-known URI mechanism to ws and wss</t>

<t>Clarified well-known URI mechanism use for all URI schemes</t>

<t>Changed NoSec to optional-to-implement</t>

</section>
<section anchor="since-draft-ietf-core-coap-tcp-tls-08" title="Since draft-ietf-core-coap-tcp-tls-08">

<t>Reverted “Updates RFC6455” to extend well-known URI mechanism to ws
and wss; point to <xref target="I-D.bormann-hybi-ws-wk"/> instead</t>

<t>Don’t use port 443 as the default port for coaps+tcp</t>

<t>Remove coap+tt and coaps+tt URI schemes (where tt is tcp or ws); map
everything to coap/coaps</t>

</section>
</section>
<section numbered="no" anchor="acknowledgements" title="Acknowledgements">

<t>We would like to thank Stephen Berard, Geoffrey Cristallo,
Olivier Delaby, Esko Dijk, Christian Groves, Nadir Javed,
Michael Koster, Matthias Kovatsch, Achim Kraus, David Navarro,
Szymon Sasin, Goran Selander, Zach Shelby, Andrew Summers, Julien Vermillard,
and Gengyu Wei for their feedback.
Last-call reviews from Mark Nottingham and Yoshifumi Nishida as well
as several IESG reviewers provided extensive comments; from the IESG,
we would like to specifically call out Adam Roach, Ben Campbell, Eric
Rescorla, Mirja Kühlewind, and the responsible AD Alexey Melnikov.</t>

</section>
<section numbered="no" anchor="contributors" title="Contributors">

<figure><artwork><![CDATA[
Matthias Kovatsch
Siemens AG
Otto-Hahn-Ring 6
Munich D-81739

Phone: +49-173-5288856
EMail: matthias.kovatsch@siemens.com


Teemu Savolainen
Nokia Technologies
Hatanpaan valtatie 30
Tampere FI-33100
Finland

Email: teemu.savolainen@nokia.com


Valik Solorzano Barboza
Zebra Technologies
820 W. Jackson Blvd. Suite 700
Chicago 60607
United States of America

Phone: +1-847-634-6700
Email: vsolorzanobarboza@zebra.com
]]></artwork></figure>

<!--  LocalWords:  TCP CoAP UDP firewalling firewalled TLS IP SCTP
 -->
<!--  LocalWords:  DCCP IoT optimizations ACKs acknowledgement TKL
 -->
<!--  LocalWords:  prepending URI DTLS demultiplexing demultiplex pre
 -->
<!--  LocalWords:  IANA ALPN Middleboxes NATs ACK acknowledgements
 -->
<!--  LocalWords:  datagram prepended CBOR namespaces subcomponent
 -->
<!--  LocalWords:  Assignee Confirmable untyped
 -->

</section>


  </back>

<!-- ##markdown-source:
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
ZxxFpW0cTiPQEgVq1SQ5OCGBudIJcjqHFbGvWPA92lyxXrdi5CPh5CttAq+r
a7dyF5yg8BXoJFj0mUTyceoUHSZvfK67GbFc+bZcBxbuQeeT3q+lEu/y+BSU
t4LyzbJQ0nbJ+M8DYcYj217gQZ2lKyPqIAenOMaKuZ0NU0hUeXytpdQk5QC7
aImxo3S8upYhxd5JaVzp3EbJZMemcgTWRn513JT63N3dXXGpmF4UFM7l5JDc
/yBt4jS26JHeVI56JXG6js4nZw8L4lryNVk4Lth+zFJqumStr61uk1UXEVXT
/6um/ZbfswOQ9qlEGSF9JNpIkS4O0pIZtQhnpStc0toIBJftsl2VZKNplGBt
XTaaikiB3hkYmddZRlKm63tMxm4R3m6t+iv1qSxoP8w9EEWHI1lumbGYoiMV
+EYkj0OJ7GR28FAntAOl43k7ejUUEKRb+Epl9s+yTgr+xJVq3Gp93Jp5kLqF
U61/76Lp1D/lonc+50X3LL/S1CqykigLq0+JvODWb+dZfIv7pGVSbQbeekML
U42Oeq0p7tJ3xIGHT999xfddIVoMKwvl1ZVnvvdCnc2VVnuvw92uWbruMViB
L1kEQ/JAR8Lh/D6swZjlhTvvOBDPL9eB/T1O/c+6dOWY63w0O88oFBiTOkwA
uNvzHF5NhqFE0op60XgRzGYL9WwRDoI4BkEO/sxSqt2ZCmgdn17tEurDL9uU
jzPBd9qhvINpqKgjOnWtMIlFV/PBsujukjxxijN0WKwj9auw+I/FQzkuvyXg
rSM6qOay6yqEY32RXofcY/g6RcMiDB9QXeirMChyk74yICMvBilmkmf+N2Dq
EXmPMOVOnxvG+wduZQ5akh+rJbZbUnV1aLUUmsdeyJQRLy/PSf8dz2MTwY01
wvCpPBiH2v8Gq4KFF26aTq5KZQh8W2VTbLhcsVL2nIfFIKCcBccMjucGU/gH
aW6CjbTcB/bV4Xluc3GBrI5GcThIb2wvLRzvf88jmCJOWdaDdygNKKIEmFw3
7YpGlCQ7w34bIMS/e/cinYbfcKYTFl1hj5jUTSqEWoVXpBKrjOtk67IN1B3b
L2t4OC6k/Hj5a5NHHpLQYo7GTQJHCTPG3iYYXS2VQyMq0R7bejQg7o4RqtCM
o9VvF7qHgCrUp4UEIzP4lxg/G5qe1+60XAICZB8qyg6gFuhdOBo+RtZSQwN8
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
TzA6d6Rf+/9qImOZSzkBAA==

-->

</rfc>

