miniaturadeimagen|Hackathon TLV, en Israel, diciembre de 2013 En el ámbito de los protocolos de comunicaciones, se denomina tipo-longitud-valor (del inglés , 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 () 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 (): código que indica el dato que se está codificando. Longitud (): longitud del dato a codificar (Suele estar indicada en bytes). Valor (): valor a codificar.
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 atrás. La redudancia de datos al codificar en TLV es muy baja y suele ser menor que en XML. Permite 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 "amigable 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 sí.
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 se casó con Carmen, pueden usarse estos tags: 01 significa "persona" (que contiene una edad, una fecha de casarse, el nombre de la persona y el nombre de 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 de la persona con quien se casa" (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 90 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.
TAGLONGITUDVALORInterpretación012420 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 dentro200130Edad: 30 años210428 06 19 90Fecha de la boda: día 28, mes 06, año 19902205P e d r oEl nombre de la persona: Pedro2306C a r m e nNombre de la persona con quien se casa: 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).
Categoría:Codificación de caracteres