Тип-длина-значение
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
В протоколах связи TLV ( значение -тип-длина или значение-длина-тега ) представляет собой схему кодирования, используемую для информационных элементов. Поток данных, закодированный в формате TLV, содержит код, связанный с типом записи, длиной значения записи и, наконец, самим значением.
Подробности
[ редактировать ]Тип и длина имеют фиксированный размер (обычно 1–4 байта), а поле значения имеет переменный размер. Эти поля используются следующим образом:
- Тип
- Двоичный код, часто просто буквенно-цифровой, который указывает тип поля, которое представляет эта часть сообщения;
- Длина
- Размер поля значения (обычно в байтах);
- Ценить
- Серия байтов переменного размера, содержащая данные для этой части сообщения.
Некоторые преимущества использования решения системы данных представления TLV:
- Последовательности TLV легко искать с помощью обобщенных функций синтаксического анализа;
- Новые элементы сообщения, полученные на более старом узле, можно безопасно пропустить, а остальную часть сообщения можно проанализировать. Это похоже на то, как XML ; можно безопасно пропускать неизвестные теги
- Элементы TLV можно размещать в теле сообщения в любом порядке;
- Элементы TLV обычно используются в двоичном формате и двоичных протоколах , что ускоряет анализ и уменьшает объем данных, чем в сопоставимых текстовых протоколах.
Примеры
[ редактировать ]Реальные примеры
[ редактировать ]Транспортные протоколы
[ редактировать ]- TLS (и его предшественник SSL) используют сообщения в кодировке TLV.
- SSH
- полицейские
- ЕСТЬ-Есть
- РАДИУС
- Протокол обнаружения канального уровня позволяет отправлять специфичную для организации информацию в виде элемента TLV в пакетах LLDP.
- Протокол резервирования мультимедиа позволяет получать информацию, специфичную для организации.
- Протокол динамической конфигурации хоста (DHCP) использует параметры в кодировке TLV.
- Протокол RR, используемый в сотовых телефонах GSM (определен в 3GPP 04.18). В этом протоколе каждое сообщение определяется как последовательность информационных элементов.
Форматы хранения данных
[ редактировать ]- МКФ
- Matroska использует TLV для тегов разметки.
- QTFF (основа контейнеров MPEG-4 )
Другой
[ редактировать ]Другие примеры
[ редактировать ]Представьте себе сообщение о телефонном звонке. В первой версии системы могли использоваться два элемента сообщения: «команда» и «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/callingNumber_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 , используют текстовые пары «Поле: Значение», отформатированные в соответствии с РФК 2822 . ( HTTP представляет длину полезных данных с помощью заголовка Content-Length и отделяет заголовки от полезных данных пустой строкой, а заголовки друг от друга — новой строкой.)
ASN.1 определяет несколько правил кодирования на основе TLV ( BER , DER ), а также правил кодирования, не основанных на TLV ( PER , XER ).
CSN.1 описывает правила кодирования с использованием семантики, отличной от TLV.
Совсем недавно, [ когда? ] XML использовался для реализации обмена сообщениями между различными узлами сети. Эти сообщения обычно предваряются строковыми текстовыми командами, например BEEP .
См. также
[ редактировать ]- KLV , конкретный тип кодирования типа-длины-значения
Ссылки
[ редактировать ]- ^ «Документация OpenWrt по ubus» . openwrt.org . 15 апреля 2022 г. Проверено 15 апреля 2022 г.