3. Сеансовый уровень (протокол NPL)

3. Сеансовый уровень (протокол NPL)

На сеансовом уровне осуществляется шифрование и маршрутизация пакетов.

Пакета NPL, протокола нижнего уровня (NPL) имеет следующий формат:

Поле
Длина
Тип
Описание
Может ли данное поле (значение) изменяться
заголовок пакета
NPL
<signature>
2
int16
Сигнатура - предопределенное поле данных в начале пакета, предназначенное для проверки на принимающей стороне того, что по данному адресу в памяти находятся данные соответствующего пакета. Наличие сигнатуры является обязательным.
Нет. В поле всегда должно быть установлено значение 7E7E
<data_size>
2
unsigned int 16
Определяет размер данных, находящихся в поле. Для незашифрованных и зашифрованных пакетов всегда равно размеру NPH данных. Если данные передаются в зашифрованном виде, размер поля равен длине данных выровненной по границе 8 байт (требования алгоритма Blowfish). При этом дополнительные байты в расшифрованном пакете не используются. Пример: если длина NPH пакета равна 18, то = 18, а длина поля равна 24.
Нет. В поле всегда должно быть установлено значение 0 - дополнительных данных в пакете не содержится.
<flags>
2
int16
NPL_FLAG_CRC - определяет расчет контрольной суммы пакета (CRC) для обеспечения возможности проверки валидности пакета получателем. Принимает значения: 0 - нет, 1 - да.
Нет. В поле всегда должно быть установлено значение 1
<crc>
2
unsigned int 16
Значение контрольной суммы поля, либо 0x0000, если флаг NPL_FLAG_CRC не установлен.
<type>
1
Byte
Указывает тип передаваемых данных. NPL_TYPE_ERROR - ошибка протокола NPL_NPL_TYPE NPH - пакет данных NPH
Да
<peer_address>
4
unsigned int32
Определяет адрес участника соединения:
NPL_ADDRESS_SERVER - сервер. Другие значения - мобильные устройства
Да
<request_id>
2
unsigned int16
Идентификатор пакета (ID) рекомендуется делать уникальным хотя бы в рамках одной сессии передачи данных. Например, выбрать некоторое значение ID при установке соединения и для каждого последующего пакета увеличивать его ID на единицу. При достижении 0 x FFFFFFFF следующее значение ID будет равно 0 x 00000000 и т.д.
Да
<data>
Var

Пакеты протокола NPL однонаправленные, подтверждения не требуют.

входящего пакета указывает адрес отправителя пакета. В данном поле может передаваться либо адрес ССД (для пакетов, приходящих со стороны ССД на СТС), либо адрес СТС (для пакетов, приходящих со стороны СТС на ССД).