CONNECT - Cliente solicita una conexión a un intermediario

Cuando se establece una conexión de socket TCP/IP entre el cliente y el intermediario, se requiere una sesión de nivel de protocolo. Se da por supuesto que la dirección de la conexión es de cliente a intermediario, y que el cliente da soporte a la funcionalidad del escucha del intermediario.

Cabecera fija

En la tabla siguiente se muestra el formato de cabecera fija.

bit 7 6 5 4 3 2 1 0
byte 1 Tipo de mensaje (1) Distintivo DUP Nivel de QoS RETAIN
  0 0 0 1 x x x x
byte 2 Longitud restante

Los distintivos DUP, QoS y RETAIN no se utilizan en el mensaje CONNECT.

La longitud restante es la longitud de la cabecera variable (12 bytes) y la longitud de la carga útil. Este campo puede ser un campo de varios bytes.

Cabecera variable

En la tabla siguiente se muestra un ejemplo del formato de la cabecera variable.

  Descripción 7 6 5 4 3 2 1 0
Nombre de protocolo
byte 1 Longitud MSB (0) 0 0 0 0 0 0 0 0
byte 2 Longitud LSB (6) 0 0 0 0 0 1 1 0
byte 3 'M' 0 1 0 0 1 1 0 1
byte 4 'Q' 0 1 0 1 0 0 0 1
byte 5 'I' 0 1 0 0 1 0 0 1
byte 6 's' 0 1 1 1 0 0 1 1
byte 7 'd' 0 1 1 0 0 1 0 0
byte 8 'p' 0 1 1 1 0 0 0 0
Número de versión de protocolo
byte 9 Versión (3) 0 0 0 0 0 0 1 1
Distintivos Connect
byte 10

Will RETAIN (0)
Will QoS (01)
Distintivo Will (1)
Clean Start (1)

x x 0 0 1 1 1 x
Temporizador de activación
byte 11 Activación MSB (0) 0 0 0 0 0 0 0 0
byte 12 Activación LSB (10) 0 0 0 0 1 0 1 0
Distintivo Clean Start
Establecido (1).
Temporizador de activación
Establecido en 10 segundos (0x000A).
Mensaje Will
  • El distintivo Will está establecido (1)
  • El campo Will QoS es 1
  • El distintivo Will RETAIN está desmarcado (0)

Carga útil

La carga útil del mensaje CONNECT contiene una o tres series codificadas UTF. Si el distintivo Will se establece en el byte de distintivos Connect en la cabecera variable, la carga útil debe contener las tres series de caracteres codificadas en UTF:
Identificador de cliente

La primera serie de caracteres codificada en UTF. El identificador de cliente (ID de cliente) tiene una longitud que oscila entre 1 y 23 caracteres y que identifica de forma exclusiva al cliente para el intermediario. Debe ser exclusiva en todos los clientes que se conectan a un solo intermediario y es la clave en el manejo de mensajes de ID de mensajes con niveles de QoS 1 y 2. Si el ID de cliente contiene más de 23 caracteres, el intermediario responde al mensaje CONNECT con un código de retorno CONNACK 2: identificador rechazado.

Tema Will

La segunda serie de caracteres codificada en UTF. El mensaje Will se publica con el tema Will. El nivel de QoS lo define el campo Will QoS y el estado de RETAIN lo define el distintivo Will RETAIN en la pulgadas variable.

Mensaje Will

Tercera serie de caracteres codificada en UTF. El mensaje Will define el contenido del mensaje que se publica en el tema Will si el cliente se desconecta de forma inesperada.

Aunque el mensaje Will está codificado en UTF en el mensaje CONNECT, cuando se publica en el tema Will sólo se envían los bytes del mensaje, no los dos primeros bytes de longitud. El mensaje enviado cuando el intermediario ejecuta el mensaje Will es ASCII sin formato, no codificado en UTF.

Respuesta

El intermediario envía un mensaje CONNACK en respuesta a un mensaje CONNECT desde un cliente.

Si el cliente no recibe un mensaje CONNACK del intermediario en una cantidad de tiempo razonable, el cliente cierra la conexión de socket TCP/IP y reinicia la sesión abriendo un socket para el intermediario y emitiendo un mensaje CONNECT. Una cantidad de tiempo "razonable" depende del tipo de aplicación y de la infraestructura de comunicaciones.

Conceptos relacionados
WebSphere MQ Telemetry Transport

Referencia relacionada
Calidad de niveles de servicio y flujos de WebSphere MQ Telemetry Transport
Formato de mensajes de WebSphere MQ Telemetry Transport
CONNACK - Reconocer petición de conexión
WebSphere MQ Telemetry Transport y UTF-8