ООО "ВМЛ" - Весь мир как на ладони! Продажа, установка и обслуживание систем видеонаблюдения, пожарной сигнализации, мониторинга транспорта, контроля доступа

      Лицензия ФСБ № ЛСЗ 0008499

      Номер мастерской РФ 0990

      Лицензия МЧС № 77-Б/02391

 

Приложение N 6

к приказу Министерства транспорта

Российской Федерации

от 31 июля 2012 г. N 285

СПЕЦИФИКАЦИЯ ПРОТОКОЛА ТРАНСПОРТНОГО УРОВНЯ

1. Введение

1.1. Обмен данными между абонентским терминалом и системами и аппаратно-программными комплексами осуществляется при помощи сетей подвижной радиотелефонной связи стандартов GSM и UMTS.

1.2. Сетевая модель OSI имеет следующие уровни: физический, канальный, сетевой, транспортный, сеансовый, представления данных и приложений. Для передачи данных между абонентскими терминалами и системами и аппаратно-программными комплексами используются следующие протоколы: транспортный уровень - протокол TCP, сетевой уровень - протокол IP. Соответствие уровней сетевой модели OSI, стека протоколов TCP/IP и протоколов системы представлено в Таблице N 1.

Таблица N 1. Соответствие уровней сетевой модели OSI, стека

протоколов TCP/IP и протоколов системы

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

│      Модель OSI      │  Стек протоколов   │  Протоколы   │  Протоколы   │

│                      │       TCP/IP       │    TCP/IP    │   системы    │

├───────┬──────────────┼───────┬────────────┤              │              │

│ номер │   название   │ номер │  название  │              │              │

│уровня │    уровня    │уровня │   уровня   │              │              │

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

│   7   │  Приложений  │   4   │ Приложений │  FTP, HTTP,  │   Уровень    │

├───────┼──────────────┤       │            │ POP3, IMAP,  │  поддержки   │

│   6   │Представления │       │            │telnet, SMTP, │    услуг     │

│       │    данных    │       │            │  DNS, TFTP   │              │

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

│   5   │  Сеансовый   │       │            │              │ Транспортный │

│       │              │       │            │              │   уровень    │

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

│   4   │ Транспортный │   3   │Транспортный│   TCP, UDP   │     TCP      │

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

│   3   │   Сетевой    │   2   │ Межсетевой │      IP      │      IP      │

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

│   2   │  Канальный   │   1   │  Доступ к  │              │              │

├───────┼──────────────┤       │    сети    │              ├──────────────┤

│   1   │  Физический  │       │            │              │              │

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

1.3. Общая длина пакета протокола транспортного уровня не превышает значения 65535 байт.

2. Протокол транспортного уровня

2.1. Обеспечение маршрутизации.

В качестве адресов маршрутизации используются идентификаторы аппаратно-программных комплексов, которые уникальны в рамках одной сети.

2.2. Механизм проверки целостности данных.

Для части пакета Транспортного уровня используется алгоритм вычисления циклического избыточного кода CRC-8.

Для части пакета Уровня поддержки услуг используется алгоритм вычисления циклического избыточного кода CRC-16.

2.3. Обеспечение надежности доставки.

Отправляющая сторона после передачи пакета ожидает на него подтверждение в виде пакета определенного типа, содержащего идентификатор ранее переданного пакета и код результата его обработки на принимающей стороне. Ожидание производится в течение определенного промежутка времени, зависящего от типа используемого протокола транспортного уровня (значение данного параметра TL_RESPONSE_TO указано в Таблице N 13).

После получения подтверждения отправляющая сторона производит анализ кода результата. Коды результатов обработки регламентированы протоколом и представлены в Таблице N 14. Пакет считается недоставленным в случае, если подтверждение не приходит по истечении времени TL_RESPONSE_TO. Недоставленные пакеты отправляются повторно (количество попыток отправки регламентировано протоколом. В Таблице N 13 указано значение данного параметра - TL_RESEND_ATTEMPTS). По достижении предельного количества попыток отправки канал передачи данных считается ненадежным и производится уничтожение установленной сессии (разрыв соединения в случае использования TCP/IP протокола в качестве транспортного протокола) и попытка создания новой сессии (соединения) через время, определяемое параметром TL_RECONNECT_TO (Таблица N 13).

3. Построение систем и аппаратно-программных комплексов

на основе протокола Транспортного уровня

3.1. Все сервисы в рамках одного аппаратно-программного комплекса соединяются с Диспетчером (часть аппаратно-программного комплекса, выполняющая функции координации межсистемного взаимодействия и маршрутизации) и не имеют непосредственных связей между собой.

3.2. Абонентский терминал также осуществляет взаимодействие с сервисами аппаратно-программного комплекса через компонент Диспетчер. При этом он идентифицируется по специальным пакетам, содержащим уникальный номер абонентского терминала UNIT_ID, назначаемый ему при регистрации в сети, а также другие учетные данные и информацию о состоянии модулей и блоков абонентского терминала.

3.3. Протоколом Транспортного уровня (далее - протокол) зарезервирован диапазон номеров типов сервисов до 63. Пользовательские сервисы имеют типы с номерами, начиная с 64.

4. Описание типов данных

4.1. Протоколом определены и используются несколько различных типов данных полей и параметров, указанных в Таблице N 2.

Таблица N 2. Типы данных Протокола

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

│  Тип  │ Размер, байт │ Диапазон значений  │          Описание           │

│данных │              │                    │                             │

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

│BOOLEAN│      1       │TRUE=1, FALSE=0     │Логический тип, принимающий  │

│       │              │                    │только два значения TRUE     │

│       │              │                    │или FALSE                    │

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

│BYTE   │      1       │0 ... 255           │Целое число без знака        │

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

│USHORT │      2       │0 ... 65535         │Целое число без знака        │

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

│UINT   │      4       │0 ... 4294967295    │Целое число без знака        │

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

│ULONG  │      8       │0 ...               │Целое число без знака        │

│       │              │18446744073709551615│                             │

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

│SHORT  │      2       │-32768 ... +32767   │Целое число со знаком        │

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

│INT    │      4       │-2147483648 ...     │Целое число со знаком        │

│       │              │+2147483647         │                             │

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

│FLOAT  │      4       │+/- 1.2 E - 38 ...  │Дробное число со знаком      │

│       │              │3.4 E + 38          │                             │

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

│DOUBLE │      8       │+/- 2.2 E - 308 ... │Дробное число со знаком      │

│       │              │1.7 E + 308         │                             │

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

│STRING │ Переменный.  │                    │Содержит последовательность  │

│       │    Размер    │                    │печатных символов в          │

│       │ определяется │                    │кодировке по умолчанию CP-   │

│       │   внешними   │                    │1251                         │

│       │ параметрами  │                    │                             │

│       │     или      │                    │                             │

│       │ применением  │                    │                             │

│       │ специального │                    │                             │

│       │   символа-   │                    │                             │

│       │ терминатора  │                    │                             │

│       │  (код 0x00)  │                    │                             │

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

│BINARY │ Переменный.  │                    │Содержит                     │

│       │    Размер    │                    │последовательность данных    │

│       │ определяется │                    │типа BYTE                    │

│       │   внешними   │                    │                             │

│       │ параметрами  │                    │                             │

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

│ARRAY  │ Переменный.  │                    │Содержит последовательность  │

│OF TYPE│    Размер    │                    │одного из вышеуказанных      │

│       │ определяется │                    │типов (TYPE), кроме BINARY.  │

│       │   внешними   │                    │Экземпляры типов идут        │

│       │ параметрами  │                    │последовательно один за      │

│       │              │                    │другим.                      │

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

4.2. Многобайтовые типы данных USHORT, UINT, ULONG, FLOAT и DOUBLE используют порядок следования байт little - endian (младший байт вперед). Байты, составляющие последовательность в типах STRING и BINARY, интерпретируются как есть, т.е. обрабатываются в порядке их поступления.

4.3. Определены следующие типы полей и параметров:

M (Mandatory) - обязательный параметр;

O (Optional) - необязательный параметр.

5. Структуры данных

5.1. Состав пакета протокола Транспортного уровня представлен на Рисунке N 1.

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

│  Заголовок Протокола │   Данные Уровня   │   Контрольная Сумма Данных   │

│ Транспортного Уровня │  Поддержки Услуг  │    Уровня Поддержки Услуг    │

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

Рисунок N 1. Состав пакета протокола Транспортного уровня

5.2. Пакет данных протокола Транспортного уровня состоит из заголовка, поля данных Уровня поддержки услуг, а также поля контрольной суммы данных Уровня поддержки услуг.

5.3. Общая длина пакета протокола Транспортного уровня не превышает значения 65535 байт, что соответствует максимальному значению параметра Window Size (максимальный размер целого пакета, принимаемый на стороне приемника) заголовка протокола TCP. Таблица N 3 определяет состав пакета протокола Транспортного уровня.

Таблица N 3. Состав пакета протокола Транспортного уровня

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

│Бит 7│Бит 6│Бит 5│Бит 4│Бит 3 │Бит 2│Бит│Бит │ Тип │  Тип   │  Размер,   │

│     │     │     │     │      │     │ 1 │ 0  │     │ данных │    байт    │

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

│           PRV (Protocol Version)            │  M  │  BYTE  │     1      │

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

│           SKID (Security Key ID)            │  M  │  BYTE  │     1      │

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

│    PRF     │RTE │    ENA     │ CMP │   PR   │  M  │  BYTE  │     1      │

│  (Prefix)  │    │            │     │        │     │        │            │

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

│             HL (Header Length)              │  M  │  BYTE  │     1      │

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

│            HE (Header Encoding)             │  M  │  BYTE  │     1      │

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

│           FDL (Frame Data Length)           │  M  │ USHORT │     2      │

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

│           PID (Packet Identifier)           │  M  │ USHORT │     2      │

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

│              PT (Packet Type)               │  M  │  BYTE  │     1      │

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

│             PRA (Peer Address)              │  O  │ USHORT │     2      │

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

│           RCA (Recipient Address)           │  O  │ USHORT │     2      │

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

│             TTL (Time To Live)              │  O  │  BYTE  │     1      │

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

│           HCS (Header Check Sum)            │  M  │  BYTE  │     1      │

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

│         SFRD (Services Frame Data)          │  O  │ BINARY │0 ... 65517 │

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

│    SFRCS (Services Frame Data Check Sum)    │  O  │ USHORT │    0,2     │

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

5.4. Заголовок протокола Транспортного уровня состоит из следующих полей: PRV, PRF, PR, CMP, ENA, RTE, HL, HE, FDL, PID, PT, PRA, RCA, TTL, HCS. Протокол Уровня поддержки услуг представлен полем SFRD, контрольная сумма поля Уровня поддержки услуг содержится в поле SFRCS.

5.5. Параметр PRV содержит значение 0x01. Значение данного параметра инкрементируется каждый раз при внесении изменений в структуру заголовка.

5.6. Параметр SKID определяет идентификатор ключа, используемого при шифровании.

5.7. Параметр PRF определяет префикс заголовка Транспортного уровня и содержит значение 00.

5.8. Поле RTE (Route) определяет необходимость дальнейшей маршрутизации данного пакета на удаленный аппаратно-программный комплекс, а также наличие опциональных параметров PRA, RCA, TTL, необходимых для маршрутизации данного пакета. Если поле имеет значение 1, то необходима маршрутизация и поля PRA, RCA, TTL присутствуют в пакете. Данное поле устанавливает Диспетчер того аппаратно-программного комплекса, на котором сгенерирован пакет, или абонентский терминал, сгенерировавший пакет для отправки на аппаратно-программный комплекс, в случае установки в нем параметра "HOME_DISPATCHER_ID", определяющего адрес аппаратно-программного комплекса, на котором данный абонентский терминал зарегистрирован.

5.9. Поле ENA (Encryption Algorithm) определяет код алгоритма, используемый для шифрования данных из поля SFRD. Если поле имеет значение 00, то данные в поле SFRD не шифруются.

5.10. Поле CMP (Compressed) определяет, используется ли сжатие данных из поля SFRD. Если поле имеет значение 1, то данные в поле SFRD считаются сжатыми.

5.11. Поле PR (Priority) определяет приоритет маршрутизации данного пакета и может принимать следующие значения:

00 - наивысший

01 - высокий

10 - средний

11 - низкий

При получении пакета Диспетчер производит маршрутизацию пакета с более высоким приоритетом быстрее, чем пакетов с низким приоритетом.

5.12. Поле HL - длина заголовка Транспортного уровня в байтах с учетом байта контрольной суммы (поля HCS).

5.13. Поле HE определяет применяемый метод кодирования следующей за данным параметром части заголовка Транспортного уровня.

5.14. Поле FDL определяет размер в байтах поля данных SFRD, содержащего информацию протокола Уровня поддержки услуг.

5.15. Поле PID содержит номер пакета Транспортного уровня, увеличивающийся на 1 при отправке каждого нового пакета на стороне отправителя. Значения в данном поле изменяются по правилам циклического счетчика в диапазоне от 0 до 65535, т.е. при достижении значения 65535 следующее значение 0.

5.16. Поле PT - тип пакета Транспортного уровня. Поле PT может принимать следующие значения.

0 - EGTS_PT_RESPONSE (подтверждение на пакет Транспортного уровня);

1 - EGTS_PT_APPDATA (пакет, содержащий данные протокола Уровня поддержки услуг);

2 - EGTS_PT_SIGNED_APPDATA (пакет, содержащий данные протокола Уровня поддержки услуг с цифровой подписью).

5.17. Поле PRA - адрес аппаратно-программного комплекса, на котором данный пакет сгенерирован. Данный адрес является уникальным в рамках сети и используется для создания пакета-подтверждения на принимающей стороне.

5.18. Поле RCA - адрес аппаратно-программного комплекса, для которого данный пакет предназначен. По данному адресу производится идентификация принадлежности пакета определенного аппаратно-программного комплекса и его маршрутизация при использовании промежуточных аппаратно-программных комплексов.

5.19. Поле TTL - время жизни пакета при его маршрутизации между аппаратно-программными комплексами. Использование данного параметра предотвращает зацикливание пакета при ретрансляции в системах со сложной топологией адресных пунктов. Первоначально TTL устанавливается аппаратно-программным комплексом, сгенерировавшим данный пакет. Значение TTL устанавливается равным максимально допустимому числу аппаратно-программных комплексов между отправляющим и принимающим аппаратно-программным комплексом. Значение TTL уменьшается на единицу при трансляции пакета через каждый аппаратно-программный комплекс, при этом пересчитывается контрольная сумма заголовка Транспортного уровня. При достижении данным параметром значения 0 и при обнаружении необходимости дальнейшей маршрутизации пакета происходит уничтожение пакета и выдача подтверждения с соответствующим кодом PC_TTLEXPIRED, описанным в Таблице N 14.

5.20. Поле HCS - контрольная сумма заголовка Транспортного уровня (начиная с поля "PRV" до поля "HCS", не включая поле "HCS"). Для подсчета значения поля HCS ко всем байтам указанной последовательности применяется алгоритм CRC-8.

5.21. Поле SFRD - структура данных, зависящая от типа пакета и содержащая информацию Протокола уровня поддержки услуг.

5.22. Поле SFRCS - контрольная сумма поля уровня Протокола поддержки услуг. Для подсчета контрольной суммы по данным из поля SFRD используется алгоритм CRC-16. Данное поле присутствует только в том случае, если есть поле SFRD.

5.23. Блок-схема алгоритма обработки пакета данных протокола Транспортного уровня при приеме представлена на Рисунке N 2.

                                      (────────────)

                                      (   НАЧАЛО   )

                                      (─────┬──────)

                                            │

                                            \/

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

                                  │ │Чтение заголовка│ │

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

                                            │            ┌─────┐

                                            \/           │     │

    ┌─┬────────────────────────┬─┐ -┌───────/\───────┐ + │     │

  ┌─┤ │           Код          │ │<─<Версия PRV И PRF>───┘     \/

  │ │ │  EGTS_PC_UNS_PROTOCOL  │ │  │ поддерживается?│     ┌───/\───┐

  │ └─┴────────────────────────┴─┘  └───────\/───────┘   - │ HL==11 │

  │                                                     ┌──<   или  >

  \/┌─┬────────────────────────┬─┐                      │  │ HL==16 │

  ├─┤ │           Код          │ │                      │  └───\/───┘

  │ │ │ EGTS_PC_INC_HEADERFORM │ │<─────────────────────┘      │

  │ └─┴────────────────────────┴─┘                             │ +

  │                                                            \/

  \/┌─┬────────────────────────┬─┐                      - ┌────/\───┐

  ├─┤ │          Код           │ │<───────────────────────<crc8==hcs abp="5825">

  │ │ │EGTS_PC_HEADERCRC_ERROR │ │                        └────\/───┘

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

  │                                                            │

  │ ┌─┬────────────────────────┬─┐                             │ +

  ├─┤ │           Код          │ │              ┌───────┐      │

  │ │ │   EGTS_PC_TTLEXPIRED   │ │              \/      │ -    \/

  │ └─┴────────────────────────┴─┘       - ┌────/\────┐ │  ┌───/\───┐

  │             /\                       ┌─<rca==Адрес abp="6091"> └──< RTE==0 >

  │             └──────────────────┐     │ │текущей ТП│    └───\/───┘

  │     ┌─┬──────────────┬─┐       │ -   │ └────\/────┘        │

  │ ─   │ │TTL = TTL - 1,│ │ + ┌───/\──┐ │      │ +            │ +

  │(A)<─┤ │ Пересчет HCS,│ │<── 0><┘      └─────────────>│

  │ ─   │ │  Отправка на │ │   └───\/──┘                       │

  │     │ │   другую ТП  │ │                                   │

  \/    └─┴──────────────┴─┘                                   \/

  │                                                      - ┌───/\──┐

  \/      ┌─┬───────────────────────┬─┐              ┌───── 0>

  ├───────┤ │          Код          │ │<─────────────┘     └───\/──┘

  │       │ │      EGTS_PC_OK       │ │                        │

  │       └─┴───────────────────────┴─┘                        │ +

  │                                                            \/

  \/      ┌─┬───────────────────────┬─┐         ┌─┬───────────────────────┬─┐

  ├───────┤ │          Код          │ │<───┐    │ │  Чтение данных SFRD,  │ │

  │       │ │ EGTS_PC_DATACRC_ERROR │ │    │    │ │   Вычисление CRC16    │ │

  │       └─┴───────────────────────┴─┘    │    └─┴───────────┬───────────┴─┘

  │                                        │                  │

  \/      ┌─┬───────────────────────┬─┐    │                  \/

  ├───────┤ │          Код          │ │    │         - ┌──────/\──────┐

  │       │ │ EGTS_PC_DECRYPT_ERROR │ │<┐  └───────────< CRC16==SFRCS >

  │       └─┴───────────────────────┴─┘ │ -            └──────\/──────┘

  │           /\    /\                  │                   + │

  │      ┌────┘     │                   │                     │

  │      │          │ -       + ┌───────/\──────┐             \/

  │      │  ┌───────/\─────┐ ┌──<      ENA      ><──┐  - ┌────/\───┐

  │      │  < SKID найден? ><┘  │поддерживается?│   └────< ENA==00 >

  │      │  └───────\/─────┘    └───────\/──────┘        └────\/───┘

  │      │          │                                       + │

  │      │        + \/                                        │

  │      │ ┌─┬─────────────┬─┐ ┌─────────────┬<───────────────┘

  │      │ │ │Декодирование│ │ │             │

  │      │ │ │  поля SFRD  │ │ │             │

  │      │ └─┴──────┬──────┴─┘ │             \/           ──────────────

  │      │          \/         │         ┌───/\───┐ +    / Данные     /

  │      │  - ┌─────/\─────┐ + │         < CMP==0 >────>/  уровня    /

  │      └────<Декодировано>───┘         └───\/───┘    /  Поддержки /──┐

  │           │  успешно?  │               - │        /   Сервисов /   │

  │           └─────\/─────┘                 │       ──────────────    │

  │                                          \/             /\         │

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

  │                                   │ │ Распаковка │ │    │          │

  │                                   │ │   данных   │ │    │          │

  │                                   └─┴────┬───────┴─┘    │          │

  │                                          │              │          │

  │                                          │              │          │

  │                                          │              │          │

  │     ┌─┬────────────────────┬─┐           \/             │          │

  │<────┤ │         Код        │ │<─┐ - ┌────/\─────┐ +     │          \/

  │     │ │EGTS_PC_INC_DATAFORM│ │  └───<Распаковано>───────┘  ┌─┬────────────┬─┐

  │     └─┴────────────────────┴─┘      │ успешно?  │          │ │     Код    │ │

  │                                     └────\/─────┘          │ │ EGTS_PC_OK │ │

  \/                                                           └─┴─────┬──────┴─┘

┌─┬──────────────────┬─┐                                               \/

│ │     Отправка     │ │                                               ─

│ │ EGTS_PT_RESPONSE │ │                                              (B)

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

           │

           \/

        (─────)             A - маршрутизация и отправка пакета  на  другой

        (КОНЕЦ)             аппаратно-программный комплекс

        (─────)             B - обработка данных Протокола Уровня Поддержки

                            Услуг

Рисунок 2. Блок-схема алгоритма обработки пакета данных

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