¿Qué es MQTT?
Message Queuing Telemetry Transport (MQTT) es un protocolo de mensajería ligero y popular basado en el modelo de publicación-suscripción, ideal para conectar dispositivos y aplicaciones del Internet de las cosas (IoT) o de comunicación máquina a máquina (M2M) a través de internet. MQTT está diseñado para funcionar de forma eficiente en entornos con poco ancho de banda o bajo consumo energético, por lo que resulta idóneo para aplicaciones con un gran número de clientes remotos. Se utiliza en diversos sectores, como la electrónica de consumo, la automoción, el transporte, la fabricación y la sanidad.
¿Cómo funciona MQTT?
Los dispositivos o aplicaciones conectados mediante MQTT se conocen como clientes. Estos clientes publican mensajes o se suscriben a ellos en un tema específico o en varios temas. Los clientes suscritos reciben todos los mensajes publicados en ese tema, lo que permite un intercambio de datos eficiente y tolerante a fallos entre numerosos dispositivos y servicios.
En el núcleo de una arquitectura MQTT se encuentra un broker. El broker es un servidor encargado de realizar el seguimiento de los clientes (y de los temas a los que están suscritos), procesar los mensajes y dirigirlos a los sistemas correspondientes.
Versiones del protocolo MQTT
Varias versiones clave del protocolo MQTT se han adoptado como estándar. La organización OASIS gestiona las revisiones del protocolo y mantiene una especificación completa de cada versión. Cada revisión de MQTT ha ampliado el conjunto de funcionalidades del protocolo, por lo que es importante saber qué versión de MQTT utilizan sus dispositivos y su bróker.
Tipos y formato de mensajes MQTT
Existen varios tipos de mensajes MQTT, y cada tipo de mensaje tiene un formato específico que deben seguir los dispositivos y las aplicaciones compatibles. Las distintas versiones del protocolo MQTT varían en cuanto al formato y los tipos de mensajes. En cada especificación del protocolo MQTT se puede consultar una lista completa de tipos de mensajes.
Los tres tipos de mensajes más comunes son CONNECT, PUBLISH y SUBSCRIBE. Cada mensaje MQTT contiene una cabecera, una carga útil y marcas opcionales. La longitud de la carga útil puede variar en función del tipo de mensaje. Por ejemplo, en un mensaje PUBLISH, la carga útil contiene los datos que se enviarán a todos los dispositivos suscritos, y la longitud del campo de datos influye directamente en el tamaño del mensaje. De forma predeterminada, los dispositivos MQTT se conectan al puerto 1883 sin protección o al puerto 8883 cuando se ha habilitado el cifrado SSL/TLS.
¿Cuál es un ejemplo práctico de MQTT?
Los coches inteligentes son un excelente ejemplo del uso de MQTT. A medida que los fabricantes de automóviles incorporan nuevas funciones para ofrecer servicios que abarcan desde el diagnóstico remoto y la gestión de flotas hasta el pago de combustible y el entretenimiento, MQTT se ha convertido en un estándar habitual para los coches conectados. A diferencia del protocolo de transferencia de hipertexto (HTTP), MQTT puede mantener una sesión persistente incluso cuando un coche entra y sale de zonas sin cobertura o cuando su conexión cambia de torre de telefonía móvil. MQTT también admite comunicaciones bidireccionales, lo que facilita que el coche y la aplicación en la nube envíen y reciban datos sin tener que esperar a que la otra parte responda.
¿Cuál es la diferencia entre HTTP y MQTT?
HTTP y MQTT son protocolos de red que se utilizan para transmitir datos a través de internet. Veamos sus diferencias.
HTTP
- Protocolo de solicitud-respuesta en el que un cliente envía una solicitud a un servidor y este responde con los datos solicitados.
- Diseñado principalmente para transmitir contenido web (como documentos HTML, imágenes y datos de formularios) entre servidores web y navegadores.
- Ejemplo: Un navegador web (el cliente) envía una solicitud a un servidor web, y el servidor responde con datos en forma de página web.
MQTT
- Protocolo ligero de mensajería de publicación-suscripción en el que los clientes se suscriben a temas y reciben los mensajes que otros clientes publican en dichos temas.
- Diseñado para topologías de red y dispositivos en los que el bajo ancho de banda, la estabilidad de la conexión y el consumo de energía son factores importantes.
- Ejemplo: el escenario del coche inteligente descrito anteriormente.
¿Por qué utilizar MQTT en el Internet de las cosas (IoT)?
Muchas de las características de MQTT lo convierten en el protocolo ideal para el intercambio de mensajes entre dispositivos IoT (las «cosas» del Internet de las cosas) y sistemas backend. A continuación, nos centraremos en cuatro de ellas:
- Ligero: MQTT ocupa poco espacio de código, por lo que funciona bien en dispositivos con una capacidad de procesamiento y una memoria limitadas, como los sensores.
- Fiable – Muchos dispositivos IoT se conectan a través de redes móviles. MQTT es un protocolo adecuado para redes de bajo ancho de banda que requieren mensajes compactos y consumen menos datos. Esto hace que MQTT sea más fiable, incluso cuando el ancho de banda de la red es limitado o inestable.
- Escalable – El modelo de publicación-suscripción se puede ampliar fácilmente a medida que se añaden dispositivos y sistemas de backend. Un ejemplo de un único dispositivo que publica en dos redes de backend independientes (suscriptores) es un contador inteligente residencial que envía datos de consumo tanto a los sistemas de la empresa de suministro para la facturación como a una aplicación orientada al cliente, a la que el propietario puede acceder para controlar el consumo energético de su vivienda.
- Seguro – Los mensajes MQTT se pueden cifrar mediante el protocolo estándar de seguridad de la capa de transporte (TLS) y admiten credenciales que pueden utilizarse para la autenticación. Esto convierte a MQTT en un protocolo de mensajería seguro para aplicaciones de IoT que manejan información confidencial, como las lecturas de monitores de salud procedentes de diversos dispositivos médicos.
¿Qué protocolo de transporte utiliza MQTT?
MQTT utiliza el Protocolo de Control de Transmisión/Protocolo de Internet (TCP/IP) como protocolo de transporte subyacente. Este protocolo de red ampliamente utilizado garantiza que los mensajes se envíen de forma fiable entre los clientes y los brókeres.
Hay varias razones por las que TCP/IP se considera fiable y eficiente:
- Detección y corrección de errores – Se utilizan diversas técnicas para verificar la integridad de los paquetes de datos y mecanismos de retransmisión para recuperar los paquetes perdidos.
- Control de flujo – Los datos se transmiten a velocidades óptimas para cada red, lo que evita retrasos en la transmisión y favorece una comunicación eficiente.
- Multiplexación – Se pueden enviar varios flujos de datos a través de una única conexión, de modo que varias aplicaciones puedan utilizarla al mismo tiempo.
- Compatibilidad – Funciona con una amplia variedad de dispositivos y sistemas operativos.
- Escalabilidad – Diseñado para funcionar en redes grandes y complejas sin comprometer el rendimiento, incluso al gestionar grandes volúmenes de tráfico.
Aunque es la opción más habitual, TCP/IP no es la única alternativa para transportar mensajes MQTT. El protocolo MQTT también funciona sobre el Protocolo de Datagramas de Usuario (UDP) y WebSockets.

