В протоколах связи, ТДЗ ( тип-длина-значение или тег длиной значение) представляет собой схема кодирования, используемая для дополнительного информационного элемента в определенном протоколе. Поток данных в кодировке TLV содержит код типа записи, за которым следует длина значения записи и, наконец, само значение.
Тип и длина имеют фиксированный размер (обычно 1–4 байта), а поле значения имеет переменный размер. Эти поля используются следующим образом:
Некоторые преимущества использования решения системы данных представления TLV:
Представьте себе сообщение для телефонного звонка. В первой версии системы для этого могут использоваться два элемента сообщения: «команда» и «phoneNumberToCall»:
Здесь command_c
, makeCall_c
и phoneNumberToCall_c
целые константы и 4 и 8 представляют собой длины полей «значение», соответственно.
Позже (в версии 2) можно было добавить новое поле, содержащее номер вызывающего абонента:
Система версии 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.