In this article, we are going to explore Type–length–value in detail, a topic that has captured the attention of many people in recent times. Type–length–value is a complex and fascinating topic that has great relevance in today's society. Throughout this article, we will analyze different aspects related to Type–length–value, from its origin to its impact on everyday life. In addition, we will examine the different perspectives and opinions that exist around Type–length–value, with the aim of providing a broad and balanced view of this very relevant topic. Get ready to immerse yourself in the exciting world of Type–length–value!
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
|
Within communication protocols, TLV (type-length-value or tag-length-value) is an encoding scheme used for informational elements. A TLV-encoded data stream contains code related to the record type, the record value's length, and finally the value itself.
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:
Some advantages of using a TLV representation data system solution are:
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":
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:
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.
Core TCP/IP protocols (particularly IP, TCP, and UDP) use predefined, static fields.
Some application layer protocols, including HTTP/1.1 (and its non-standardized predecessors), FTP, SMTP, POP3, and SIP, use text-based "Field: Value" pairs formatted according to RFC 2822. (HTTP represents length of payload with a Content-Length header and separates headers from the payload with an empty line and headers from each other with a new line.)
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,[when?] 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.