Communication layer :
The communication layer supports the connectivity of the devices. There are multiple potential protocols for communication between the devices and the cloud.
The most well-known three potential protocols are,
HTTP/HTTPS (and RESTful approaches on those)
MQTT 3.1/3.1.1(Message Queuing Telemetry Transport)
Constrained application protocol (CoAP)
HTTP is well known, and there are many libraries that support it. Because it is a simple text-based protocol, many small devices such as 8-bit controllers can only partially support the protocol – for example enough code to POST or GET a resource.
The larger 32-bit-based devices can utilize full HTTP client libraries that properly implement the whole protocol.
There are several protocols optimized for IoT use. The two best-known are MQTT6 and CoAP7.
It has been through some iterations and the current version (3.1.1) is undergoing standardization in the OASIS MQTT Technical Committee8. MQTT is a publish-subscribe messaging system based on a broker model.
In addition, there is an associated specification designed for ZigBee-style networks called MQTT-SN (Sensor Networks).
CoAP is a protocol from the IETF that is designed to provide a RESTful application protocol modeled on HTTP semantics, but with a much smaller footprint and a binary rather than a text-based approach. CoAP is a more traditional client-server approach rather than a brokered approach.
CoAP is designed to be used over UDP.
For the reference architecture, we have opted to select MQTT as the preferred device communication protocol, with HTTP as an alternative option.