MQTT (Message Queuing Telemetry Transport) es un protocolo de mensajería ligero basado en el método de publicación/suscripción según el estándar ISO. MQTT normalmente utiliza TCP/IP (Protocolo de control de transmisión/Protocolo de Internet) como transporte, pero también se pueden utilizar otros transportes bidireccionales. MQTT se usa comúnmente para la comunicación entre dispositivos y aplicaciones como Internet de las cosas y hogares inteligentes. En el campo integrado, MQTT ya ocupa un papel insustituible, porque la mayoría de los dispositivos integrados requieren dicho protocolo para el intercambio de datos.
Lectura rápida:
Características principales del protocolo MQTT
01 Publicación de información de uno a muchos
02 Diferentes protocolos subyacentes
Dos versiones principales de MQTT
Cuáles son los beneficios del protocolo MQTT para el Internet de las cosas?
(1) Protocolo de mensajes abierto, simple y fácil de implementar.
(2) Modelo de publicación y suscripción, publicación de mensajes de uno a muchos.
(3) Basado en una conexión de red TCP/IP, proporciona una conexión ordenada, sin pérdidas y bidireccional.
(4) El encabezado fijo de 1 byte y el mensaje de latido de 2 bytes minimizan la sobrecarga de transmisión y el intercambio de protocolos, lo que reduce efectivamente el tráfico de la red.
(5) La calidad del servicio del mensaje admite una garantía de transmisión confiable.
01 Publicación de información de uno a muchos
En primer lugar, es un protocolo basado en suscripción y publicación, por lo que puede publicar mensajes de uno a muchos. Hay muchos escenarios de aplicación para esta función. La transmisión limitada permite al servidor controlar de manera flexible el dispositivo que desea controlar, y el servidor puede Proporcionar múltiples temas a los que se pueda suscribir es extremadamente crítico.
Porque para el servidor, recibir y procesar datos es la tarea principal, pero a medida que aumenta el número de dispositivos y líneas de función de dispositivos, la lógica de procesamiento del servidor crecerá exponencialmente. Los mismos datos recibidos pueden ser información completamente diferente cargada por tipos de dispositivos completamente diferentes. Por lo tanto, cuando se pueden proporcionar múltiples temas de suscripción y temas de publicación, se puede distinguir esta diferencia lógica, lo que trae beneficios a los desarrolladores y supone una gran comodidad.
02Diferentes protocolos subyacentes
La segunda característica de MQTT es en realidad que está basado en TCP/IP. Está destinado a ser un protocolo en la capa superior. La mayoría de las personas con las que entramos en contacto ahora en realidad están desarrollados en base al protocolo TCP, pero en realidad Hay una versión basada en UDP, llamada MQTT-SN, pero todos saben que TCP está orientado a la conexión, mientras que UDP no está orientado a la conexión, por lo que, según los diferentes tipos de protocolos subyacentes, las características mostradas por MQTT son definitivamente diferentes.
Para el protocolo MQTT de uso común, tiene una característica muy importante para garantizar la confiabilidad del mensaje: QoS (calidad de servicio). La QoS se puede dividir en tres niveles: QoS 0, QoS 1 y QoS 2.
QoS 0 es en realidad equivalente a MQTT sin protección de información adicional. Debido a que se basa en el protocolo TCP, la confiabilidad de sus mensajes depende completamente del protocolo TCP. QoS 1 significa que promete enviarlo al destinatario al menos una vez, lo que es protección de la información en la capa MQTT, no solo confiando en la capa del protocolo TCP. Finalmente, QoS 2 garantiza que el mensaje solo se entregue al destino una vez.
Porque para QoS 1, el mensaje puede enviarse varias veces porque no hay retroalimentación, y el receptor también puede recibir el mensaje varias veces. Por esta razón, el mensaje transmitido por QoS 2 tiene una ID única y el mensaje con la única El ID del mensaje se almacena dos veces, primero desde el remitente y luego desde el receptor. El nivel de QoS 2 tiene la sobrecarga más alta en la red porque se requieren dos flujos entre el remitente y el receptor.
MQTT tiene dos versiones principales, v3 y v5. Los principios de estas dos versiones son básicamente los mismos, pero existen algunas diferencias clave entre ellas, que se presentarán a continuación.
Los temas son el concepto central de MQTT y se utilizan para identificar el contenido y la intención de los mensajes. En MQTT v3, un tema es simplemente una cadena simple estructurada como una serie de palabras separadas por barras. Por ejemplo, un tema de MQTT v3 podría ser sensores/temperatura/habitación1, donde los sensores son el tema de nivel superior, la temperatura es su subtema y la sala1 es un dispositivo específico bajo el subtema.
Sin embargo, en MQTT v5, la estructura de temas se amplió y se agregaron algunas características más avanzadas. Específicamente, MQTT v5 introduce un nuevo concepto llamado alias de tema, que permite a los clientes asignar cadenas de tema a ID de tema predefinidos, reduciendo así el tráfico de red y el tamaño del mensaje. Esto permite a los clientes enviar solo el ID del tema al enviar un mensaje, en lugar de tener que enviar la cadena de tema completa cada vez. Esto es útil para dispositivos y entornos de IoT con ancho de banda de red limitado.
MQTT v5 introduce un nuevo tipo de suscripción llamado suscripción compartida. Como se muestra en la figura siguiente, las suscripciones compartidas permiten que varios clientes compartan una suscripción y la distribuyan de acuerdo con ciertas reglas. Este tipo de suscripción es útil para suscribirse a temas de alta carga porque equilibra las solicitudes de suscripción y reduce la presión de carga sobre clientes individuales.
Además, MQTT v5 agrega el concepto de opciones de suscripción. Las opciones de suscripción se pueden especificar, como el nivel de QoS, Retener como publicación, Retener manejo, ciclo de vida de mensajes, etc., para controlar el comportamiento de la suscripción con mayor precisión.
Los mensajes de testamento son la capacidad de MQTT para enviar testamentos a terceros para dispositivos que pueden experimentar desconexiones inesperadas.
Will Properties es un nuevo campo en MQTT v5. Los diferentes tipos de mensajes tienen diferentes propiedades. Por ejemplo, los mensajes CONNECT tienen atributos como la longitud máxima del mensaje y el intervalo de vencimiento de la sesión, y los mensajes SUBSCRIBE tienen atributos como identificadores de suscripción. Además, en comparación con MQTT v3, el contenido de los mensajes will se ha vuelto más flexible y puede contener cualquier tema y contenido de mensaje.
MQTT v5 admite un mecanismo de manejo de errores más detallado, que puede localizar y resolver problemas a través de códigos de error y causas de error. Al mismo tiempo, MQTT v5 también introduce un nuevo mensaje de control: mensaje de desconexión, que puede ayudar a los clientes y servidores a manejar mejor situaciones de error.
MQTT v5 introduce algunos mecanismos nuevos para el control de flujo basados en la versión v3, con el fin de controlar mejor la transmisión y el procesamiento de mensajes y evitar la congestión de la red y la alta carga causada por una velocidad de transmisión de mensajes demasiado rápida.
Tamaño máximo de paquete: MQTT v5 permite que el cliente y el servidor negocien el tamaño máximo de paquete durante el protocolo de enlace. Como se muestra en la figura siguiente, este límite de tamaño máximo de mensaje se puede utilizar para controlar el tamaño máximo de mensaje transmitido entre el cliente y el servidor para evitar la congestión de la red y una carga alta debido a la transmisión de mensajes excesivamente grandes.
Cola de mensajes: cuando el mensaje enviado por el servidor excede la velocidad de procesamiento del cliente, el servidor puede almacenar el mensaje en la cola de mensajes y esperar a que el cliente lo procese. MQTT v5 define el tamaño de la cola y el tiempo de espera de la cola de mensajes para controlar el tamaño y el ciclo de vida de la cola de mensajes.
En comparación con MQTT v3, MQTT v5 puede manejar mejor la transmisión de datos a gran escala y mejorar la eficiencia y el rendimiento de la comunicación. Por ejemplo, MQTT v5 admite funciones como publicación por lotes (Batch Publish) y captación previa (Message Prefetch), que pueden reducir en gran medida la sobrecarga de la comunicación MQTT.
En resumen, MQTT v5 tiene más funciones nuevas y seguridad que MQTT v3. Sin embargo, cabe señalar que MQTT v5 agrega muchas funciones y conceptos nuevos en comparación con MQTT v3. Por lo tanto, al utilizar MQTT v5, debe tener un conocimiento profundo de las nuevas características del protocolo MQTT para poder utilizarlo mejor. este nuevo protocolo Cree aplicaciones confiables.
Cuáles son los beneficios del protocolo MQTT para el Internet de las cosas?
Poner en funcionamiento MQTT es rápido y fácil, con millones de aplicaciones cliente listas para usar y casi la misma cantidad de brokers disponibles.
Muchos dispositivos de IoT dependen de conexiones de radio para transmitir y recopilar datos, lo que significa que las conexiones no siempre son confiables. MQTT puede permitir que los mensajes se almacenen en el intermediario hasta que el dispositivo esté listo para recibirlos. Gracias a QoS (Calidad de Servicio), MQTT es capaz de poner en cola los mensajes, asegurándose de que lleguen a su destino y, si es necesario, de que lleguen solo una vez.
Quizás sea más exacto decir que MQTT es omnidireccional. Cualquier dispositivo, cosa o aplicación puede publicar o suscribirse a cualquier tema manejado por el agente. Esto significa que no hay límites sobre lo que puedes hablar o escuchar en la web.
Transmitir un mensaje a un millón de dispositivos es tan fácil como enviarlo a cien dispositivos, y para que todo lo que está en la red lo escuche, basta con publicarlo en un tema al que estén suscritos todos los dispositivos.
En última instancia, el Internet de las cosas (IoT) tiene una función: transferir datos entre dispositivos en una red. Si bien estas redes pueden estar ubicadas en cualquier parte del mundo, cada red enfrenta muchas situaciones que pueden causar fallas en su transmisión de datos. MQTT tiene innumerables funciones integradas para ayudar a aliviar algunos de estos problemas, lo que hace que los usuarios estén menos preocupados.