Internet Engineering Task Force (IETF)                         Z. Shelby
Request for Comments: 7252                                           ARM
Category: Standards Track                                      K. Hartke
ISSN: 2070-1721                                               C. Bormann
                                                 Universitaet Bremen TZI
                                                               June 2014


              The Constrained Application Protocol (CoAP)

Abstract

   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.

   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.

Status of This Memo

   This is an Internet Standards Track document.
   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc7252.

Table of Contents

   1.  Introduction
     1.1.  Features
     1.2.  Terminology
   2.  Constrained Application Protocol
     2.1.  Messaging Model
     2.2.  Request/Response Model
     2.3.  Intermediaries and Caching
     2.4.  Resource Discovery
   3.  Message Format
     3.1.  Option Format
     3.2.  Option Value Formats
   4.  Message Transmission
     4.1.  Messages and Endpoints
     4.2.  Messages Transmitted Reliably
     4.3.  Messages Transmitted without Reliability
     4.4.  Message Correlation
     4.5.  Message Deduplication
     4.6.  Message Size
     4.7.  Congestion Control
     4.8.  Transmission Parameters
   5.  Request/Response Semantics
     5.1.  Requests
     5.2.  Responses
     5.3.  Request/Response Matching
     5.4.  Options
     5.5.  Payloads and Representations
     5.6.  Caching
     5.7.  Proxying
     5.8.  Method Definitions
     5.9.  Response Code Definitions
     5.10. Option Definitions
   6.  CoAP URIs
     6.1.  coap URI Scheme
     6.2.  coaps URI Scheme
     6.3.  Normalization and Comparison Rules
     6.4.  Decomposing URIs into Options
     6.5.  Composing URIs from Options
   7.  Discovery
     7.1.  Service Discovery
     7.2.  Resource Discovery
   8.  Multicast CoAP
     8.1.  Messaging Layer
     8.2.  Request/Response Layer
   9.  Securing CoAP
     9.1.  DTLS-Secured CoAP
   10. Cross-Protocol Proxying between CoAP and HTTP
     10.1.  CoAP-HTTP Proxying
     10.2.  HTTP-CoAP Proxying
   11. Security Considerations
   12. IANA Considerations
   13. References
     13.1.  Normative References
     13.2.  Informative References

[NOTE: This file contains the header, abstract, and table of contents
 of RFC 7252. The full specification text is available at:
   https://www.rfc-editor.org/rfc/rfc7252
   https://www.rfc-editor.org/rfc/rfc7252.txt  (text)
   https://www.rfc-editor.org/rfc/rfc7252.pdf  (PDF)

 Full document: 112 pages, June 2014
 Authors: Zach Shelby (ARM), Klaus Hartke, Carsten Bormann (Universitaet Bremen TZI)
 DOI: 10.17487/RFC7252]
