Документ утратил силу или отменен. Подробнее см. Справку

4.3. Уровень представления (протокол NPH)

Каждый участник соединения (СТС) обладает набором функций (услуг), которые он может предоставить другим участникам соединения. Все функции логически разделены на группы услуг мониторинга. Набор услуг мониторинга, которые поддерживает определенный участник соединения, определяет интерфейс его взаимодействия с другими участниками соединения.

Для каждого типа услуг мониторинга определены свои типы пакетов и логика работы. Отдельные типы пакетов могут использоваться в нескольких типах услуг мониторинга (например: пакет NPH_RESULT - пакет подтверждения, отсылающийся на не требующий получения данных запрос). Участник соединения может не поддерживать отдельные пакеты в определенном типе услуг мониторинга.

Обмен данными на уровне представления ведется с помощью пакетов NPH.

Пакет NPH имеет следующий формат:

┌───────────┬───────────────┬──────┬─────────┬─────────────────────┬────────────────┐

│ │ Поле │Длина │ Тип │ Описание │Может ли данное │

│ │ │ │ │ │поле (значение) │

│ │ │ │ │ │ изменяться │

├───────────┼───────────────┼──────┼─────────┼─────────────────────┼────────────────┤

│ заголовок │ <service_id> │ 2 │unsigned │ Тип услуги │ Нет. В поле │

│пакета NPH │ │ │ int16 │ │ всегда должно │

│ │ │ │ │ │быть установлено│

│ │ │ │ │ │значение 0100 - │

│ │ │ │ │ │ NPH_SRV_NAV │

│ │ │ │ │ │ DATA │

├───────────┼───────────────┼──────┼─────────┼─────────────────────┼────────────────┤

│ │ <type> │ 2 │unsigned │ Тип пакета │ Да │

│ │ │ │ int16 │ │ │

├───────────┼───────────────┼──────┼─────────┼─────────────────────┼────────────────┤

│ │ <flags> │ 2 │unsigned │ Флаги пакета │ Нет. В поле │

│ │ │ │ int16 │ (определяет │ всегда должно │

│ │ │ │ │ необходимость │быть установлено│

│ │ │ │ │ подтверждения). │ значение 1 - │

│ │ │ │ │ Bit 0 │ пакет требует │

│ │ │ │ │ NPH_FLAG_REQUEST - │ подтверждения │

│ │ │ │ │ определяет │ │

│ │ │ │ │ необходимость │ │

│ │ │ │ │ подтверждения │ │

│ │ │ │ │ пакета. │ │

│ │ │ │ │Принимает значения: │ │

│ │ │ │ │0 - пакет не требует │ │

│ │ │ │ │ подтверждения; │ │

│ │ │ │ │ 1 - пакет требует │ │

│ │ │ │ │ подтверждения. │ │

│ │ │ │ │ Возможен случай, │ │

│ │ │ │ │ когда бит │ │

│ │ │ │ │ установлен, но │ │

│ │ │ │ │ подтверждение не │ │

│ │ │ │ │ высылается. │ │

│ │ │ │ │ Подтверждение │ │

│ │ │ │ │ высылается только в │ │

│ │ │ │ │ том случае, когда │ │

│ │ │ │ │ направление │ │

│ │ │ │ │ подтверждения │ │

│ │ │ │ │ предусматривается │ │

│ │ │ │ │ протоколом обмена. │ │

├───────────┼───────────────┼──────┼─────────┼─────────────────────┼────────────────┤

│ │ <request_id> │ 4 │unsigned │ Идентификатор │ Да │

│ │ │ │ int32 │пакета, используется │ │

│ │ │ │ │ для подтверждения │ │

│ │ │ │ │ запроса. ID пакетов │ │

│ │ │ │ │рекомендуется делать │ │

│ │ │ │ │уникальным хотя бы в │ │

│ │ │ │ │ рамках одной сессии │ │

│ │ │ │ │ передачи данных. │ │

│ │ │ │ │ Например, выбрать │ │

│ │ │ │ │ некоторое значение │ │

│ │ │ │ │ ID при установке │ │

│ │ │ │ │ соединения и для │ │

│ │ │ │ │каждого последующего │ │

│ │ │ │ │ пакета увеличивать │ │

│ │ │ │ │ его ID на единицу. │ │

│ │ │ │ │ При достижении │ │

│ │ │ │ │ 0xFFFFFFFF │ │

│ │ │ │ │ следующее значение │ │

│ │ │ │ │ ID будет равно │ │

│ │ │ │ │ 0x00000000 и т.д. │ │

├───────────┼───────────────┼──────┼─────────┼─────────────────────┼────────────────┤

│ данные │ <data> │ var │ var │ Поле содержит │ Да │

│пакета NPH │ │ │ │ данные, является │ │

│ │ │ │ │ необязательным. │ │

│ │ │ │ │ Наличие и структура │ │

│ │ │ │ │ поля <data> должны │ │

│ │ │ │ │ однозначно │ │

│ │ │ │ │ определяться типом │ │

│ │ │ │ │услуг (<service_id>) │ │

│ │ │ │ │ и типом пакета │ │

│ │ │ │ │ (<type>). │ │

└───────────┴───────────────┴──────┴─────────┴─────────────────────┴────────────────┘

Тип пакета NPH_RESULT относится ко всем типам услуг.