Dentro de los protocolos de comunicación , TLV ( tipo-longitud-valor o etiqueta-longitud-valor ) es un esquema de codificación utilizado para un elemento de información opcional en un determinado protocolo. El flujo de datos codificado en TLV contiene el código del tipo de registro, seguido de la longitud del valor del registro y, finalmente, el valor en sí.
Detalles
El tipo y la longitud son de 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:
- Tipo
- Un código binario, a menudo simplemente alfanumérico, que indica el tipo de campo que representa esta parte del mensaje;
- Largo
- El tamaño del campo de valor (normalmente en bytes);
- Valor
- Serie de bytes de tamaño variable que contiene datos para esta parte del mensaje.
Algunas ventajas de utilizar una solución de sistema de datos de representación TLV son:
- Las secuencias de TLV se buscan fácilmente utilizando funciones de análisis sintáctico generalizadas;
- Los elementos de mensaje nuevos que se reciben en un nodo más antiguo se pueden omitir de forma segura y el resto del mensaje se puede analizar. Esto es similar a la forma en que las etiquetas XML desconocidas se pueden omitir de forma segura;
- Los elementos TLV se pueden colocar en cualquier orden dentro del cuerpo del mensaje;
- Los elementos TLV se utilizan normalmente en formato binario y protocolos binarios, lo que hace que el análisis sea más rápido y los datos más pequeños que en protocolos comparables basados en texto.
Ejemplos de
Ejemplos del mundo real
Protocolos de transporte
- TLS (y su predecesor SSL) utilizan mensajes codificados en TVL.
- SSH
- Policías
- ES-ES
- RADIO
- El protocolo de descubrimiento de capa de enlace permite el envío de información específica de la organización como un elemento TLV dentro de los paquetes LLDP
- Protocolo RR utilizado en teléfonos móviles GSM (definido en 3GPP 04.18). En este protocolo, cada mensaje se define como una secuencia de elementos de información.
Formatos de almacenamiento de datos
- IFF
- QTFF (la base de los contenedores MPEG-4 )
Otros ejemplos
Imagina un mensaje para hacer una llamada telefónica. En una primera versión de un sistema, esto podría usar dos elementos de mensaje: un "comando" y un "phoneNumberToCall":
- command_c / 4 / makeCall_c / phoneNumberToCall_c / 8 / "722-4246"
Aquí command_c
, makeCall_c
y phoneNumberToCall_c
son constantes enteras y 4 y 8 son las longitudes de los campos de "valor", respectivamente.
Más tarde (en la versión 2) se podría agregar un nuevo campo que contenga el número que llama:
- command_c / 4 / makeCall_c / callingNumber_c / 14 / "1-613-715-9719" / phoneNumberToCall_c / 8 / "722-4246"
Un sistema de la versión 1 que recibió un mensaje de un sistema de la 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 salta 14 bytes hacia adelante para leer
phoneNumberToCall_c
que comprende, y el análisis de mensajes continúa.
Otras formas de representar datos
Los protocolos básicos de TCP / IP (en particular , 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 de acuerdo con RFC 2822 . ( HTTP representa la longitud de paylad 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 otras no basadas en TLV ( PER , XER ).
CSN.1 describe las reglas de codificación utilizando semántica no TLV.
Más recientemente, [ ¿cuándo? ] XML se ha utilizado para implementar mensajes entre diferentes nodos en una red. Estos mensajes suelen tener como prefijo comandos de texto basados en líneas, como BEEP .
Ver también
- KLV , tipo específico de codificación tipo-longitud-valor
- Protocolo binario