织梦CMS - 轻松建站从此开始!

罗索

Type-length-value数据格式

jackyhwei 发布于 2020-06-03 17:46 点击:次 
Within data communication protocols, optional information may be encoded as a type-length-value or TLV element inside of the protocol. TLV is also known as tag-length value.[1]
TAG: 数据结构  tlv  

Type-length-value

From Wikipedia, the free encyclopedia
 
 

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

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:

  • 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 which makes parsing faster and the data smaller;
  • It is easier to generate XML from TLV to make human inspection of the data possible.

[edit]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_cmakeCall_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 typecallingNumber_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 COPSIS-IS, and RADIUS.

[edit]Other ways of representing data

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

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

ASN.1 specifies several TLV-based encoding rules (BERDER), as well as non-TLV based ones (PERXER).

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.

[edit]See also

[edit]References

(wikipedia)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/202006/17692.html]
本文出处:wikipedia 作者:wikipedia 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
相关文章
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容