Application Layer Protocols

Xplicity

Xplicity

SHARE THIS:

I was searching for a very specific information about IoT processes.  Part of my search was about MQTT application layer protocols and their usage in a Smart Home environment.  Some of protocols appeared to be a pretty niche thing. As a result, it’s nearly the “mission impossible” to find a well-structured information about application of main protocols. So, I decided to make a such list.

What application layer protocols are and why we need them?

Application layer protocols are required for network-to-user interaction, as well as resolving incompatibility issues. They allow users’ applications to access network services, such as database query manager, file access, and the like. 

Application layer protocols are responsible for transmitting service information, providing error data to applications and forming requests at the submission level.

Examples

MQTT (Message Queuing Telemetry Transport). This protocol allows you to publish and subscribe to a messaging model in a very easy manner. It is useful when exchanging data with remote devices where a small code footprint, as well as high network bandwidth is required.

MQTT–SN (MQTT Sensor Networks). This is an open, simple and fast publishing-subscription protocol, that is intended for direct machine-to-machine communication and mobile applications.

CoAP (Constrained Application Protocol). CoAP is used on resource-limited Internet devices, such as WSN nodes. This protocol is designed to be easily converted to a HTTP protocol, thus simplifying integration with the web.

SMCP (Simple Media Control Protocol). That’s in fact a C-based CoAP case, which is suitable for embedded environments (MP3 players, mobile phones, etc.).

STOMP (Simple Text Oriented Messaging Protocol) is a very plain and easily installed protocol. It is so simple, that a client (also known as service requester, i.e. Web browser in user’s computer) for communication can be written in a matter of hours. However, the same cannot be said about the protocol server. 

XMPP (Extensible Messaging and Presence Protocol). An open real-time communication technology, that enables a wide range of applications, including instant messaging, multiparty chats, voice and video calling, collaboration, easy middleware, content syndication, and a shared XML data routing.

AMQP (Advanced Message Queuing Protocol). An open standard application layer protocol intended for web software. AMQP features include message orientation, queuing, routing, reliability, and security.

DDS (Data–Distribution Service). The first open international middleware standard, that is directly intended for publishing-subscribing the communications in a real-time and embedded systems.

HTTP (Hypertext Transfer Protocol). Allows more efficient use of network resources, as well as reduces the perception in an externally invisible way by introducing header field compression. This protocol also allows multiple data to be exchanged simultaneously over the same connection. 

What problem each of them solves best?

MQTT protocol is best suited for machine-to-machine communication among IoT devices.

CoAP  is convenient for devices with limited power resources, such as small sensors or satellites.

STOMP is reasonable to use where clients need to be implemented by using scripting languages. The protocol itself is very simple and if libraries are not created, they can be easily implemented by a creator.

AMQP fits best when high reliability and extensive functionality are required.  As well as various routing and distribution strategies.

DDS suits best for real-time applications where task completion cannot be delayed.

HTTP protocol is best suited to use where HTTP versatility is needed. However, the network and devices must have sufficient resources.

Conclusion

There are many different application layer protocols. Each of them enables network communication with user, and vice versa. The most vital aspect is choosing the right protocol to solve a particular problem. When you are choosing an application layer protocol, things like data structure, coding efficiency, device type, reliability, security, and other similar things need to be considered. The wrong choice can waste a lot of your time and some of financial resources until you can finally solve the problem and achieve the desired result.