MQTT
MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie publish/subscribe conçu pour des équipements aux ressources limitées et des réseaux instables — le contexte typique de l’IoT (capteurs, objets connectés) où il est devenu le standard de facto.
Publish/subscribe plutôt que requête/réponse
Section intitulée « Publish/subscribe plutôt que requête/réponse »Contrairement à HTTP (un client demande, un serveur répond), MQTT repose sur un broker central et des topics (canaux nommés, hiérarchiques : maison/salon/temperature) :
- Un client publie un message sur un topic, sans savoir qui (ni combien de clients) le recevra.
- Un client s’abonne à un ou plusieurs topics (avec des jokers :
maison/+/temperatureoumaison/#) et reçoit automatiquement tout message publié dessus. - Le broker se charge de router chaque message publié vers tous les abonnés du topic concerné.
Ce découplage permet à un capteur de publier une mesure sans jamais connaître les systèmes qui la consomment — on peut ajouter un nouveau consommateur (un tableau de bord, une alerte) sans toucher au capteur.
Pourquoi c’est adapté aux contraintes IoT
Section intitulée « Pourquoi c’est adapté aux contraintes IoT »- En-tête minimal (2 octets au minimum) : overhead très faible comparé à HTTP, important sur des réseaux bas débit (LoRa, réseaux cellulaires IoT) ou des microcontrôleurs à mémoire très limitée.
- Trois niveaux de qualité de service (QoS) adaptés à des connexions instables :
- QoS 0 : envoi au mieux, sans garantie (fire and forget).
- QoS 1 : livraison garantie, mais possibilité de doublons.
- QoS 2 : livraison garantie exactement une fois (le plus coûteux en échanges).
- Last Will and Testament (LWT) : un client peut définir à l’avance un message que le broker publiera automatiquement s’il se déconnecte de façon anormale — utile pour détecter qu’un capteur est tombé en panne ou a perdu sa connexion.
- Sessions persistantes : un client peut se déconnecter et retrouver, à sa reconnexion, les messages publiés entre-temps sur les topics auxquels il est abonné (selon le QoS).
Transport et sécurité
Section intitulée « Transport et sécurité »MQTT tourne au-dessus de TCP (port 1883 en clair, 8883 avec TLS). L’authentification de base (identifiant/mot de passe) est envoyée en clair sans TLS — sur un déploiement IoT exposé, TLS n’est pas optionnel. Une variante, MQTT over WebSocket, permet à des clients web navigateur de s’abonner directement à des topics.