MQTT (Message Queuing Telemetry Transport) è un protocollo di trasporto di messaggistica client-server publish/subscribe leggero, aperto, semplice, di semplice progettazione e facile da implementare. Sebbene HTTP sia lo standard epico per le pagine web, per la comunicazione su larga scala tra macchine (Machine-to-Machine, M2M), il precedente modello richiesta/risposta (Request/Response) non è più adatto e viene sostituito dalla modalità publish/subscribe (Publish/ Subscribe). Pertanto, MQTT è già un protocollo standard indispensabile per l'Internet delle cose.
Le caratteristiche di MQTT lo rendono ideale per l'uso in molte situazioni, compresi gli ambienti vincolati come quelli machine-to-machine (M2M) e Internet of Things (IoT).
Il protocollo funziona su TCP/IP o su altri protocolli di rete che forniscono connessioni bidirezionali ordinate e senza perdite. Le sue funzioni comprendono:
- Utilizzare il modello di messaggistica publish/subscribe per fornire la distribuzione di messaggi uno-a-molti e il disaccoppiamento delle applicazioni.
- Trasporto di messaggistica indipendente dal contenuto del payload.
- Tre qualità di servizio per la messaggistica:
- "Al massimo una volta", i messaggi vengono consegnati al meglio in base all'ambiente operativo. È possibile che si verifichi una perdita di messaggi. Ad esempio, questo livello potrebbe essere utilizzato per i dati dei sensori ambientali, dove non importa se una singola lettura viene persa perché la lettura successiva verrà rilasciata a breve.
- "Almeno una volta" garantisce l'arrivo del messaggio, ma può verificarsi una duplicazione.
- "Esattamente una volta" garantisce che il messaggio arrivi esattamente una volta. Ad esempio, in un sistema di fatturazione, dove i messaggi duplicati o mancanti possono comportare addebiti errati, si può utilizzare questo livello.
- Ridurre al minimo l'overhead di trasmissione e la commutazione di protocollo, riducendo il traffico di rete.
- Un meccanismo di notifica alle parti interessate quando la disconnessione avviene in modo anomalo.
cliente:
Con un programma o un dispositivo che utilizza MQTT, il client stabilisce sempre una connessione di rete con il server, che può
- Pubblicare notizie sulle applicazioni che potrebbero essere interessanti per altri clienti.
- Sottoscrivere all'applicazione richiedente i messaggi che è interessata a ricevere.
- Annullamento dell'iscrizione per rimuovere le richieste di messaggi di applicazione.
- Disconnettersi dal server.
server:
Un programma o un dispositivo che funge da intermediario tra i client che pubblicano i messaggi dell'applicazione e i client che si sono abbonati, un server
- Accettare le connessioni di rete dai client.
- Accetta i messaggi di applicazione pubblicati dal client.
- Gestisce le richieste di iscrizione e cancellazione da parte dei clienti.
- Inoltrare i messaggi dell'applicazione che corrispondono alla sottoscrizione del client.
Messaggio di candidatura:
Il protocollo MQTT consente alle applicazioni di trasferire dati attraverso le reti. Quando MQTT trasmette messaggi di applicazioni, questi hanno nomi di qualità del servizio e di argomenti associati.
abbonamento:
Le sottoscrizioni includono filtri per argomenti e QoS massimo. Le sottoscrizioni sono associate a una singola sessione. Una sessione può contenere più sottoscrizioni. Ogni sottoscrizione in una sessione ha un filtro di argomento diverso.
Sessione:
Interazione statica tra client e server. Alcune sessioni durano solo per la durata di una connessione di rete, mentre altre possono estendersi su più connessioni di rete consecutive tra il client e il server.
Nome dell'argomento:
Etichetta allegata ai messaggi applicativi che corrispondono a sottoscrizioni note al server. Il server invia una copia del messaggio applicativo a ogni client con una sottoscrizione corrispondente.
Filtraggio degli argomenti:
Un'espressione contenuta in una sottoscrizione che indica l'interesse per uno o più argomenti. I filtri per argomenti possono contenere caratteri jolly.
Pacchetto di controllo MQTT:
Un pacchetto di informazioni inviato attraverso una connessione di rete. Le specifiche MQTT definiscono 14 diversi tipi di pacchetti di controllo, uno dei quali (pacchetto publish) è usato per consegnare i messaggi delle applicazioni.