Structure d’un paquet de contrôle MQTT V5
Publié le 29/02/2024
Extrait du document
«
Structure d’un paquet de contrôle MQTT V5
1) Structure générale de la trame d’un paquet de contrôle MQTT quelconque
2) Structure générale de la trame d’un paquet de contrôle MQTT CONNECT
3) Structure générale de la trame d’un paquet de contrôle MQTT PUBLISH
•
Outil à installer : Wireshark https://www.wireshark.org/download.html
•
Ce cours se base sur les spécifications de la dernière version 5 du protocole MQTT (Mars 2019)
https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.pdf
1
Source : https://fr.wikipedia.org/wiki/Wireshark
1) Structure générale d’un paquet de contrôle MQTT
Les paquets MQTT ont une structure binaire.
Ils se
composent de 3 parties au maximum :
1.a) En-tête fixe , présent dans tous les paquets
MQTT
1.b) En-tête variable , présent dans certains paquets
MQTT
1.c) Payload , présent dans certains paquets MQTT
L'en-tête fixe est toujours présent dans chaque
paquet MQTT.
Il a une taille minimale de deux octets.
L’en-tête variable n'est pas présent dans tous les
paquets de contrôle MQTT.
Sa structure est différente
pour différentes requêtes MQTT.
Payload correspond aux données réelles qui vont
être envoyées.
Il n’est pas présent dans tous les
paquets de contrôle MQTT.
3
1.a) En-tête fixe , présent dans tous les paquets MQTT
4
• Donc, dès le 1er octet d’une trame MQTT, le broker MQTT peur savoir quel est le type de
ce paquet (à l’aide des bits 4-7 de l’octet 1)
5
• Commence à l’octet 2 (Remaining Length prend au maximum 4 octets)
• Pour simplifier les calculs, on prendra le cas où Remaining Length ne prendra qu’un seul
octet
La longueur restante (Remaing Length) est un nombre variable entier d'octets qui représente
le nombre d'octets restants dans le paquet de contrôle actuel.
La longueur restante n'inclut
pas les octets utilisés pour coder la longueur restante.
La taille du paquet est le nombre total
de octets dans un paquet de contrôle MQTT, cela est égal à la longueur de l'en-tête fixe plus
la longueur restante.
6
• Activité 1 :
Analyser ce paquet MQTT obtenu à l’aide de wireskark et dire quel est son type ?
• Réponse Activité 1 :
Cette trame MQTT (en bleu) contient 14 octets
1er octet : 10 ; Conversion en binaire : 0001 0000.
Donc, il s’agit d’un paquet
car les flags (bits 0-3) sont tous à 0 et les bits 4-7 de l’octet 1 sont 0001
Connect,
2ème octet : 10 ; conversion en binaire : 00010000, Donc, le remaining lenght =,16 octets ;
cela veut dire que l’entête variable et le payload auront la taille de 16 octets.
En comptant les octets
7
restants, on vérifie bien que le nombre d’octets restants de la trame MQTT est bien égal à 16 octets
• Activité 2 :
Analyser ce paquet MQTT obtenu à l’aide de wireskark et dire quel est son type ?
• Réponse Activité 2 :
Cette trame MQTT (en bleu) contient 11 octets
1er octet : 82 ; Conversion en binaire : 0100 0010.
Donc, il s’agit d’un paquet
SUBSCRIBE, car les flags (bits 0-3) sont à 0010 et les bits 4-7 de l’octet 1 sont 0100
2ème octet : 09 ; conversion en binaire : 0000 1001, Donc, le remaining lenght =,9 ; cela veut
dire que l’entête variable et le payload auront la taille de 9 octets.
En comptant les octets restants,
on vérifie bien que le nombre d’octets restants de la trame MQTT est bien égal à 9 octets
8
1.b) En-tête variable , présent seulement dans certains paquets MQTT
• Certains types de paquets de contrôle MQTT contiennent une en-tête variable.
Cette
entête se trouve l'en-tête fixe et la charge utile (payload).
• Le contenu de l'en-tête variable varie en fonction du type de paquet.
• L’entête variable peut contenir le champ Identificateur de paquet.
Il est commun à
plusieurs types de paquets.
9
• L’entête variable contient plusieurs informations qui dépendent du type de paquet
MQTT.
• L’entête variable se termine par de propriétés.
L'ensemble des propriétés est
composé d'une longueur des propriétés (property length) suivie des propriétés.
• S'il n'y a pas de propriétés, cela DOIT être indiqué en incluant une longueur de
propriété de zéro.
• Une propriété se compose d'un identifiant qui définit son utilisation et son type de
données, suivi d'une valeur.
10
1.c) Payload , présent seulement dans certains paquets MQTT
•
•
Certains paquets de contrôle MQTT contiennent une charge utile comme partie finale du paquet MQTT
Liste des paquets de contrôle MQTT qui contiennent ou non un payload :
11
2) Structure d’un paquet de contrôle MQTT
CONNECT
Présent
Présent
12
Entête variable du paquet CONNECT : Elle contient....
»
↓↓↓ APERÇU DU DOCUMENT ↓↓↓
Liens utiles
- 1ère Spé SVT Thème 2 : La dynamique interne de la Terre. Chapitre 1 : La structure interne du globe terrestre
- La structure du commerce international dans les années 1970
- LA STRUCTURE GEOLOGIQUE DE LA COTE D’IVOIRE
- L'approche en termes de classes sociales demeure t-elle pertinente pour rendre compte de la structure sociale et de la société française actuelle ?
- LINGUISTIQUE S4 – UE 5 CONTRÔLE CONTINU N°2 - CORRIGE