MQTT Cómo iniciar la guía proporciona una explicación detallada sobreMQTTfor MQTT principiantes
Andy Stanford Clark (IBM) y Arlen Nipper piensan en diseñar el protocolo MQTT, que se había hecho realidad en 1999. El propósito de marcar este MQTT es para cerrar a enlace sensores en sistemas de telemetría de oleoductos sobre satélite. Utiliza una subscripción publica modelo que proporciona una conexión de red estable y fiable basada en TCP/IP, un peso ligero cabecera para reducir el coste de transmisión y el soporte de mensajes confiable. Versión 3.1.1 del MQTT liberado comoOEAIS estándaren octubre de 2014. La actualización de la versión 5 de MQTT añade varios nuevo características y se libera en marzo 2019. satisface la necesidad de la industria y prepara para el cambios en el desarrollo de la industria en el futuro. MQTT es declarado como ISO y OEAIS estándar en 2010. MQTT 5.0 se convirtió en el nuevo estándar OEAIS en 2019.
El protocolo MQTT fue inventado en 1999, y su crecimiento comenzó muchos años más tarde. Cinco años más tarde, MQTT 3.1.1 fue liberado con un estándar de la OEAIS e ISO. Después 2010, el la versión cambió de 3.1 a 3.1.1 entonces la norma OEAIS sancionó la nuevaMQTT5 Especificación. Luego en marzo de 2019, MQTT5 tuvo lugar como el nuevo aprobado Estándar OEAIS e ISO.
Desde 2013, el término “MQTT” tiene poco significado.MQTT v3.1fue presentado al comité de especificación de la OEA en 2013 con una se puede aceptar la carta que garantiza que sólo se introduzcan cambios menores en la definición. On 29 de octubre, 2014, OEAIS anunció la versión 3.1.1 después de asumir el mantenimiento del estándar de IBM.
MQTT 5es el heredero de MQTT 3.1.1. Su primera publicación pública fue en enero de 2018, y su La publicación oficial fue en 2019, sancionada con estándares de la OEAIS e ISO.
La guía de inicio MQTT describe el heredero de 3.1.1 MQTT5. La respuesta es demasiado simple,MQTT protocolodefine un encabezado fijo en el CONNECT paquete que contiene un único valor byte para estas versiones de protocolo. MQTT 3.1.1 tiene valor “3” y 3.1.1 tiene el valor “4”. Por lo tanto, el heredero de 3.1.1 (MQTT5) tiene el valor “5”. Este número “5” es tanto para el nombre del protocolo como para el valor. MQTT5 presenta algunos cambios y mejoras en comparación con MQTT3.1.1.
A continuación, se explicó que el MQTT5 establecería un panorama claro el objetivos funcionales del protocolo de mensajería MQTT.
MQTT fue diseñado con la intención de crear un protocolo que permite conectar los oleoductos a través de conexiones satélites con batería mínima pérdida y uso de ancho de banda. Se establecieron los siguientes objetivos, que se encuentran actualmente en el núcleo del protocolo MQTT:
Este modelo de inicio de MQTT simple proporciona mejoras para el propósito de satisfacer las necesidades de los clientes/usuarios existentes de MQTT5.
Hay cinco diseños ociosos en la especificación MQTT 5. Ellos son,
MQTT guía de inicio da una visión clara de PUBLISH paquete y el papel editorial. El proceso de envío de mensajes se llama Publicación. A cliente no puede publicar un mensaje directamente a otro cliente. Pero el cliente MQTT puede publicar mensajes al corredor. Cada mensaje debe contener un tema. Un cliente MQTT sólo puede publicar mensajes a un solo tema y no pueden publicar a un grupo de temas. El corredor puede filtro el mensaje bajo un tema y enviar el mensaje a los clientes conectados que son Todos se suscribió a ese tema. Un paquete PUBLISH se envía de un cliente a un servidor o vice versa para transportar un Mensaje de Aplicación. Cada paquete PUBLISH tiene una carga útil que contiene el datos (mensajes) transmitidos en formato byte. El remitente decide si quiere para enviar datos binarios, datos de texto, o incluso el formato necesario por el cliente.
El paquete SUBSCRIBE es enviado desde el cliente MQTT alMQTT server, que se utiliza para crear más de una suscripción. Vamos a tener la aclaración sobre el Paquete y papel de suscripción. Para recibir mensajes sobre un tema particular, el El cliente debe suscribirse a ese tema. El servidor envía paquetes Publish al cliente para enviar publicado mensajes de utilidad a temas compatibles con estas suscripciones. The SUBSCRIBE paquete también especifica el máximo QoS con el que el Servidor puede enviar Mensajes de Aplicación a el Cliente. Para enviar mensajes del corredor al Cliente, el corredor utiliza el mismo editorial método que es utilizado por el editor. Suscríbete a múltiples temas que se permiten usando dos caracteres comodines (es decir, + y #). Todas las suscripciones son aceptadas por el corredor usando un mensaje de reconocimiento de suscripción. AnMQTT clientsólo puede suscribirse a temas y no suscribirse a un cliente en particular.
La contradicción del mensaje SUBSCRIBE es la Mensaje insustituible. An El paquete UNSUBSCRIBE es enviado por el Cliente al Servidor, para darse de baja de temas. It eliminaciones las suscripciones existentes en el corredor. Estos mensajes de suscripción también tienen una lista de Temas del que el cliente MQTT quiere describir. Para confirmar Unsubscribe, el corredor envía un UNSUBSCRIBE reconocer el mensaje al cliente MQTT. Ellos pueden asumir que suscripciones se eliminan después de que el cliente MQTT recibe el mensaje de reconocimiento de el bróker.
Generalmente, cualquier dispositivo IoT que hable MQTT sobre un TCP/IP pila Ser llamado cliente MQTT. Tanto los editores como los suscriptores son considerados MQTT clientes. El editor y suscriptor indican si el cliente está publicando mensajes o si el cliente se ha suscrito para recibir los mensajes. El que publica mensajes son llamados editores y el que se suscribe para recibir la información es llamado suscriptores.
El modelo publicado-subscribe es diferente del modelo cliente-servidor. En el modelo PUB/SUB, más de un editor publica mensajes a un suscriptor, o más que un suscriptor recibe mensajes de un editor simultáneamente. En esto modelo MQTT los clientes no pueden contactarse directamente. Pero, se comunican con la ayuda de el MQTT Broker. Debido a que la aplicación cliente del Protocolo MQTT es muy recto y directo eficiente. MQTT cliente es cualquier dispositivo que se conecta a un MQTT Broker sobre una red Conexión.
ElMQTT Brokeractúa como intermediario entre los clientes MQTT. Es el núcleo de cualquiera publicar o suscribir protocolo. El MQTT Broker es software propietario que funciona en un ordenador (en la nube) y puede ser autogenerado o acogido por un tercero. MQTT Broker ayuda Clientes de MQTT para compartir, gestionar datos y controlar dispositivos. El Broker tiene el responsabilidad de recibir todos los mensajes, filtrando los mensajes bajo temas, y entonces distribuyendo estos mensajes a los clientes suscritos. MQTT Broker no puede suscribirse to an Cliente MQTT. Pero los clientes de MQTT (subscriptores) pueden suscribirse al otro cliente (publishers). El Broker no guarda ningún mensaje, mientras retenía mensajes, persistente conexiones y niveles de QoS pueden resultar en que los mensajes se almacenan temporalmente en los bróker.
Una vez que el mensaje publicado está enviando a los clientes de MQTT, entonces Lo es Retirada del corredor. Si ningún cliente se ha suscrito al tema particular o el clientes suscritos no están conectados actualmente, entonces el mensaje es eliminado del bróker. Pero el corredor puede almacenar datos en forma de mensajes retenidos. Esto permitirá nuevo suscriptores para obtener el último valor directamente. Además, cuando se llaman dispositivos “Persistente sesiones”, el corredor supervisa toda la información de las sesiones y elimina vulnerables e inseguras conexiones cliente. ElMQTT Brokerse utiliza para reducir tensión de red sin comprometiendo la seguridad. Un corredor de copia de seguridad se puede configurar para compartir una carga de clientes en múltiples servidores en el sitio, la nube o en una combinación de ambos.
La conexión MQTT se basa en TCP/IP. Tanto el cliente como el broker necesita tener una pila TCP/IP. La conexión MQTT siempre está entre un cliente y el bróker. Los clientes MQTT nunca se conectan directamente. Clientes de MQTT suscriptores) se utilizan principalmente para establecer una conexión entre dispositivos restringidos. Después de un Red La conexión se establece entre los clientes de MQTT, el primer paquete enviado desde el cliente el servidor debe ser un paquete CONNECT. Para establecer una conexión primero, el cliente envía un Mensaje CONNECT al corredor. Cuando el corredor recibe el mensaje de conexión, entonces él responde con un mensaje CONNACK. Si hay una enorme brecha de tiempo entre abrir una red y enviar el mensaje del paquete de control CONNECT, entonces el corredor cerrará el Conexión. Una vez establecida la conexión, el corredor lo mantiene abierto hasta que el cliente envía el Desconectar el comando o las interrupciones de conexión de red de algunos problemas de red. El MQTT # guía de inicio da los detalles de la conexión MQTT sobre el cliente y el bróker.
MQTT ofrece mensajes simples según elNiveles de QoS. El MQTT broker puede especificar los niveles de QoS para cada conexión cliente-Server. Sólo se utiliza entre MQTT envía y receptores. Los niveles de QoS se utilizan para identificar si el mensaje es recibido por el servidor del Cliente o no. El nivel QoS se utiliza cuando un cliente envía un solicitud de suscripción a un tema particular. Si un cliente se suscribe a múltiples temas, entonces pueden utilizar diferentes niveles de QoS para diferentes temas basados en la necesidad del MQTT Clientes.
La guía de inicio del MQTT hace una vista clara de la QoS. Hay tres tipos de niveles en QoS. Ellos son,
El primer nivel en QoS es 0. A este nivel, el mensaje es enviado a el receptor o una vez o nunca. No hay garantía de respuesta del receptor to the cliente. Si el remitente envía un mensaje con QoS 0, entonces el destinatario puede o no recibir el mensaje. El cliente no sabe si el mensaje es enviado al receptor o No. Este nivel también se llama “Fire and Olvida”. A este nivel, no hay garantía de entrega y no hay reconocimiento por el corredor
El segundo nivel en QoS es 1. A este nivel, el mensaje debe Ser enviado a el receptor al menos una vez. Sin embargo, el mensaje se entrega al receptor múltiples veces hasta que el reconocimiento sea recibido del corredor. Si el remitente envía un mensaje con QoS 1, entonces el destinatario suscrito debe recibir el mensaje bajo temas y luego respuestas un paquete PUBACK. A este nivel, enviar está garantizado, pero el mensaje puede llegar al broker más de una vez.
El tercer nivel en QoS es 2, que es el nivel más alto servicio dentro MQTT. A este nivel, el mensaje es recibido sólo una vez por sus destinatarios. Es el más seguro Nivel QoS. Entre el remitente y el receptor, hay una secuencia de cuatro mensajes. Aquí, el mensaje ha sido enviado al receptor desde el remitente y el receptor ha sido enviado reconocimiento por ese mensaje. En esto, el mensaje fue enviado exactamente una vez. Entonces, la mayoría de los las aplicaciones utilizan este nivel de calidad de servicio.
APeríodo de sesiones persistentese refiere a una conexión continua entre un cliente y el corredor de mensajes MQTT. Cada cliente MQTT debe almacenar una sesión persistente o limpia período de sesiones. Para ejemplo, cuando elClientes MQTTestán conectados al corredor, cada cliente que es publicaciones y publicaciones suscribirse al tema debe contener el período de sesiones persistente o la sesión limpia. El persistente sesión se utiliza mientras que el Internet no es confiable para el cliente. Período de sesiones persistente puede ser creado enviando el mensaje Connect y estableciendo la bandera de sesión limpia a 0. Si cliente no tiene ninguna sesión para enviar el mensaje CONNECT, una nueva sesión Persistente será creado. Si el cliente ya tiene una sesión, el cliente reiniciará la sesión que ya existe durante la conexión de red. Si el cliente suscrito de repente se desconecta el broker, no recibirá ninguno de los mensajes publicados sobre ese tema del editor.
Para superar este problema, se utiliza este período de sesiones persistente o una sesión limpia. MQTT Broker soportes sesión limpia 0(falso) y 1(verdad) para sesiones persistentes. Primero, el cliente MQTT debería conectarse al bróker, entonces puede solicitar al bróker para esta sesión persistente. El broker almacena toda la información del cliente. Si los clientes necesitan suscribirse a los temas, ellos debería utilizar el nivel QoS de 1 o 2, y luego el corredor publicará los mensajes no entregados. Después la desconexión, el cliente vuelve a conectar, entonces el corredor enviará todo sin entrega mensajes, que son todos almacenados por el corredor en una cola de mensaje al cliente. Cuando el Mensaje broker detecta que un cliente está desconectado del tiempo de conexión, el persistente período de sesiones El temporizador comienza. Cuando el cliente envía un mensaje CONNECT, establece el Bandera CleanSession 1. Si la sesión persistente expira antes de la reconexión, entonces los mensajes almacenados en el Los corredores son descartados.
Los mensajes retenidos es una característica importante de MQTT que permite Manténganse. el último mensaje clave sobre un tema para futuros clientes / suscriptores. El editor puede preguntar broker para mantener el último mensaje sobre el tema estableciendo la bandera de mensaje retenida. Puede haber sólo un mensaje retenido por tema a la vez. El mensaje retenido se almacena en el MQTT cliente (servidor). Elmensajes retenidos MQTTpermitir la publicación de clientes MQTT para indicar Mensaje almacenado para la entrega posterior a la suscripción de clientes. Retener mensajes puede ser recuperado por configurar el bit MQTT Retain. Un cliente puede publicar o suscribirse con cualquier nivel de QoS en virtud de la resolución tema específico, pero el mensaje retenido sólo es aplicable si la bandera retenida es establecido verdadero en la especificación MQTT 3.1.1. El uso más común de los mensajes retenidos es identificar últimos mensajes conocidos a nuevos suscriptores ..
Los mensajes retenidos se envían a nuevos suscriptores en un determinado tema, entonces el broker procesa la solicitud y publica los mensajes a los clientes configurados. Si el servidor necesita aclarar la bandera de retención antes de la reenvío, entonces el cliente lo indicará por en sí mismo. A borrar un mensaje retenido, el cliente envía un mensaje retenido con una carga de pago vacía a un tópico específico entonces el servidor elimina el mensaje retenido bajo ese tema. Entonces el Mensaje El intervalo de expiración se establece en el Mensaje Retenido. Después del intervalo de caducidad tiempo, el Se eliminará el mensaje retenido. La característica del mensaje retenido es útil para mantener el último mensaje del cliente, y especialmente útil cuando el estado está constantemente sin cambios. Servicio la calidad no afecta los mensajes retenidos. La función del mensaje retenido se combina con LWT (última) función testamento y testamento) en MQTT.
Last Will es un mensaje almacenado en un MQTT Broker específico para específico clientes. ElMensaje de última voluntades un mensaje MQTT normal que tiene lo siguiente campos tema, mensajes, QoS, y mantener la bandera. Si hay un cierre inesperado, entonces El último Will y testamento se utilizan para notificar a los usuarios o clientes de MQTT. El cliente MQTT es usados publicar el mensaje. Las técnicas fundamentales del LWT son si la conexión descansos, entonces el uso del mensaje de Last Will ayudará a notificar a los suscriptores interesados que ellos han perdido la conexión. Por ejemplo, en MQTT3.1.1 cuando el corredor detecta el desconexión, envía el mensaje de última voluntad a todos los suscriptores de ese específico Tema. Hacer el uso correcto de LWT en MQTT es, evita un montón de monitoreo no deseado mensajes
Desde 2013, el término “MQTT” tiene poco significado.MQTT v3.1fue presentado al comité de especificación de la OEA en 2013 con una se puede aceptar la carta que garantiza que sólo se introduzcan cambios menores en la definición. On 29 de octubre, 2014, OEAIS anunció la versión 3.1.1 después de asumir el mantenimiento del estándar desde IBM. Will Delay proporciona la capacidad de retrasar el envío de un mensaje de voluntad específico después el La conexión se interrumpe. Después de la desconexión, si el Will Delay intervalo desaparecido, o la sesión termina, entonces el mensaje de la Voluntad debe ser publicado. La red la conexión estará abierta para el cliente MQTT antes del intervalo de demora de Will Se desvaneció. El Mensaje de Will no debe ser publicado, cuando el intervalo de Will Delay es más largo que el período de sesiones de expiración. La Voluntad publica obras como se esperaba cuando el Will Delay intervalo es más corto que el intervalo de expiración del período de sesiones. El servidor retrasa la publicación del cliente Will Mensaje hasta que el intervalo Will Delay haya expirado o transcurrido, que uno de los anteriores sucede primero. Esto delinea la Última Voluntad y Dilatación de Voluntad.
Esto explica el mantenimiento en un paquete de control.Mantenerse aliviadoes intervalo de tiempo entre el inicio y el final del proceso de transmisión del cliente MQTT. Mantenerse vivo un entero de dos bytes que se mide en segundos. El cliente MQTT debe tener responsabilidad de comprobar si el valor de mantenimiento no excede el intervalo de tiempo entre el envío MQTT paquetes de control. Si el valor de mantenimiento es 0, entonces el mecanismo de mantenimiento será apagado y también, el cliente no envía paquetes de control MQTT en ningún horario en particular. El efectivos el valor del mantenimiento es específico para la aplicación. El valor máximo es de 18 horas 12 minutos, y 15 segundos. El servidor no recibe un paquete de control MQTT hasta el tiempo de mantenimiento intervalo alcanza una y media veces. Ya que el valor vivo no es cero, el cliente debe cerrar el conexión de red. Si Keep-alive está en el paquete de control, entonces asegúrese de que conexión entre el corredor y el cliente sigue abierto y también confirma que el corredor y el cliente están conectados.
WebSocket es un protocolo de comunicaciones informáticas. Proporciona bidirectional transmisión simultánea en una sola conexión TCP. ConMQTT over WebSockets, cada uno navegador puede ser un dispositivo MQTT. El MQTT está transportando una conexión de toma web. El URL de WebSocket se utiliza para conectar el cliente y el servidor. Un único marco de datos WebSocket contiene múltiple Paquetes de control MQTT, que no crea ningún impacto en el protocolo MQTT.
Las siguientes condiciones deben aplicarse para utilizar WebSockets en MQTT,
Propiedades (MQTTv5) es probablemente uno de los más importantes combinaciones de elProtocolo MQTTexplicado por esta guía de inicio de MQTT, y están disponibles en la mayoría Tipos de mensaje MQTT. En los paquetes de control MQTT como CONNECT, CONNACK, PUBLISH, PUBACK, PUBREC, PUBREL, PUBCOMP, SUBSCRIBE, SUBACK, UNSUBSCRIBE, UNSUBACK, DISCONNECT, and AUTH packet tiene un conjunto de Propiedades de usuario en el último campo de la cabecera variable. El paquete CONNECT también contiene las opciones conjunto de Propiedades en el campo Propiedades de voluntad con una carga útil. El Usuario Propiedad campo es parte del campo de propiedades. Una propiedad define su uso y los datos seguidos a valor predeterminado, y se puede utilizar para proporcionar información adicional a los clientes de MQTT.
El mensaje CONNECT tendrá diferentes campos de propiedad que el PUBLISH mensaje porque los campos de propiedad dependen del tipo de mensaje. La propiedad del usuario permite igual nombre para aparecer más de una vez y también permite que aparezca múltiples veces para representar múltiple nombres, pares de valor al enviar los mensajes al cliente y al servidor. Es principalmente utilizado para enviar metadatos entre clientes. Las propiedades de usuario pueden ser eficaces para permitir que el usuario ampliación el Protocolo MQTT y a todos los mensajes y respuestas. Sólo tienen el significado del usuario activación porque las propiedades del usuario son definidas por el usuario.
El intervalo de expiración del período de sesiones define el período que el intermediario tiendas el información de sesión de ese cliente MQTT en particular. El costo de sesión es de cuatro bytes Integer that está representado en segundos. En MQTT 3.1.1 si el valor es 0, entonces el período de sesiones expira intervalo es ausente, y también la sesión termina cuando la conexión de red está cerrada. El período de sesiones expiación intervalo en el paquete CONNECT es utilizado por los clientes MQTT cuando la sesión expira intervalo es ausente. Si el intervalo de expiración de la sesión se incluye más de una vez en el control del MQTT paquetes y también en el paquete CONNECT, el intervalo de expiración de sesión es cero, entonces debe ser considerados un error de protocolo. No lo trata como un paquete DISCONNECT válido cuando el no-cero período de sesiones intervalo de expiración es recibido por el servidor. En caso de desconexión del servidor, período de sesiones El intervalo de caducidad no debe ser enviado al servidor. El intervalo de expiración del mensaje es similar a el intervalo de expiración de la sesión. Es una nueva característica introducida por el protocolo MQTT 5.0. Ambos el intervalo de expiración del período de sesiones y de expiración del mensaje se puede utilizar para mejorar la capacidad en elMQTT broker.
Un código de razones es una nueva característica introducida por la especificación MQTT5 y Aquí estamos. han descrito esto en la guía de inicio del MQTT. Es un valor sin señal de un byte eso es utilizado para el resultado de una indicación de operación. La conclusión con éxito de una en funcionamiento los códigos de la razón indican menos de 0*80. El código de razones para el éxito es 0. El código de razones valores más de 0*80 que indican fracaso. Muchos paquetes de MQTT ahora incluyen códigos de razones. A razón indicó que un error de protocolo predefinido ocurrió en el código. Estos códigos de razón son generalmente transportado en paquetes de reconocimiento y permitir al cliente y corretaje condiciones de error. El razón Los códigos se llaman a veces reconocimiento negativo. Una publicación ACK con el código de la razón 16 en MQTT3.1.1 indica que no hay suscriptores compatibles. As a result, with MQTTv5, it es factible para determinar si un tema se utiliza en cierta medida. El siguiente control paquetes permiten el suscriptor para determinar si la función solicitada es exitosa. Los paquetes de control tener un único código de la razón como parte de la cabecera variable son CONNACK, PUBACK, PUBREC, PUBREL, PUBCOMP, Desconectado, y bueno. Los paquetes de control tienen una lista de uno o más códigos de razón en sus payload are SUBACK and UNSUBACK.
Decimal | Hax | Nombre | paquetes |
---|---|---|---|
0 | 0X00 | éxito | CONNACK, PUBACK, PUBREC, PUBREL, PUBCOMP, UNSUBACK, AUTH |
0 | 0X00 | Desconexión normal | DESCONOCIDO |
0 | 0X00 | Granted QoS 0 | SUBACK |
1 | 0X01 | Subvención de la categoría 1 | SUBACK |
2 | 0X02 | Granted QoS 2 | SUBACk |
4 | 0X04 | Desconexión con mensaje de voluntad | DESCONOCIDO |
16 | 0X10 | No hay suscriptores coincidentes | PUBACK, PUBREC |
17 | 0X11 | No existía ninguna suscripción | UNSUBACK |
24 | 0X18 | 0 | Continua autenticación |
25 | 0x19 | Reauthenticate | AUTH |
128 | 0x80 | Error no especificado | CONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT |
129 | 0x81 | Paquete malformado | CONNACK, DISCONNECT |
130 | 0x82 | Error de protocolo | CONNACK, DISCONNECT |
131 | 0x83 | Error específico de aplicación | CONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT |
132 | 0x84 | Versión del Protocolo no compatible | CONNACK |
133 | 0x85 | ID de cliente (Identificador) no válido | CONNACK |
134 | 0x86 | Nombre de usuario malo o contraseña | CONNACK |
135 | 0x87 | No autorizado | CONNACK, PUBACK, PUBREC, SUBACK, UNSUBACK, DISCONNECT | 136 | 0x88 | Servidor no disponible | CONNACK |
137 | 0x89 | Servidor ocupado | CONNACK, DISCONNECT |
138 | 0x8A | Banned | CONNACK |
139 | 0x8B | Servidor apagado | DISCONNECT |
140 | 0x8C | Mal método de autenticación | CONNACK, DISCONNECT |
141 | 0x8D | Mantenga el tiempo libre | DISCONNECT |
142 | 0x8E | Período de sesiones | DISCONNECT |
143 | 0x8F | Filtro temático inválido | SUBACK, UNSUBACK, DISCONNECT |
144 | 0x90 | Nombre del tema nulo | CONNACK, PUBACK, PUBREC, DISCONNECT |
145 | 0x91 | Identificador de paquete en uso | PUBACK, PUBREC, SUBACK, UNSUBACK |
146 | 0x92 | Packet Identifier no encontrado | PUBREL, PUBCOMP |
147 | 0x93 | Recibir el máximo excedido | DISCONNECT |
148 | 0x94 | Tema Alias inválidas | DISCONNECT |
149 | 0x95 | Paquete demasiado grande | CONNACK, DISCONNECT |
150 | 0x96 | Tasa de mensaje demasiado alta | DISCONNECT |
151 | 0x97 | Cuota excedida | CONNACK, PUBACK, PUBREC, SUBACK, DISCONNECT |
152 | 0x98 | Medidas administrativas | DISCONNECT |
153 | 0x99 | Formato de carga no válido | CONNACK, PUBACK, PUBREC, DISCONNECT |
154 | 0x9A | Retain not supported | CONNACK, DISCONNECT |
155 | 0x9B | QoS no soportado | CONNACK, DISCONNECT |
156 | 0x9C | Usa otro servidor | CONNACK, DISCONNECT |
157 | 0x9D | Servidor movido | CONNACK, DISCONNECT |
158 | 0x9E | Suscripciones compartidas no apoyadas | SUBACK, DISCONNECT |
159 | 0x9F | Tasa de conexión superada | CONNACK, DISCONNECT |
160 | 0xA0 | Tiempo máximo de conexión | DISCONNECT |
161 | 0xA1 | Identificadores de suscripción no compatibles | SUBACK, DISCONNECT |
162 | 0xA2 | Suscripciones de tarjetas silvestres no compatibles | SUBACK, DISCONNECT |
Sólo el cliente podría enviar el mensaje de desconexión en MQTTv3.1.1. El TCP/IP se terminará la sesión si el servidor encuentra problemas. El servidor puede enviar un desconexión mensaje al cliente junto con un código de razones en MQTTv5. La desconexión del servidor cuando cliente envía el paquete DISCONNECT con un código de razones. La desconexión es la final paso el proceso MQTT. El DISCONNECT es el último paquete de control MQTT enviado desde el cliente o el servidor. La desconexión del servidor indica la razón por la que la conexión de red está siendo cerrado. Antes de cerrar la conexión de red, el cliente o servidor MAY envía un DISCONECTO paquete. Si Cliente sin enviar un paquete DISCONNECT primero con Reason Code 0x00 (Normal) desconexión) pero la conexión de red está cerrada y la conexión tiene un mensaje de voluntad, esta voluntad El mensaje es publicado.
El formato de carga es parte de cualquier paquete MQTT que pueda contener a carga útil. Permita que se especifique el formato Payload cuando se publique un mensaje. Esto puede ser remitido al receptor del mensaje. Algunos paquetes de control MQTT contienen un carga útil como parte final. Los paquetes de control que deben requerir los campos de formato de carga útil son CONNECT, SUBSCRIBE, SUBACK, UNSUBSCRIBE, UNSUBACK. En el paquete de control PUBLISH, la carga útil formato campo es opcional. Porque es considerado como un Mensaje de Aplicación. El carga útil campo existe sólo en la propiedad de PUBLISH packet y el paquete CONNECT. A servidor debe enviar el indicador de formato de carga útil sin cambios, a todos los suscriptores que reciben el aplicación Mensaje. El receptor puede confirmar que la carga útil está en el formato indicado, y si no envía un PUBACK, PUBREC, o código causal, entonces el formato de carga es incorrecto.
Tipo de contenido sólo existe en la propiedad de la Voluntad del paquete PUBLISH y Paquete CONNECT. Permitir el MIME (Multipropósito extensiones de correo de Internet – el contenido tipo de los datos enviados por un lado del servidor a un estilo cliente-side) para ser especificados cuando un mensaje es publicado. Esto se puede enviar al receptor del mensaje. Un servidor debe enviar el mensaje de contenido a todos los suscriptores, sin cambiar el tipo de contenido. El El tipo de contenido es más de una vez incluido en el paquete para eso, se debe considerar un protocolo error. El Valor tipo de contenido se define enviando y recibiendo los mensajes de aplicación. No. trunque el tipo de contenido durante el reenvío de mensajes.
El sistema de solicitud/respuesta de la Fórmula dentro del MQTT proporciona respuesta Títulos y atributos de datos de contacto para permitir que los mensajes de respuesta sean devueltos al editor de un petición. Agregue la capacidad del cliente para obtener información de configuración del servidor sobre cómo a configure los encabezados de respuesta. Algunas aplicaciones pueden querer ejecutar contactos de solicitud o respuesta via MQTT. Esta versión de MQTT tiene tres propiedades que se pueden utilizar para algún propósito: respuesta tópico, datos de correlación y información de solicitud/respuesta.
Un cliente MQTT publica un mensaje solicitado a un tema que es remitido a todos los clientes suscritos. Hay varios equipos de respuesta suscritos al mismo nombre de tema. El responder toma acción basado en el mensaje de solicitud y luego publica temas de respuesta to the clientes. El mensaje de solicitud/respuesta puede ser de cualquier QOS, el usuario de la sesión Gastos Intervalo y suscripción compartida. The requester has the responsibility to ensure the necesario autoridad para publicar y suscribirse al nombre de tema que establece en el tema de respuesta propiedad. It es responsabilidad del demandado para asegurar que el personal tenga la autoridad para Suscríbete al tema solicitado y publicar el tema demandado.
Proceso de interacción de Solicitud-Response:
Durante la suscripción, el cliente puede especificar una suscripción identificador. El identificador de suscripción es seguido por el byte de valor entero que representa el identificador del suscriptor. El identificador de suscripción tiene un valor de 1 a 268,435,455. Si el valor identificador de suscripción es cero, entonces es un error de protocolo. El Identificador de suscripción permite al cliente determinar qué suscripción o suscripciones causó la entrega del mensaje. Cuando el cliente puede especificar una suscripción Identificador durante una suscripción, el corredor establece y almacena la relación de mapeo entre esta suscripción y el identificador de suscripción cuando crea o crea con éxito cambios la suscripción. Cuando necesite enviar paquetes PUBLISH a este cliente que coincida con esto suscripción, el corredor devolverá el identificador de suscripción con este PUBLISH paquete. Se agregarán identificadores de suscripción múltiple si la publicación es el resultado de Artículos idénticos para más de una suscripción. En este caso, la orden no es significativa.
En el MQTT v5, el comportamiento del servidor se cambia utilizando suscripción opciones. Proporcionar opciones de suscripción principalmente limitadas para permitir aplicaciones. Esto Incluye las opciones para no enviar mensajes que aparecen en este cliente (No Local) y opciones para manejo de mensajes retenidos en la suscripción. En MQTT v5, soporte de opciones de suscripción QoS, No Local, Retened como Publish, Retain Handling. Puede ser útil no enviar retenidos mensajes a una suscripción existente cuando se vuelva a conectar, y el cliente no sabrá si el La suscripción se completó en la conexión anterior para el período de sesiones. No es útil a enviar mensajes guardados debido a una nueva suscripción donde un cliente desea recibir cambio notificaciones y no necesita conocer los estados iniciales. Opciones de suscripción el máximo nivel QoS en el que el Servidor puede enviar Mensajes de Aplicación al cliente. El Identificador de suscripción y opciones de suscripción se explican claramente por este MQTT # Comenzó guía.
Tema Alias es una nueva característica introducida por el protocolo MQTT 5.0, que es un mecanismo para reducir el tamaño de los paquetes publicados reduciendo el tamaño del tema campo. It reducirá el tamaño de la sobrecabeza del paquete MQTT permitiendo que el nombre del tema sea abreviado a pequeño entero. El Cliente y el Servidor especifican independientemente cuántos temas se alian permitir. A Tema Alias es un valor entero que se utiliza para identificar un tema en lugar de un tema nombre. Esto es útil cuando los nombres de temas son largos y los mismos nombres de temas se utilizan repetidamente dentro de un conexión de red. Los mapas del tema alias existen sólo dentro de una red conexión y sólo durará la vida de esa conexión de red. Si se utilizan estos mapas por el Cliente y Servidor, entonces son independientes entre sí. En la mayoría de los casos, no son esencial pero si muchos clientes son liberados frecuentemente pueden reducir significativamente red tráfico.
Control de flujo es el proceso de gestión de la tasa de datos transmisión entreMQTT clientes. Es útil para controlar el número de personas no reconocidas PUBLISH paquetes. Permitir al cliente y al servidor especificar el número de mensajes de confianza pendientes (QoS > 0) independientemente. Entonces el remitente dejará de enviar dichos mensajes para estudiar a continuación cuota. El cliente o servidor no debe recibir más que su valor inicial de cotización de envío cero. At otro control MQTT, paquetes deben continuar procesando y responder incluso si el cliente y valor de cotización del servidor es cero. Esto se utiliza para limitar la tasa de mensajes creíbles y a controla cuántos están en el camino de inmediato. Se utiliza principalmente para controlar el número de pendientes de mensajes fiables.
Aquí hemos definido la longitud máxima del paquete. Esta longitud del paquete especifica el tamaño de todo el paquete incluyendo el encabezado y los datos enviados en ese paquete. Permitir cliente y servidor independientemente para determinar el tamaño máximo del paquete que soportan. Enviar un paquete grande al socio de sesión es un error.
Opcional Server Function Availability define el conjunto de características que el servidor no permite, y proporciona al cliente un mecanismo para especificar esta función desde el servidor. Las principales características de la disponibilidad de funciones del servidor son Maximum QoS, Retain Disponible, Suscripción de Wildcard Disponible, Identificador de suscripción Disponible y Compartido Suscripción Disponible. Si el servidor declara que estas características no están disponibles, entonces los clientes usando estos características se consideran un error. El hecho de que un servidor no puede habilitar una función antes versiones de MQTT es posible notificando al cliente que la funcionalidad no es autorizado. Esta característica nos permite informar de tal comportamiento preferido y añade específico razón códigos cuando el cliente utiliza una de estas características.
La autenticación mejorada se utiliza para implementar la autenticación en un Reto-responso. Proporciona un mecanismo para permitir la autenticación con nombre de usuario y contraseña incluyendo el reconocimiento mutuo. La autenticación mejorada depende de la autenticación método y datos de autenticación para completar todo el proceso de autenticación. El autenticación método es el acuerdo entre el cliente y el servidor en el objeto de los datos enviados en el datos de autenticación. Las transferencias y procesos de datos son necesarios para el cliente y servidor a completar la autenticación. Esto permite SASL (Simple Authentication and Security Layer) estilo autenticación a utilizar si es compatible con el cliente y el servidor y puede re-authenticate un cliente dentro de una conexión. MQTT ofrece la aplicación de una autenticación mejorada. Esto la aplicación de la autenticación mejorada es opcional tanto para clientes como para servidores.
Esto permite que el servidor especifique los valores de Keep-alive cliente a El uso también permite al servidor establecer el máximo de mantenimiento permitido.
Hope this article provides a detailed explanation on MQTT enabling temprano adoptantes para empezar con MQTT.