The server responds with a response code that may include a resource representation.
The CoAP request/response semantics include the methods GET, POST, PUT, and DELETE.
CoAP defines four types of messages: confirmable, non-confirmable, acknowledgement, and
reset.
Method codes and response codes included in some of these messages make them carry
requests or responses.
While running over UDP, CoAP offers a reliable transmission of messages when a CoAP
header is marked as “confirmable.”
In addition, CoAP supports basic congestion control with a default time-out, simple stop and
wait retransmission with exponential back-off mechanism, and detection of duplicate messages
through a message ID.
If a request or response is tagged as confirmable, the recipient must explicitly either
acknowledge or reject the message, using the same message ID, as shown in Figure 6-9. If a
recipient can’t process a non
-confirmable message, a reset message is sent.
Figure 6-9
CoAP Reliable Transmission Example
The client in Figure 6-9 sends a GET message to get the temperature from the sensor.
Notice that the 0x47 message ID is present for this GET message and that the message is also
marked with CON. A CON, or confirmable, marking in a CoAP message means the message

Module 3: Internet of Things [15CS81]
© Mr. Nischaykumar Hegde, Dept. of CSE, VCET Puttur
216
will be retransmitted until the recipient sends an acknowledgement (or ACK) with the same
message ID.
In Figure 6-9, the temperature sensor does reply with an ACK message referencing the correct
message ID of 0x47.
In addition, this ACK message piggybacks a successful response to the GET request itself.
This is indicated by the 2.05 response code followed by the requested data.
CoAP supports data requests sent to a group of devices by leveraging the use of IP Multicast.
Implementing IP Multicast with CoAP requires the use of all-CoAP-node multicast addresses.
For IPv4 this address is 224.0.1.187, and for IPv6 it is FF0X::FD.
These multicast addresses are joined by CoAP nodes offering services to other endpoints while
listening on the default CoAP port, 5683.
Therefore, endpoints can find available CoAP services through multicast service discovery. A
typical use case for multicasting is deploying a firmware upgrade for a group of IoT devices,
such as smart meters.
Services from a CoAP server can either be discovered by learning a URI in a namespace or
through the “All CoAP nodes” multicast address.
When utilizing the URI scheme for discovering services, the default port 5683 is used for non-
secured CoAP, or coap, while port 5684 is utilized for DTLS-secured CoAP, or coaps. The
CoAP server must be in listening state on these ports, unless a different port number is
associated with the URI in a namespace.
