Fundamentos de MQTT

Glosario MQTT: 60 términos que todo desarrollador IoT debería conocer

De ACL a Will Delay Interval, este glosario MQTT define 60 términos del protocolo, del broker y de Sparkplug B en lenguaje claro, con ejemplos que puedes probar en broker.connectmq.com.

Ilustración de un glosario MQTT representado como un libro de consulta abierto con árboles de topics, insignias de QoS e iconos de broker
Pruébalo en tu propio broker MQTTConsigue un broker MQTT privado y gestionado con el plan Free y empieza con ejemplos de código listos para usar.
Pruébalo gratis Ejemplos de código Sin tarjeta

Este glosario MQTT define los 60 términos que encontrarás en especificaciones, documentación de brokers y APIs de bibliotecas cliente, de ACL a Will Delay Interval. Cada entrada es una definición breve y clara con un enlace a un artículo más detallado cuando existe, para que puedas descifrar cualquier conversación sobre MQTT y sepas dónde seguir leyendo.

Cómo usar este glosario MQTT

Los términos están agrupados alfabéticamente (por su nombre original en inglés, que es el que verás en la documentación). Cuando un término solo se aplica a MQTT 5.0 se marca como "(MQTT 5)". Los ejemplos usan el servidor MQTT público gratuito broker.connectmq.com y topics bajo un prefijo como connectmq/demo/ab12/. Todo lo que se publica ahí es legible por cualquiera, así que usa datos de prueba inofensivos. Si eres completamente nuevo en el protocolo, el tutorial completo de MQTT es un mejor punto de partida; vuelve aquí cuando un término te haga tropezar.

Glosario MQTT: de la A a la C

ACL (Access Control List, lista de control de acceso). Reglas de un broker que deciden qué clientes pueden publicar o suscribirse a qué topics. La implementación varía según el broker.

Authentication (autenticación). Demostrar la identidad de un cliente ante el broker, normalmente con usuario y contraseña en el paquete CONNECT, un certificado de cliente o un token.

Authorization (autorización). Decidir qué puede hacer un cliente ya autenticado. Es distinta de la autenticación, aunque a menudo se confunden.

Paquete AUTH (MQTT 5). Un paquete de control para intercambios de autenticación extendida, como los mecanismos de desafío/respuesta.

Bridge (puente). Un enlace que hace que un broker actúe como cliente de otro para que determinados topics fluyan entre ambos. Consulta bridge MQTT.

Broker. El servidor que recibe cada mensaje publicado y lo enruta a los suscriptores que coinciden. Nuestro artículo sobre qué hace un broker MQTT profundiza en ello.

Clean Session (MQTT 3.1.1). Un flag de CONNECT. Si es true, el broker descarta cualquier estado de sesión previo del client ID; si es false, el estado se conserva.

Clean Start (MQTT 5). El sustituto de Clean Session en MQTT 5. Solo controla si se reutiliza una sesión existente; cuánto dura la sesión se define por separado con Session Expiry Interval.

Client (cliente). Cualquier programa o dispositivo que se conecta a un broker, ya sea para publicar, suscribirse o ambas cosas.

Client ID. El identificador que un cliente envía en CONNECT. El broker lo usa para encontrar la sesión, así que debe ser único por conexión. En los brokers privados de ConnectMQ, los client IDs están vinculados a las credenciales emitidas.

Control packet (paquete de control). Uno de los tipos de mensaje fijos de MQTT, como CONNECT, PUBLISH o SUBSCRIBE.

Correlation Data (MQTT 5). Bytes que un solicitante adjunta a un mensaje para poder emparejar la respuesta que recibe.

La B de Birth: términos de Sparkplug

Birth certificate (Sparkplug). Mensajes NBIRTH y DBIRTH que anuncian un nodo o dispositivo y la lista completa de sus métricas cuando se conecta.

Death certificate (Sparkplug). Mensajes NDEATH y DDEATH que marcan un nodo o dispositivo como desconectado; NDEATH suele registrarse como el Will de MQTT.

Edge of Network (EoN) node (Sparkplug). Un gateway que publica datos Sparkplug en nombre de los dispositivos que tiene detrás.

Host application (Sparkplug). El consumidor principal, a menudo un SCADA, que sigue el estado de los nodos y puede enviar comandos.

Sparkplug B. Una especificación de Eclipse que define la estructura de topics, payloads Protobuf y la gestión de estado sobre MQTT. Lee Sparkplug B y Unified Namespace para tener la visión completa.

Glosario MQTT: de la D a la M

DUP flag. Se activa en un PUBLISH que se está reenviando porque no se recibió la confirmación del original.

Fixed header (cabecera fija). Los primeros dos a cinco bytes de todo paquete MQTT: tipo de paquete, flags y longitud restante.

Inflight window (ventana en vuelo). El número de mensajes QoS 1 y QoS 2 que un cliente o broker ha enviado pero cuya confirmación aún no ha recibido.

ISA-95. Un estándar industrial para la jerarquía empresa/control (empresa, planta, área, línea, célula) que a menudo se refleja en los árboles de topics MQTT.

Keep Alive. El intervalo máximo en segundos entre paquetes de un cliente. Si no envía nada más, el cliente envía PINGREQ; si el broker no recibe nada durante una vez y media ese intervalo, cierra la conexión.

Last Will and Testament (LWT, última voluntad). Un mensaje que el broker publica en nombre del cliente si este se desconecta de forma inesperada. Se usa habitualmente para el estado online/offline.

Maximum Packet Size (MQTT 5). Un límite que cada lado puede anunciar para el paquete más grande que aceptará.

Message Expiry Interval (MQTT 5). Una vida útil en segundos tras la cual se descarta un mensaje no entregado.

MQTT. Un protocolo de mensajería publish/subscribe ligero sobre TCP, estandarizado por OASIS en las versiones 3.1.1 y 5.0.

MQTT-SN. MQTT for Sensor Networks, una variante para UDP y redes de datagramas no IP que necesita un gateway. Consulta MQTT-SN explicado.

mTLS (TLS mutuo). TLS en el que el cliente también presenta un certificado para que el broker pueda autenticarlo.

De la N a la Q

Payload. Los datos de aplicación dentro de un PUBLISH. MQTT los trata como bytes opacos; JSON, Protobuf y texto plano son habituales.

Payload Format Indicator (MQTT 5). Un flag que declara si el payload es texto UTF-8 o bytes sin especificar.

Persistent session (sesión persistente). Estado de sesión (suscripciones, mensajes en cola) que el broker conserva entre desconexiones.

PINGREQ / PINGRESP. Los paquetes de latido del keep-alive.

PUBACK. Confirmación de un PUBLISH con QoS 1.

PUBREC, PUBREL, PUBCOMP. Los tres paquetes adicionales del handshake de cuatro pasos de QoS 2.

PUBLISH. El paquete que transporta un mensaje hacia o desde el broker.

Publisher (publicador). Un cliente que envía mensajes a un topic.

QoS (Quality of Service, calidad de servicio). La garantía de entrega por mensaje: 0 como máximo una vez, 1 al menos una vez, 2 exactamente una vez. Detalles en niveles de QoS de MQTT explicados.

Quota (cuota). Un límite impuesto por el broker, como conexiones, tasa de mensajes o tamaño de mensaje. Los brokers MQTT 5 pueden notificar que se ha superado con el reason code 0x97.

De la R a la S

Reason code (MQTT 5). Un estado de un byte en las confirmaciones y en DISCONNECT que explica el éxito o el fallo, como 0x87 Not authorized.

Receive Maximum (MQTT 5). Cuántos mensajes QoS 1/2 sin confirmar está dispuesto a procesar un lado a la vez; una forma de control de flujo.

Response Topic (MQTT 5). Un topic indicado en una petición en el que quien responde debe publicar su respuesta.

Retained message (mensaje retenido). Un mensaje que el broker guarda como último valor conocido de un topic y entrega a cada nuevo suscriptor. Pruébalo: mosquitto_pub -h broker.connectmq.com -i gl-ab12 -t connectmq/demo/ab12/state -m on -r.

Session (sesión). El estado que el broker guarda para un client ID: suscripciones, mensajes en vuelo y mensajes en cola.

Session Expiry Interval (MQTT 5). Cuántos segundos conserva el broker una sesión tras la desconexión. El broker público de pruebas permite hasta 30 minutos.

Shared subscription (suscripción compartida, MQTT 5). Una suscripción de la forma $share/group/topic que reparte la carga de mensajes entre los miembros de un grupo.

SUBACK. La respuesta del broker a SUBSCRIBE, que concede un QoS o devuelve un error por cada filtro de topic.

Subscriber (suscriptor). Un cliente que recibe mensajes de los filtros de topic a los que se ha suscrito.

SUBSCRIBE / UNSUBSCRIBE. Paquetes para añadir o eliminar filtros de topic.

Subscription identifier (MQTT 5). Un número asociado a una suscripción que se devuelve en los mensajes coincidentes para que el cliente sepa qué suscripción provocó la entrega.

Topics $SYS. Topics reservados del broker, que suelen empezar por $SYS/, y que exponen información de estado. Por ejemplo, ConnectMQ publica el estado de conexión en $SYS/broker/connection/{clientId}/state.

De la T a la Z

TLS (Transport Layer Security). Cifrado para la conexión TCP, normalmente en el puerto 8883. Se trata en puertos MQTT explicados.

Topic. Una cadena UTF-8 con niveles separados por /, como plant1/line2/temp, que se usa para enrutar mensajes.

Topic alias (MQTT 5). Un entero pequeño que sustituye a un nombre de topic largo en los siguientes PUBLISH de la misma conexión para ahorrar ancho de banda.

Topic filter (filtro de topic). El patrón que se usa en una suscripción, que puede contener comodines.

Topic level (nivel de topic). Un segmento entre barras. El broker público de pruebas broker.connectmq.com permite hasta 8 niveles.

Unified Namespace (UNS). Una arquitectura en la que todos los datos industriales se publican en un único árbol jerárquico de topics como fuente única de verdad.

User Properties (MQTT 5). Pares clave/valor personalizados en las cabeceras de los paquetes, similares a las cabeceras HTTP.

Transporte WebSocket. MQTT transportado en tramas WebSocket para que los navegadores puedan conectarse, normalmente en el 8083 (ws) o el 8084 (wss) con una ruta como /mqtt.

Wildcard (comodín). + coincide exactamente con un nivel de topic; # coincide con todos los niveles restantes y debe ir al final.

Will Delay Interval (MQTT 5). Segundos que espera el broker antes de publicar el Will, para dar al cliente la oportunidad de reconectarse antes.

Tabla de referencia rápida

Lo que oyes Lo que significa Versión
QoS 1 Entrega al menos una vez con PUBACK 3.1.1 y 5
Retained Último valor guardado por topic 3.1.1 y 5
LWT Mensaje enviado ante una desconexión inesperada 3.1.1 y 5
Clean Start Reutilizar o descartar la sesión al conectar 5
Session expiry Cuánto tiempo conserva el estado el broker 5
$share/ Prefijo de suscripción compartida 5
0x97 Cuota superada 5

Pon el vocabulario en práctica

Las definiciones se fijan cuando las ves en la red. Conecta cualquier cliente a broker.connectmq.com en el puerto 1883 con un client ID único, suscríbete a connectmq/demo/<your-id>/# y prueba tú mismo los mensajes retenidos, un Last Will y publicaciones con QoS 1. Cuando estés listo para autenticación, TLS y un espacio de nombres aislado, un broker MQTT gestionado como ConnectMQ admite tanto MQTT 3.1.1 como 5.0, así que casi todos los términos anteriores corresponden a algo que puedes activar.

Empieza con ConnectMQ

Abre app.connectmq.com, elige el plan Serverless gratuito (sin tarjeta de crédito), crea un broker y copia el usuario, la contraseña y el client ID generados. El cliente MQTT integrado en el navegador de ConnectMQ es la forma más rápida de probar mensajes retenidos, LWT y la expiración de sesión mientras aprendes.

Preguntas frecuentes

¿Cuál es la diferencia entre un topic y un filtro de topic?

Un topic es el nombre exacto en el que se publica un mensaje. Un filtro de topic es el patrón que usa un suscriptor, que puede incluir los comodines + y #.

¿Clean Session es lo mismo que Clean Start?

Están relacionados, pero no son idénticos. Clean Session en MQTT 3.1.1 controla tanto la reutilización como la duración de una sesión, mientras que MQTT 5 lo divide en Clean Start y Session Expiry Interval.

¿Qué términos del glosario solo existen en MQTT 5?

Los reason codes, las user properties, los topic aliases, las suscripciones compartidas, la expiración de mensajes, la expiración de sesión, el response topic, la correlation data y el paquete AUTH son novedades de MQTT 5.

¿Los términos de Sparkplug forman parte del estándar MQTT?

No. Sparkplug B es una especificación independiente de Eclipse que define convenciones sobre MQTT; cualquier broker compatible puede transportarlo.

Artículos relacionados

¿Quién inventó MQTT? La historia, de los oleoductos al IoT

MQTT lo inventaron en 1999 Andy Stanford-Clark, de IBM, y Arlen Nipper, de Arcom, para monitorizar oleoductos vía satélite. Sigue su camino hacia el open source, OASIS, ISO y los brokers MQTT gestionados en la nube de hoy.

8 min de lectura

Por qué tu cliente MQTT se desconecta constantemente (y cómo solucionarlo)

Los bucles de reconexión son uno de los problemas más habituales de MQTT. Conoce las cinco causas típicas, desde los client ID duplicados hasta los timeouts de keep alive y los paquetes demasiado grandes, y sigue un flujo de diagnóstico que localiza la tuya.

9 min de lectura

Todos los artículos →

Tu broker MQTT privado, a unos pocos clics

Crea una cuenta, obtén las credenciales de tu broker y conecta tu primer dispositivo, sin servidores que instalar, parchear ni escalar.