Type-length-value

Within data communication protocols, optional information may be encoded as a type-length-value or TLV element inside a protocol. TLV is also known as tag-length-value.

The type and length are fixed in size (typically 1-4 bytes), and the value field is of variable size. These fields are used as follows:

Type
A binary code, often simply alphanumeric, which indicates the kind of field that this part of the message represents;
Length
The size of the value field (typically in bytes);
Value
Variable-sized series of bytes which contains data for this part of the message.

Some advantages of using a TLV representation data system solution are:

Examples

Imagine a message to make a telephone call. In a first version of a system this might use two message elements, a "command" and a "phoneNumberToCall":

command_c/4/makeCall_c/phoneNumberToCall_c/8/"722-4246"

Here command_c, makeCall_c and phoneNumberToCall_c are integer constants and 4 and 8 are the lengths of the "value" fields, respectively.

Later (in version 2) a new field containing the calling number could be added:

command_c/4/makeCall_c/callingNumber_c/14/"1-613-715-9719"/phoneNumberToCall_c/8/"722-4246"

A version 1 system which received a message from a version 2 system would first read the command_c element and then read an element of type callingNumber_c. The version 1 system does not understand ;callingNumber_c

so the length field is read (i.e. 14) and the system skips forward 14 bytes to read

phoneNumberToCall_c

which it understands, and message parsing carries on.

An example of usage is the Link Layer Discovery Protocol which allows for the sending of organizational-specific information as a TLV element within LLDP packets. Another example is the RR protocol used in GSM cell phones, defined in 3GPP 04.18.

In the RR protocol, each message is defined as a sequence of information elements.

Many other protocols use TLVs, such as COPS, IS-IS, and RADIUS.

Other ways of representing data

Core TCP/IP protocols (particularly IP, TCP, and UDP) use predefined, static fields.

Common TCP/IP-based protocols such as HTTP, FTP, SMTP, POP3, and SIP use text-based "Field: Value" pairs formatted according to RFC 2822.

ASN.1 specifies several TLV-based encoding rules (BER, DER), as well as non-TLV based ones (PER, XER).

CSN.1 describes encoding rules using non-TLV semantics.

More recently, XML has been used to implement messaging between different nodes in a network. These messages are typically prefixed with line-based text commands, such as with BEEP.

See also

References

    External links

    This article is issued from Wikipedia - version of the 11/20/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.