Wenn eine TCP/IP-Socketverbindung zwischen Client und Broker hergestellt wird, ist eine Protokollversionssitzung erforderlich. Es wird davon ausgegangen, dass die Verbindung vom Client zum Broker verläuft und dass der Client das Broker-Empfangsprogramm unterstützt.
Das Format "Fester Header" wird in der nachfolgenden Tabelle dargestellt.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Byte 1 | Nachrichtenart (1) | DUP-Argument | QoS-Stufe | RETAIN | ||||
0 | 0 | 0 | 1 | x | x | x | x | |
Byte 2 | Verbleibende Länge |
Die DUP-, QoS- und RETAIN-Argumente werden in der CONNECT-Nachricht nicht verwendet.
Die verbleibende Länge ist die Länge des variablen Headers (12 Bytes) und die Länge der Nutzlast. Dies kann ein Mehrfachbytefeld sein.
Die nachfolgende Tabelle enthält ein Beispiel zum Format "Variabler Header".
Beschreibung: | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
---|---|---|---|---|---|---|---|---|---|
Protokollname | |||||||||
Byte 1 | Länge MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte 2 | Länge 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 |
Protokollversionsnummer | |||||||||
Byte 9 | Version (3) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
Verbindungsargumente | |||||||||
Byte 10 | Will RETAIN (0) |
x | x | 0 | 0 | 1 | 1 | 1 | x |
Aufrechterhaltungszeitgeber | |||||||||
Byte 11 | Keep Alive MSB (0) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Byte 12 | Keep Alive LSB (10) | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
Die erste UTF-verschlüsselte Zeichenfolge. Die Client-ID hat eine Länge von 1 bis 23 Zeichen und identifiziert den Client eindeutig beim Broker. Sie muss für alle Clients, die eine Verbindung zu einem einzelnen Broker aufbauen, eindeutig sein und ist der Schlüssel bei der Bearbeitung von "Nachrichten-ID"-Nachrichten mit den QoS-Stufen 1 und 2. Wenn die Client-ID länger ist als 23 Zeichen, antwortet der Broker auf die CONNECT-Nachricht mit dem CONNACK-Rückkehrcode 2: ID zurückgewiesen.
Die zweite UTF-verschlüsselte Zeichenfolge. Die Will-Nachricht wird im Will-Thema veröffentlicht. Die QoS-Stufe wird vom Will QoS-Feld festgelegt, der RETAIN-Status wird vom Will RETAIN-Argument im variablen Header festgelegt.
Die dritte UTF-verschlüsselte Zeichenfolge. Die Will-Nachricht definiert den Inhalt der Nachricht, die im Will-Thema veröffentlicht wird, wenn die Verbindung zum Client unerwartet getrennt wird.
Obwohl die Will-Nachricht in der CONNECT-Nachricht UTF-verschlüsselt ist, werden, wenn sie im Will-Thema veröffentlicht wird, nur die Bytes der Nachricht gesendet, nicht die ersten beiden Längenbytes. Die Nachricht, die gesendet wird, wenn der Broker die Will-Nachricht ausführt, ist in unformatiertem ASCII-Format und nicht UTF-verschlüsselt.
Der Broker sendet eine CONNACK-Nachricht als Antwort auf die CONNECT-Nachricht eines Clients.
Wenn der Client innerhalb einer vertretbaren Zeit keine CONNACK-Nachricht vom Broker empfängt, beendet der Client die TCP/IP-Socketverbindung und startet die Sitzung erneut, indem er ein Socket zum Broker öffnet und eine CONNECT-Meldung ausgibt. Die vertretbare Zeitdauer richtet sich nach der Art der Anwendung und der Kommunikationsinfrastruktur.