Dentro de los protocolos de comunicación , TLV ( tipo-longitud-valor o etiqueta-longitud-valor ) es un esquema de codificación utilizado para elementos informativos. Un flujo de datos codificado en TLV contiene código relacionado con el tipo de registro, la longitud del valor del registro y, finalmente, el valor mismo.
El tipo y la longitud tienen un tamaño fijo (normalmente de 1 a 4 bytes) y el campo de valor es de tamaño variable. Estos campos se utilizan de la siguiente manera:
Algunas ventajas de utilizar una solución de sistema de datos de representación TLV son:
Imagínese un mensaje para realizar una llamada telefónica. En una primera versión de un sistema, esto podría utilizar dos elementos de mensaje: un "comando" y un "phoneNumberToCall":
Aquí command_c
, makeCall_c
y phoneNumberToCall_c
son constantes enteras y 4 y 8 son las longitudes de los campos de "valor", respectivamente.
Posteriormente (en la versión 2) se podría agregar un nuevo campo que contenga el número llamante:
Un sistema de versión 1 que recibiera un mensaje de un sistema de versión 2 primero leería el command_c
elemento y luego leería un elemento de tipo callingNumber_c
. El sistema de la versión 1 no comprende callingNumber_c
, por lo que se lee el campo de longitud (es decir, 14) y el sistema avanza 14 bytes para leer.
phoneNumberToCall_c
que entiende y el análisis del mensaje continúa.
Los protocolos principales TCP/IP (particularmente IP , TCP y UDP ) utilizan campos estáticos predefinidos.
Algunos protocolos de capa de aplicación , incluidos HTTP/1.1 (y sus predecesores no estandarizados), FTP , SMTP , POP3 y SIP , utilizan pares "Campo: Valor" basados en texto formateados según RFC 2822. ( HTTP representa la longitud de la carga útil con un encabezado Content-Length y separa los encabezados de la carga útil con una línea vacía y los encabezados entre sí con una nueva línea).
ASN.1 especifica varias reglas de codificación basadas en TLV ( BER , DER ), así como reglas no basadas en TLV ( PER , XER ).
CSN.1 describe reglas de codificación que utilizan semántica no TLV.
Más recientemente, [ ¿ cuándo? ] XML se ha utilizado para implementar mensajes entre diferentes nodos de una red. Estos mensajes suelen tener el prefijo de comandos de texto basados en líneas, como BEEP .