fbpx
Wikipedia

Type–length–value

Within communication protocols, TLV (type-length-value or tag-length-value) is an encoding scheme used for optional informational elements in a certain protocol. A TLV-encoded data stream contains code related to the record type, the record value's length, and finally the value itself.

Details

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:

  • TLV sequences are easily searched using generalized parsing functions;
  • New message elements which are received at an older node can be safely skipped and the rest of the message can be parsed. This is similar to the way that unknown XML tags can be safely skipped;
  • TLV elements can be placed in any order inside the message body;
  • TLV elements are typically used in a binary format and binary protocols which makes parsing faster and the data smaller than in comparable text based protocols.

Examples

Real-world examples

Transport protocols

Data storage formats

Other

Other 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.

Other ways of representing data

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.

See also

References

  1. ^ "OpenWrt documentation on ubus". openwrt.org. April 15, 2022. Retrieved 2022-04-15.

type, length, value, this, article, multiple, issues, please, help, improve, discuss, these, issues, talk, page, learn, when, remove, these, template, messages, this, article, possibly, contains, original, research, please, improve, verifying, claims, made, ad. 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 This article possibly contains original research Please improve it by verifying the claims made and adding inline citations Statements consisting only of original research should be removed April 2015 Learn how and when to remove this template message This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources Type length value news newspapers books scholar JSTOR April 2022 Learn how and when to remove this template message Learn how and when to remove this template message Within communication protocols TLV type length value or tag length value is an encoding scheme used for optional informational elements in a certain protocol A TLV encoded data stream contains code related to the record type the record value s length and finally the value itself Contents 1 Details 2 Examples 2 1 Real world examples 2 1 1 Transport protocols 2 1 2 Data storage formats 2 1 3 Other 2 2 Other examples 3 Other ways of representing data 4 See also 5 ReferencesDetails EditThe 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 TLV sequences are easily searched using generalized parsing functions New message elements which are received at an older node can be safely skipped and the rest of the message can be parsed This is similar to the way that unknown XML tags can be safely skipped TLV elements can be placed in any order inside the message body TLV elements are typically used in a binary format and binary protocols which makes parsing faster and the data smaller than in comparable text based protocols Examples EditReal world examples Edit Transport protocols Edit TLS and its predecessor SSL use TLV encoded messages SSH COPS IS IS RADIUS Link Layer Discovery Protocol allows for the sending of organizational specific information as a TLV element within LLDP packets Media Redundancy Protocol allows organizational specific information Dynamic Host Configuration Protocol DHCP uses TLV encoded options RR protocol used in GSM cell phones defined in 3GPP 04 18 In this protocol each message is defined as a sequence of information elements Data storage formats Edit IFF QTFF the basis for MPEG 4 containers Other Edit ubus used for IPC in OpenWrt 1 Other examples Edit 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 cwhich it understands and message parsing carries on Other ways of representing data EditCore 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 See also EditKLV specific type of type length value encoding Binary protocolReferences Edit OpenWrt documentation on ubus openwrt org April 15 2022 Retrieved 2022 04 15 Retrieved from https en wikipedia org w index php title Type length value amp oldid 1127337490, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.