- Tipo-longitud-valor
-
En el ámbito de los protocolos de comunicaciones, se denomina tipo-longitud-valor (del inglés type-length-value, comúnmente simbolizado como TLV) o valores de longitud tipo a un formato de representar información, de forma que haya información que pueda tener presencia opcional y longitud variable.
Los tipos (tags) y las longitudes suelen ser de longitud establecida, pero el valor (la información real) es de longitud variable y es determinada por el campo "longitud".
Cada "tupla" de información codificada de esta forma se compone de tres partes:
- Tipo ('tag): codigo que indica el dato que se esta codificando.
- Longitud (length): longitud del dato a codificar (Suele estar indicada en bytes).
- Valor (value): valor a codificar.
Contenido
Ventajas
- Una secuencia de datos codificada en TLV es fácil de interpretar.
- Se pueden añadir tags a los mensajes sin hacer que el mensaje sea incompatible hacia atras.
- La redudancia de datos al codificar en TLV es muy baja y suele ser menor que en XML.
- Permite una anidar estructuras, de forma que el dato de un TLV puede ser a su vez otro TLV.
- Es fácil saber si el mensaje ha llegado completamente sin necesidad de carga extra.
Inconvenientes
- No es un formato "ambigable a humanos", pues es difícil decodificar un mensaje al verlo, al contrario que en XML.
Usos comunes
- Codificación BER.
- Codificación DER.
- Codificación CER.
- Codificación que utiliza CDP en los mensajes de publicación de Routers CISCO, para proporcionar información acerca de los dispositivos vecinos, es decir, que se encuentran directamente conectados entre si.
Ejemplo
Un ejemplo básico de lo que podría ser un mensaje TLV es el siguiente, aunque no está optimizado para primar la claridad:
Para representar una persona de 30 años, que se casó el 28 de julio de 1900, cuyo nombre Pedro y es hijo de Carmen, pueden usarse estos tags:
- 01 significa "persona" (que contiene una edad, una fecha de casarse, el nombre de la persona, y la persona con quien se casa).
- 20 significa "edad" (dos dígitos por byte, en años).
- 21 significa "fecha de matrimonio" (dos dígitos por byte, codificado DD/MM/AAAA).
- 22 significa "nombre" (un carácter por byte).
- 23 significa "nombre la madre" (un carácter por byte).
El mensaje quedaría en formato binario. Por claridad, se representa aquí un ejemplo de mensaje en ASCII:
- 01 24 20 01 30 21 04 28 06 19 00 22 05 P e d r o 23 06 C a r m e n
Descomponiéndolo en partes quedaría de la siguiente forma.
TAG LONGITUD VALOR Interpretación 01 24 20 01 30 21 04 28 06 19 00 22 05 P e d r o 23 06 C a r m e n Debe descomponerse más. "Persona" tiene más cosas dentro 20 01 30 Edad: 30 años 21 04 28 06 19 00 Fecha de la boda: día 28, mes 06, año 1990 22 05 P e d r o El nombre de la persona: Pedro 23 06 C a r m e n Nombre de la madre: Carmen La cadena podría dividirse también en varios TLV para así poder añadir precisión en caso de requerirse (por ejemplo la hora).
Wikimedia foundation. 2010.