Статус документа
Статус документа

ГОСТ Р 58603-2019 (ИСО/МЭК 20922:2016) Информационные технологии (ИТ). Интернет вещей. Протокол организации очередей доставки телеметрических сообщений MQTT. Версия 3.1.1

     6.1 CONNECT - Клиент запрашивает подключение к Серверу


После того, как Клиент установил сетевое соединение с Сервером, первым пакетом, отправленным Клиентом на Сервер, ДОЛЖЕН быть пакет CONNECT (СОЕДИНЕНИЕ) [MQTT-6.1.0-1].

Клиент может отправить пакет CONNECT через сетевое подключение только один раз. Сервер ДОЛЖЕН обработать второй пакет CONNECT, отправленный Клиентом, как нарушение протокола, и прервать соединение с Клиентом [MQTT-6.1.0-2]. Информация об обработке приведена в подразделе 7.8.

Полезная нагрузка содержит одно или несколько закодированных полей. Они определяют уникальный идентификатор Клиента для Клиента, тему "последней воли", сообщение "последней воли", имя пользователя и пароль. Все поля, кроме идентификатора Клиента, являются необязательными и их наличие определяется на основе флагов в переменном заголовке.

6.1.1 Фиксированный заголовок

В таблице 11 приведен фиксированный заголовок пакета CONNECT.

Таблица 11 - Фиксированный заголовок пакета CONNECT

Бит

7

6

5

4

3

2

1

0

Байт 1

Тип управляющего пакета MQTT (1)

Зарезервировано

0

0

0

1

0

0

0

0

Байт 2...

Остаток байтов


Поле "Остаток байтов"

Остаток байтов - это длина переменного заголовка (10 байт) плюс длина полезной нагрузки. Суммарное количество байт в остатке кодируется способом, описанным в подпункте 5.2.3.

6.1.2 Переменный заголовок

Переменный заголовок для пакета CONNECT состоит из четырех полей в следующем порядке: имя протокола, уровень протокола, флаги подключения и интервала поддержки активного соединения.

6.1.2.1 Имя протокола

В таблице 12 приведены байты имени протокола.

Таблица 12 - Байты имени протокола

Имя протокола

Описание

7

6

5

4

3

2

1

0

Байт 1

Длина MSB (0)

0

0

0

0

0

0

0

0

Байт 2

Длина LSB (4)

0

0

0

0

0

1

0

0

Байт 3

"М"

0

1

0

0

1

1

0

1

Байт 4

"Q"

0

1

0

1

0

0

0

1

Байт 5

"Т"

0

1

0

1

0

1

0

0

Байт 6

"Т"

0

1

0

1

0

1

0

0


Имя протокола - это кодированная строка UTF-8, которая представляет собой имя протокола "МQТТ", записанное заглавными буквами, как показано. Строка, ее смещение и длина не меняются в последующих изданиях спецификации MQTT.

Если имя протокола неверно, Сервер МОЖЕТ прервать соединение с Клиентом, или МОЖЕТ продолжить обработку пакета CONNECT в соответствии с некоторыми другими спецификациями. В последнем случае Сервер НЕ ДОЛЖЕН продолжать обрабатывать пакет CONNECT в соответствии с настоящей спецификацией [MQTT-6.1.2-1].

Пример - Инспекторы пакетов, например, брандмауэры, могут использовать Имя протокола для идентификации трафика MQTT.

6.1.2.2 Уровень протокола

В таблице 13 приведен байт уровня протокола.

Таблица 13 - Байт уровня протокола

Уровень протокола

Описание

7

6

5

4

3

2

1

0

Байт 7

Уровень (4)

0

0

0

0

0

1

0

0