5.6.1 Общая структура пакета протокола транспортного уровня определяется составом пакета и его форматом.
5.6.1.1 Пакет протокола транспортного уровня состоит из заголовка, поля "данные уровня поддержки услуг", а также поля контрольной суммы "данных уровня поддержки услуг".
Состав пакета протокола транспортного уровня представлен на схеме 1.
Схема 1 - Состав пакета протокола транспортного уровня
5.6.1.2 Общая длина пакета протокола транспортного уровня не превышает значения 65535 байт, что соответствует максимальному значению параметра Window Size (максимальный размер целого пакета, принимаемый на стороне приемника) заголовка протокола TCP. Такое значение максимального размера пакета позволяет более эффективно использовать каналы передачи данных, базируясь только на стандартном методе управления потоком данных, заложенном в протоколе TCP/IP [1].
Формат пакета транспортного уровня представлен в таблице 3.
Таблица 3 - Состав пакета протокола транспортного уровня
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 | Тип | Тип данных | Размер, байт |
PRV (Protocol Version) | M | BYTE | 1 | |||||||
SKID (Security Key ID) | M | BYTE | 1 | |||||||
PRF (Prefix) | RTE | ENA | CMP | PR | M | BYTE | 1 | |||
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.6.1.3 Заголовок протокола транспортного уровня состоит из следующих параметров (полей): PRV, PRF, PR, CMP, ENA, RTE, HL, HЕ, FDL, PID, PT, PRA, RCA, TTL, HCS. Протокол уровня поддержки услуг представлен полем SFRD, контрольная сумма поля уровня поддержки услуг содержится в поле SFRCS.
Описание вышеуказанных параметров (полей) приведено в таблице 4.
Таблица 4 - Описание параметров (полей), входящих в состав пакета протокола транспортного уровня
Обозначение параметра (поля) | Назначение параметра (поля) |
PRV | Параметр определяет версию используемой структуры заголовка и должен содержать значение 0x01. Значение данного параметра инкрементируется каждый раз при внесении изменений в структуру заголовка |
SKID | Параметр определяет идентификатор ключа, используемый при шифровании |
PRF | Параметр определяет префикс заголовка транспортного уровня и для данной версии должен содержать значение 00 |
RTE (Route) | Битовое поле определяет необходимость дальнейшей маршрутизации данного пакета на удаленную телематическую платформу, а также наличие опциональных параметров PRA, RCA, TTL, необходимых для маршрутизации данного пакета. Если поле имеет значение 1, то необходима маршрутизация и поля PRA, RCA, TTL присутствуют в пакете. Данное поле устанавливает Диспетчер той телематической платформы, на которой сгенерирован пакет, или АС, сгенерировавшая пакет для отправки на телематическую платформу (в случае установки в ней параметра HOME_DISPATCHER_ID, определяющего ее адрес, на который данная АС зарегистрирована). В случае отсутствия в АС параметра HOME_DISPATCHER_ID, маршрутизация пакета производится по внутренним правилам Диспетчера, обрабатывающего пакет |
ENA (Encryption Algorithm) | Битовое поле определяет код алгоритма, используемый для шифрования данных из поля SFRD. Если поле имеет значение 00, то данные в поле SFRD не шифруются. Состав и коды алгоритмов не определены в данной версии протокола |
CMP (Compressed) | Битовое поле определяет, используется ли сжатие данных из поля SFRD. Если поле имеет значение 1, то данные в поле SFRD считаются сжатыми. Алгоритм сжатия не определен в данной версии протокола |
PR (Priority) | Битовое поле определяет приоритет маршрутизации данного пакета и может принимать следующие значения: |
HL | Длина заголовка протокола транспортного уровня в байтах с учетом байта контрольной суммы (поля HCS) |
HE | Определяет применяемый метод кодирования следующей за данным параметром части заголовка протокола транспортного уровня. Зарезервировано |
FDL | Определяет размер в байтах поля данных SFRD, содержащего информацию протокола уровня поддержки услуг |
PID | Содержит номер пакета протокола транспортного уровня, увеличивающийся на 1 при отправке каждого нового пакета на стороне отправителя. Значения в данном поле изменяются по правилам циклического счетчика в диапазоне от 0 до 65535, т.е. при достижении значения 65535 следующее значение должно быть 0 |
PT | Тип пакета протокола транспортного уровня. |
PRA | Адрес телематической платформы, на которой данный пакет сгенерирован. Данный адрес является уникальным в рамках связной сети и используется для создания пакета-подтверждения на принимающей стороне |
RCA | Адрес телематической платформы, для которой данный пакет предназначен. По данному адресу производится идентификация принадлежности пакета определенной телематической платформе и его маршрутизация при использовании промежуточных телематических платформ |
TTL | Время жизни пакета при его маршрутизации между телематическими платформами. Использование данного параметра предотвращает зацикливание пакета при ретрансляции в системах со сложной топологией адресных пунктов. Первоначально TTL устанавливается телематической платформой, сгенерировавшей данный пакет. Значение TTL устанавливается равным максимально допустимому числу телематической платформы между отправляющей и принимающей платформами. Значение TTL уменьшается на единицу при трансляции пакета через каждую телематическую платформу, при этом пересчитывается контрольная сумма заголовка протокола транспортного уровня. При достижении данным параметром значения 0 и при обнаружении необходимости дальнейшей маршрутизации пакета происходят уничтожение пакета и выдача подтверждения с соответствующим кодом (PC_TTLEXPIRED, см. приложение В) |
HCS | Контрольная сумма заголовка протокола транспортного уровня (начиная с поля "PRV" до поля "HCS", не включая последнего). Для подсчета значения поля HCS ко всем байтам указанной последовательности применяется алгоритм CRC-8. Пример программного кода расчета CRC-8 приведен в приложении Д |
SFRD | Структура данных, зависящая от типа пакета и содержащая информацию протокола уровня поддержки услуг |
SFRCS | Контрольная сумма. |
(Измененная редакция, Изм. N 1).
5.6.1.4 Блок-схема алгоритма сборки пакета протокола транспортного уровня при приеме представлена на рисунке 1.
Рисунок 1 - Блок схема алгоритма сборки пакета протокола транспортного уровня при приеме
(Измененная редакция, Изм. N 1).
5.6.2 Структуры данных в зависимости от типа пакета