3. Сеансовый уровень (протокол NPL)
На сеансовом уровне осуществляется шифрование и маршрутизация пакетов.
Пакета NPL, протокола нижнего уровня (NPL) имеет следующий формат:
┌──────────┬───────────────┬───────┬─────────┬────────────────────────┬──────────────┐
│ │ Поле │ Длина │ Тип │ Описание │ Может ли │
│ │ │ │ │ │ данное поле │
│ │ │ │ │ │ (значение) │
│ │ │ │ │ │ изменяться │
├──────────┼───────────────┼───────┼─────────┼────────────────────────┼──────────────┤
│заголовок │ <signature> │ 2 │ int16 │ Сигнатура - │ Нет. В поле │
│ пакета │ │ │ │ предопределенное поле │ всегда │
│ NPL │ │ │ │данных в начале пакета, │ должно быть │
│ │ │ │ │ предназначенное для │ установлено │
│ │ │ │ │проверки на принимающей │значение 7E7E │
│ │ │ │ │ стороне того, что по │ │
│ │ │ │ │данному адресу в памяти │ │
│ │ │ │ │ находятся данные │ │
│ │ │ │ │ соответствующего │ │
│ │ │ │ │ пакета. Наличие │ │
│ │ │ │ │ сигнатуры является │ │
│ │ │ │ │ обязательным. │ │
├──────────┼───────────────┼───────┼─────────┼────────────────────────┼──────────────┤
│ │ <data_size> │ 2 │unsigned │ Определяет размер │ Нет. В поле │
│ │ │ │ int16 │ данных, находящихся │ всегда │
│ │ │ │ │ в поле <data>. Для │ должно быть │
│ │ │ │ │ незашифрованных и │ установлено │
│ │ │ │ │ зашифрованных пакетов │ значение 0 - │
│ │ │ │ │ <data_size> всегда │дополнительных│
│ │ │ │ │ равно размеру NPH │ данных в │
│ │ │ │ │ данных. │ пакете не │
│ │ │ │ │ Если данные передаются │ содержится │
│ │ │ │ │ в зашифрованном виде, │ │
│ │ │ │ │ размер поля <data> │ │
│ │ │ │ │ равен длине данных, │ │
│ │ │ │ │ выровненной по границе │ │
│ │ │ │ │ 8 байт (требования │ │
│ │ │ │ │ алгоритма Blowfish). │ │
│ │ │ │ │При этом дополнительные │ │
│ │ │ │ │ байты в расшифрованном │ │
│ │ │ │ │пакете не используются. │ │
│ │ │ │ │ Пример: если длина NPH │ │
│ │ │ │ │ пакета равна 18, │ │
│ │ │ │ │ то <data_size> = 18, │ │
│ │ │ │ │ а длина поля <data> │ │
│ │ │ │ │ равна 24. │ │
├──────────┼───────────────┼───────┼─────────┼────────────────────────┼──────────────┤
│ │ <flags> │ 2 │ int16 │ NPL_FLAG_CRC - │ Нет. В поле │
│ │ │ │ │ определяет расчет │ всегда │
│ │ │ │ │ контрольной суммы │ должно быть │
│ │ │ │ │ пакета (CRC) для │ установлено │
│ │ │ │ │обеспечения возможности │ значение 1 │
│ │ │ │ │ проверки валидности │ │
│ │ │ │ │ пакета получателем. │ │
│ │ │ │ │ Принимает значения: │ │
│ │ │ │ │ 0 - нет, 1 - да. │ │
├──────────┼───────────────┼───────┼─────────┼────────────────────────┼──────────────┤
│ │ <crc> │ 2 │unsigned │ Значение контрольной │ │
│ │ │ │ int16 │суммы поля <data>, либо │ │
│ │ │ │ │ 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 и т.д. │ │
├──────────┼───────────────┼───────┼─────────┼────────────────────────┼──────────────┤
└──────────┴───────────────┴───────┴─────────┴────────────────────────┴──────────────┘
Пакеты протокола NPL однонаправленные, подтверждения не требуют.
<peer_address> входящего пакета указывает адрес отправителя пакета. В данном поле может передаваться либо адрес ССД (для пакетов, приходящих со стороны ССД на СТС), либо адрес СТС (для пакетов, приходящих со стороны СТС на ССД).
- Гражданский кодекс (ГК РФ)
- Жилищный кодекс (ЖК РФ)
- Налоговый кодекс (НК РФ)
- Трудовой кодекс (ТК РФ)
- Уголовный кодекс (УК РФ)
- Бюджетный кодекс (БК РФ)
- Арбитражный процессуальный кодекс
- Конституция РФ
- Земельный кодекс (ЗК РФ)
- Лесной кодекс (ЛК РФ)
- Семейный кодекс (СК РФ)
- Уголовно-исполнительный кодекс
- Уголовно-процессуальный кодекс
- Производственный календарь на 2025 год
- МРОТ 2024
- ФЗ «О банкротстве»
- О защите прав потребителей (ЗОЗПП)
- Об исполнительном производстве
- О персональных данных
- О налогах на имущество физических лиц
- О средствах массовой информации
- Производственный календарь на 2024 год
- Федеральный закон "О полиции" N 3-ФЗ
- Расходы организации ПБУ 10/99
- Минимальный размер оплаты труда (МРОТ)
- Календарь бухгалтера на 2024 год
- Частичная мобилизация: обзор новостей