В протоколах связи TLV ( тип-длина-значение или тег-длина-значение ) — это схема кодирования, используемая для информационных элементов. Поток данных, закодированный с помощью 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 .