Describa brevemente el concepto del protocolo MQTT.

Sitio web oficial del protocolo MQTT

1. El principio del protocolo MQTT

        El protocolo MQTT es un protocolo de comunicación IoT basado en Publicar | Suscribirse

Reflejos:

        1. Sencillo y fácil de implementar

        2. Admite la calidad del servicio Qos

        3. Tamaño de mensaje pequeño (el protocolo MQTT se basa en el protocolo TCP/IP)

Publicar patrón de suscriptor:

        

         El cliente solo necesita suscribirse a este tema. Cuando otros clientes quieran enviar un mensaje al servidor, el cliente puede recibir el mensaje y realizar una comunicación en tiempo real.

Solicitar modo de respuesta:

        Modo de respuesta de solicitud: el cliente envía una solicitud al servidor y el servidor devuelve una respuesta al cliente después de recibir la solicitud.

 2. Introducción al protocolo MQTT

        (Message Queuing Telemetry Transport, cola de mensajes, protocolo de transmisión de telemetría), es un protocolo de comunicación "ligero" basado en el modelo de publicación/suscripción (publicación/suscripción), que se basa en el protocolo TCP/IP, desarrollado por IBM en el año 1999. liberado. La mayor ventaja de MQTT es que puede proporcionar servicios de mensajes confiables y en tiempo real para dispositivos conectados remotamente con muy poco código y ancho de banda limitado.
        MQTT es un protocolo de transporte de publicación/suscripción de mensajes basado en cliente-servidor El protocolo MQTT es liviano, simple, abierto y fácil de implementar, características que lo hacen ampliamente aplicable. En muchos casos, incluidos entornos restringidos como: comunicación de máquina a máquina (M2M) e Internet de las cosas (loT). Se ha utilizado ampliamente en sensores de comunicación a través de enlaces satelitales, dispositivos médicos de acceso telefónico ocasional, hogares inteligentes y algunos dispositivos miniaturizados (ampliamente utilizados en el servidor de nodos de Internet de las cosas).

 3. Especificación de diseño del protocolo MQTT

  1. Optimizado, sin añadir funciones prescindibles;
  2. El modo Publicación/Suscripción (Pub/Sub) facilita la transferencia de mensajes entre sensores, desacoplando el modo Cliente/Servidor. La ventaja es que no necesita conocer la existencia de la otra parte (ip/puerto) de antemano, y no es necesario correr al mismo tiempo
  3. Permitir a los usuarios crear temas dinámicamente (sin necesidad de crear temas previamente), cero costos de operación y mantenimiento;
  4. Minimizar el volumen de transferencia para mejorar la eficiencia de transferencia
  5. Tenga en cuenta factores como el bajo ancho de banda, la alta latencia y las redes inestables;
  6. Admite retención y control continuo de sesiones (protocolo de latidos)
  7. Comprenda que la potencia informática del cliente puede ser baja
  8. Proporcionar gestión de calidad de servicio (nivel de calidad de servicio: QoS):
  9. El tipo y formato de los datos transmitidos no son necesarios para mantener la flexibilidad (en referencia a los datos comerciales de la capa de aplicación)

 4. Características principales del protocolo MQTT

  1. Protocolo de mensajes abierto, sencillo y fácil de implementar.
  2. Utilice el modo de publicación/suscripción de mensajes para proporcionar programas de aplicación de publicación y desacoplamiento de mensajes de uno a varios.
  3. Transmisión de mensajes que enmascara el contenido de la carga útil (datos de aplicación transportados por el protocolo).
  4. Basado en una conexión de red TCP/IP , proporciona una conexión bidireccional ordenada y sin pérdidas .
    El MQTT convencional se basa en la conexión TCP para el envío de datos, pero también existe una versión basada en UDP llamada MQTT-SN. Dado que estas dos versiones se basan en métodos de conexión diferentes, sus ventajas y desventajas son naturalmente diferentes.
    Debido a los diferentes métodos de conexión, las ventajas y desventajas son naturalmente diferentes.
  5. Soporte de calidad de servicio (QoS) de mensajes, garantía de transmisión confiable; hay tres calidades de servicio de liberación de mensajes:
    QoSO : "como máximo una vez", la liberación de mensajes depende completamente de la red TCP/IP subyacente. Puede producirse pérdida o duplicación de mensajes. Este nivel se puede utilizar en las siguientes situaciones, datos de sensores ambientales, no importa si se pierde un registro leído, porque habrá un segundo envío en un futuro próximo. Este método es principalmente para enviar aplicaciones comunes. Si su dispositivo inteligente no está conectado a Internet cuando se envía el mensaje, el envío no se recibió en el pasado y no se recibirá cuando esté conectado a Internet. de nuevo.
    QoS1 : "Al menos una vez", para garantizar que llegue el mensaje, pero puede producirse duplicación del mensaje.
    QoS2 : "Sólo una vez", para garantizar que el mensaje llegue una vez. Este nivel se puede utilizar en algunos sistemas de facturación con requisitos estrictos. En los sistemas de facturación, los mensajes duplicados o faltantes pueden generar resultados incorrectos. Este servicio de publicación de mensajes de la más alta calidad también se puede utilizar para enviar aplicaciones de mensajería instantánea, para garantizar que los usuarios reciban y solo reciban una vez.
  6. Encabezado fijo de 1 byte, mensaje de latido de 2 bytes, lo que minimiza la sobrecarga de transmisión y el intercambio de protocolos, lo que reduce efectivamente el tráfico de la red.
    Por eso se dice en la introducción que es muy adecuado "en el campo de Internet de las cosas, la comunicación entre sensores y servidores, y la recopilación de información. Es importante saber que la potencia informática y el ancho de banda de los dispositivos integrados son relativamente débiles. Usar este protocolo para transmitir mensajes es perfecto.
  7. Conciencia del estado en línea: utilice las funciones de última voluntad y testamento para notificar a las partes relevantes sobre el mecanismo de interrupción anormal del cliente.
    Última Voluntad: Es el mecanismo de última voluntad, que se utiliza para notificar a otros dispositivos bajo el mismo tema que el dispositivo que envió la última voluntad ha sido desconectado.
    Testamento: Mecanismo de voluntad, similar en función a la Última Voluntad.

Cinco, campo de aplicación MQTT

  • Comunicación IoT M2M, recopilación de big data de IoT
  • Envío de mensajes de Android, envío de mensajes WEB
  • Mensajería instantánea móvil, como Facebook Messenger
  • Hardware inteligente, muebles inteligentes, electrodomésticos inteligentes
  • Comunicación de redes de vehículos, recogida de pilas de estaciones eléctricas.
  • ciudad inteligente, telemedicina, educación a distancia
  • Mercados de la industria eléctrica, petrolera y energética

6. Implementación del protocolo MQTT 

        La realización del protocolo MQTT requiere la finalización de la comunicación entre el cliente y el servidor.Durante el proceso de comunicación, hay tres identidades en el protocolo MQTT: editor, corredor (servidor) y suscriptor. Entre ellos, el editor y el suscriptor del mensaje son clientes, el agente del mensaje es el servidor y el editor del mensaje puede ser el suscriptor al mismo tiempo.

         El mensaje transmitido por MQTT se divide en dos partes: tema (Tema) y carga útil (carga útil):
(1) Tema: Puede entenderse como el tipo de mensaje. Después de que el suscriptor se suscriba (Suscribirse), recibirá el contenido del mensaje. (carga útil) del tema)
(2) carga útil: puede entenderse como el contenido del mensaje, que se refiere al contenido específico que utilizará el suscriptor

Mensajes de aplicación y transporte de red

        MQTT construirá la transmisión de red subyacente: establecerá una conexión de cliente a servidor, proporcionando una transmisión bidireccional ordenada, sin pérdidas y basada en flujo de bytes entre los dos.
Cuando los datos de la aplicación se envían a través de la red MQTT, MQTT asociará la calidad de servicio (QoS) relacionada con el nombre del tema (Tema)

Cliente MQTT

  Una aplicación o dispositivo que utiliza el protocolo MQTT y que siempre establece una conexión de red con un servidor. Los clientes pueden:

  • (1) Publicar información a la que otros clientes puedan suscribirse
  • (2) Suscríbete a mensajes publicados por otros clientes.
  • (3) Mensajes para darse de baja o eliminar la aplicación
  • (4) Desconectarse del servidor

Lado del servidor MQTT

El servidor MQTT se denomina "broker de mensajes" (Broker), que puede ser una aplicación o un dispositivo. Se encuentra ubicado entre el publicador del mensaje y el suscriptor. Puede:

  • (1) Aceptar conexiones de red de los clientes;
  • (2) Aceptar la información de la solicitud publicada por los clientes.
  • (3) Manejar las solicitudes de suscripción y baja de los clientes.
  • (4) Reenviar mensajes de aplicación a clientes suscritos

Pub/Sub, Temas, Sesiones

        MQTT se basa en el modo Publicación/Suscripción para la comunicación y el intercambio de datos, que es fundamentalmente diferente del modo  HTTP Solicitud .Respuesta
        / para suscribirse a un tema (Tema) . Después de suscribirse exitosamente ,         los suscriptoresel servidor de mensajes reenviará los mensajes bajo el tema a todos  aquellos sin comodines se convierten en nombres de tema.

        Los editores solo pueden publicar mensajes con nombres de temas y los suscriptores pueden utilizar como comodines varios nombres de temas suscribiéndose a filtros de temas.

Sesión (Sesión)
        Después de que cada cliente establece una conexión con el servidor, es una sesión y hay una interacción con estado entre el cliente y el servidor. Las sesiones existen a través de una red y también pueden abarcar múltiples conexiones de red consecutivas entre un cliente y un servidor.

Métodos en el protocolo MQTT.

        Algunos métodos (también llamados acciones) se definen en el protocolo MQTT para representar operaciones en ciertos recursos. Este recurso puede representar datos preexistentes o datos generados dinámicamente, según la implementación del servidor. Normalmente, un recurso hace referencia a un archivo o salida en un servidor. Los principales métodos son:

  • (1) CONECTAR: El cliente se conecta al servidor
  • (2) CONNACK: Confirmación de conexión
  • (3) PUBLICAR: Publicar un mensaje
  • (4) PUBACK: Confirmación de publicación de mensaje
  • (5) PUBREC: El mensaje publicado ha sido recibido.
  • (6) PUBREL: El mensaje publicado ha sido dado a conocer.
  • (7) PUBCOMP: Publicación completada
  • (8) SUSCRIBIRSE: solicitud de suscripción
  • (9) SUBACK: Confirmación de suscripción
  • (10) BAJA: Darse de baja
  • (11) BAJA: confirmación de baja
  • (12) PINGREQ: El cliente envía un latido
  • (13) PINGRESP: respuesta de latido del servidor
  • (14) DESCONECTAR: Desconectar
  • (15) AUTH: autenticación

Estructura del paquete del protocolo MQTT

        En el protocolo MQTT, un paquete MQTT consta de tres partes: encabezado fijo (encabezado fijo), encabezado variable (encabezado variable) y cuerpo del mensaje (carga útil).
La estructura del paquete MQTT es la siguiente:

 (1) Cabecera fija. Existe en todos los paquetes de datos MQTT e indica el tipo de paquete de datos y el identificador de clase de agrupación del paquete de datos, como conexión, publicación, suscripción, latido, etc. Entre ellos, el encabezado fijo es necesario y todos los tipos de protocolos MQTT deben contener encabezados fijos.
(2) Encabezado variable (encabezado variable). Existe en algunos paquetes de datos MQTT y el tipo de paquete de datos determina si existe el encabezado variable y su contenido específico. El encabezado de la variable no significa opcional, pero significa que esta parte existe en algunos tipos de protocolos y no existe en algunos protocolos.
(3) Cuerpo del mensaje (carga útil). Existe en algunos paquetes MQTT, lo que indica el contenido específico recibido por el cliente. Al igual que los encabezados de variables, hay contenido de mensaje en algunos tipos de protocolo y ningún contenido de mensaje en algunos tipos de protocolo.

Encabezado fijo

El encabezado fijo existe en todos los paquetes MQTT y
contiene dos partes:
el primer byte (byte 1),
la longitud del mensaje restante (a partir del segundo byte, la longitud es de 1 a 4 bytes) y el
resto. length es el número de bytes de longitud del contenido que quedan en el paquete actual, incluidos los encabezados variables y los datos de la carga útil). La longitud restante no incluye los bytes utilizados para codificar la longitud restante.
La longitud restante se codifica mediante una estructura de longitud variable que utiliza un solo byte para representar los valores del 0 al 127. Los valores mayores a 127 se manejan de la siguiente manera. Los 7 bits inferiores de cada byte se utilizan para codificar datos y el bit más alto se utiliza para indicar si hay bytes posteriores. Entonces cada byte puede codificar 128 valores, más un bit de identificación. La longitud restante se puede representar con hasta cuatro bytes.

Tipo de paquete de datos
Posición: 7-4 bits en el primer byte (Byte 1) son (Bit [7-4]), que identifica el valor sin signo de 4 bits

         El tipo de mensaje está determinado por los 4 bits superiores del primer byte. Los 4 bits pueden determinar 16 tipos, de los cuales 0000 y 1111 son campos reservados. Los tipos de mensajes MQTT son los siguientes:

      

 Posición de la bandera
        : 0-3 bits (Bit[3-0]) en el primer byte. Significa que el bit de byte Bit[3-0] se utiliza como identificación del mensaje.
        Los 4 bits inferiores (bit3-bit0) del primer byte se utilizan para indicar el campo de control de ciertos tipos de mensajes; de hecho, solo unos pocos tipos de mensajes tienen bits de control, como se muestra en la siguiente figura:

 (1): Entre ellos, Bit[3] es el campo dup, si el valor es 1 indica que el paquete de datos es un mensaje repetido, en caso contrario el paquete de datos es el primer mensaje publicado (2): Bit[2] -1
] Para el campo QoS:
si tanto el Bit 1 como el Bit 2 son 0, significa QoS 0: como máximo una vez;
si el Bit 1 es 1, significa QoS 1: al menos una vez;
si el Bit 2 es 1, significa QoS 2: solo una vez
; si tanto el bit 1 como el bit 2 están configurados en 1, entonces el cliente o servidor considera que se trata de un mensaje ilegal y cerrará la conexión actual.
QoS de mensajes MQTT
La calidad de servicio (QoS) de los mensajes de publicación MQTT no es de un extremo a otro, sino entre el cliente y el servidor. El nivel de QoS del suscriptor que recibe el mensaje MQTT depende en última instancia de la QoS del mensaje publicado y de la QoS de la suscripción del tema. QoS
: QoS se refiere a la calidad del servicio entre el cliente y el servidor.

 Encabezado variable

        Los encabezados variables significan encabezados de mensajes variables. Algunos tipos de mensajes contienen encabezados variables y otros no. El encabezado variable se encuentra entre el encabezado fijo y el contenido del mensaje, y su contenido varía según el tipo de mensaje.

 Versión de protocolo
Un valor sin signo de 1 bit que representa el nivel de versión del cliente. Versión 3.1.1
Sesión MQTT
Cuando el cliente MQTT inicia una solicitud CONNECT al servidor, la sesión se puede configurar a través del indicador 'Sesión limpia'.
"Sesión limpia" se establece en 0, lo que significa crear una sesión persistente. Cuando el cliente se desconecta, la sesión seguirá manteniendo y guardando mensajes sin conexión hasta que la sesión expire y cierre la sesión.
"Sesión limpia" se establece en 1, lo que significa crear una nueva sesión temporal. Cuando el cliente se desconecta, la sesión se destruirá automáticamente.
Will Flag /Will QoS/Will Retain Will Flag: Will QoS: Calidad del mensaje de las últimas palabras
Will Retener: Últimas palabras para mantener el estado Temporizador Keep Alive (duración del latido)


Protocolo de latidos:

 Intervalo de tiempo máximo del temporizador Keep Alive

 Cuerpo del mensaje (carga útil)

Algunos tipos de mensajes contienen carga útil, y carga útil significa portador de mensajes.
Por ejemplo, carga útil en PUBLICAR se refiere al contenido del mensaje (contenido del mensaje publicado por una aplicación). La carga útil de CONNECT contiene información como el identificador del cliente, el tema del testamento, el mensaje del testamento, el nombre de usuario, la contraseña, etc.
Los tipos de mensajes que contienen la carga útil son los siguientes:

        La carga útil es el contenido del mensaje y solo aparece en ciertos tipos de mensajes. Su contenido y formato también varían según el tipo de mensaje. Específicamente, diferentes
tipos de mensajes contienen diferentes cargas útiles. Por favor consulte la documentación oficial.

Supongo que te gusta

Origin blog.csdn.net/frelly01/article/details/128109488
Recomendado
Clasificación