Тип – длина – значение

редактировать

В протоколах связи, ТДЗ ( тип-длина-значение или тег длиной значение) представляет собой схема кодирования, используемая для дополнительного информационного элемента в определенном протоколе. Поток данных в кодировке TLV содержит код типа записи, за которым следует длина значения записи и, наконец, само значение.

СОДЕРЖАНИЕ
  • 1 Подробности
  • 2 Примеры
    • 2.1 Примеры из реального мира
      • 2.1.1 Транспортные протоколы
      • 2.1.2 Форматы хранения данных
    • 2.2 Другие примеры
  • 3 Другие способы представления данных
  • 4 Смотрите также
Подробности

Тип и длина имеют фиксированный размер (обычно 1–4 байта), а поле значения имеет переменный размер. Эти поля используются следующим образом:

Тип
Двоичный код, часто просто буквенно-цифровой, который указывает тип поля, которое представляет эта часть сообщения;
Длина
Размер поля значения (обычно в байтах);
Ценить
Серия байтов переменного размера, содержащая данные для этой части сообщения.

Некоторые преимущества использования решения системы данных представления TLV:

  • Последовательности TLV легко найти с помощью обобщенных функций синтаксического анализа;
  • Новые элементы сообщения, полученные на более старом узле, можно безопасно пропустить, а остальную часть сообщения можно проанализировать. Это похоже на способ безопасного пропуска неизвестных тегов XML ;
  • Элементы TLV можно размещать в теле сообщения в любом порядке;
  • Элементы TLV обычно используются в двоичном формате и двоичных протоколах, что ускоряет синтаксический анализ, а объем данных меньше, чем в сопоставимых текстовых протоколах.
Примеры

Примеры из реального мира

Транспортные протоколы

Форматы хранения данных

Другие примеры

Представьте себе сообщение для телефонного звонка. В первой версии системы для этого могут использоваться два элемента сообщения: «команда» и «phoneNumberToCall»:

command_c / 4 / makeCall_c / phoneNumberToCall_c / 8 / "722-4246"

Здесь command_c, makeCall_cи phoneNumberToCall_cцелые константы и 4 и 8 представляют собой длины полей «значение», соответственно.

Позже (в версии 2) можно было добавить новое поле, содержащее номер вызывающего абонента:

command_c / 4 / makeCall_c /allingNumber_c / 14 / "1-613-715-9719" / phoneNumberToCall_c / 8 / "722-4246"

Система версии 1, которая получила сообщение от системы версии 2, сначала прочитала бы command_cэлемент, а затем элемент типа callingNumber_c. Система версии 1 не понимает callingNumber_c, поэтому считывается поле длины (например, 14), и система пропускает 14 байтов вперед для чтения.

phoneNumberToCall_c

который он понимает, и анализ сообщения продолжается.

Другие способы представления данных

Базовые протоколы TCP / IP (особенно IP, TCP и UDP ) используют предварительно определенные статические поля.

Некоторые протоколы прикладного уровня, включая HTTP / 1.1 (и его нестандартные предшественники), FTP, SMTP, POP3 и SIP, используют текстовые пары «Поле: Значение», отформатированные в соответствии с RFC   2822. ( HTTP представляет длину полезной нагрузки с помощью заголовка Content-Length и отделяет заголовки от полезной нагрузки пустой строкой, а заголовки друг от друга новой строкой.)

ASN.1 определяет несколько правил кодирования на основе TLV ( BER, DER ), а также правила кодирования, не основанные на TLV ( PER, XER ).

CSN.1 описывает правила кодирования с использованием семантики, отличной от TLV.

Совсем недавно XML использовался для реализации обмена сообщениями между различными узлами в сети. Эти сообщения обычно начинаются с префиксов строчных текстовых команд, таких как BEEP.

Смотрите также
Последняя правка сделана 2023-04-13 05:18:51
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте