1. Common Definition:
Subscription: A subscription comprises a Topic Filter and a maximum QoS. A subscription is associated with a single session. A session can contain more than one Subscription. Each Subscription within a session has a different topic filter.
Topic Name: The label attached to an Application Message which is matched against the Subscriptions known to the Server
Topic Filter: An expression contained in a Subscription, to indicate an interest in one or more topics. A Topic Filter can include wildcard characters.
MQTT Control Packet: A packet of information that is sent across the Network Connection which is used to convey Application Messag
2. MQTT Control Packet:
Structure of an MQTT Control Packet:
– Byte 1, bits 7-4: Define MQTT Control Packet type (15 types) such as: CONNECT, CONNACK, PUBLISH, PUBACK…..
– Byte 1, bit 3-0: Define flags specific for each MQTT Control Packet type. Note that: where a flag marked as “Reserved”, it is reserved for future use and must be set to the value list in that table. If invalid flags are receive, the receiver will disconnect the connection.
– Start at byte 2: The remaining length is the number of bytes remaining within the current packet, including data in the variable header and the payload.
Variable Header: The content of the variable header depending on the packet type. The packet identifier field of variable header is common in several packet types (2 bytes).
Payload: Contain content of the Message, but it is not mandatory in most packets.
3. MQTT Controls Packets Types:
CONNECT – Client requests a connection to a Server.
After stablished network connection, the first packet was sent from client to server is Connect packet. If server receive 2 CONNECT packets from one client, it will disconnect the client.
Client is identified by unique Client identifier. The payload also contains a Will topic, Will Message, Username and Password.
CONNACK – Acknowledge connection request.
Used to response to a CONNECT Packet received and CONNACK must be the first packet send from server. If client does not receive CONNACK packet from the Server within a specific time, connection will be closed. CONNACK does not contains payload section.
PUBLISH – Publish message.
A PUBLISH Control Packet is sent from Client to a Server or from Server to a Client to transport an Application Message. Packet structure:
+ DUP flag: Indicate that this is the first message or re-delivery message.
+ QoS level: this field indicates the level of assurance for delivery of Application Message
+ Retain: indicate that message is deleted at broker or stored to send to other place.
– Variable Header contains Topic Name and Packet identifier.
– Pay Load contains Application Message that is being published.
PUBACK – Publish acknowledgement: Used to response to a PUBLISH Packet with QoS level 1 and it does not contains Payload.
PUBREC – Publish received: Used to response to a PUBLISH Packet with QoS 2. It is the second packet of the QoS 2 protocol exchange.
PUBREL – Publish release: Used to response to a PUBREC Packet.
PUBCOM – Publish complete: Use to response to a PUBREL Packet, and the final packet of the QoS 2 protocol exchange.