Name: Ameya Dalvi
Gr No: 1710610
Roll No:18
Div.: Q
COAP protocol frame structure and
implementation steps for application
Introduction
CoAP is an IoT protocol. CoAP stands for Constrained Application Protocol, and it is defined in RFC
7252. CoAP is a simple protocol with low overhead specifically designed for constrained devices
(such as microcontrollers) and constrained networks. This protocol is used in M2M data exchange
and is very similar to HTTP
The main features of CoAP protocols are:
Web protocol used in M2M with constrained requirements
Asynchronous message exchange
Low overhead and very simple to parse
URI and content-type support
Proxy and caching capabilities
From the abstraction protocol layer, CoAP can be
represented as in the figure beside :
As you can see there are two different layers that make
CoAp protocol: Messages and Request/Response. The
Messages layer deals with UDP and with asynchronous
messages. The Request/Response layer manages
request/response interaction based on request/response
messages.
CoAP supports four different message types:
Confirmable
Non-confirmable Figure 1 :CoAP Layers
Acknowledgment
Reset
CoAP Messages Model / Format
This is the lowest layer of CoAP. This layer deals with UDP exchanging messages between endpoints.
Each CoAP message has a unique ID; this is useful to detect message duplicates. A CoAP message is
built by these parts:
A binary header
A compact option
Payload
The constrained application protocol is the meat for constrained environments, and for this
reason, it uses compact messages. To avoid fragmentation, a message occupies the data section
of a UDP datagram. A message is made by several parts:
Where:
Ver: It is a 2 bit unsigned integer indicating the version
T: it is a 2 bit unsigned integer indicating the message type: 0 confirmable, 1 non-
confirmable
TKL: Token Length is the token 4 bit length
Code: It is the code response (8 bit length)
Message ID: It is the message ID expressed with 16 bit
And so on.
CoAP protocol uses two kinds of messages:
Confirmable message
Non-confirmable message
A confirmable message is a reliable message. When exchanging messages between two endpoints,
these messages can be reliable. In CoAP, a reliable message is obtained using a Confirmable message
(CON). Using this kind of message, the client can be sure that the message will arrive at the server. A
Confirmable message is sent again and again until the other party sends an acknowledge message
(ACK). The ACK message contains the same ID of the confirmable message (CON).
The other message category is the Non-confirmable (NON) messages. These are messages that don’t
require an Acknowledge by the server. They are unreliable messages or in other words messages
that do not contain critical information that must be delivered to the server. To this category
belongs messages that contain values read from sensors.
CoAp Request/Response Model
The CoAP Request/Response is the second layer in the
CoAP abstraction layer. The request is sent using a
Confirmable (CON) or Non-Confirmable (NON)
message. There are several scenarios depending on if
the server can answer immediately to the client
request or the answer if not available.
If the server can answer immediately to the client
request, then if the request is carried using a
Confirmable message (CON), the server sends back to
the client an Acknowledge message containing the
response or the error code
As you can notice in the CoAP message, there is a
Token. The Token is different from the Message-ID Figure 2: Confirmable message
and it is used to match the request and the response.
If the server can’t answer to the request coming from the
client immediately, then it sends an Acknowledge message
with an empty response. As soon as the response is
available, then the server sends a new Confirmable
message to the client containing the response. At this
point, the client sends back an Acknowledge message
If the request coming from the client is carried using a
NON-confirmable message, then the server answer using a
NON-confirmable message.
Figure 3: Non-Confirmable Message
Conclusion
CoAP uses a request-response paradigm. CoAP is essentially a one-to-one protocol very similar to
the HTTP protocol. CoAP is more suitable for state transfer. This protocol is used in M2M data
exchange. CoAP is specifically designed for IoT and in more details for M2M so it is very optimized
for this task.