赞
踩
注:上篇转载博客(https://blog.csdn.net/qq_43296898/article/details/88822938)
主要介绍了TLV编码逐步进化和完善。下面主要介绍TLV编码方式!
一、 TLV编码介绍
TLV是指由数据的类型Tag,数据的长度Length,数据的值Value组成的结构体,几乎可以描任意数据类型,TLV的Value也可以是一个TLV结构,正因为这种嵌套的特性,可以让我们用来包装协议的实现。
以下将分别针对Tag、Length、Value进行解说:
1、 Tag 描述Value的数据类型,TLV嵌套时可以用于描述消息的类型
Tag由一个或多个字节组成,上图描述首字节0~7位的具体含义
① Tag首节字说明
② Tag后续字节说明
后续字节采用每个字节的0~6位(即7bit)来存储Tag Value, 第7位用来标识是否还有后续字节。
2、Length 描述Value的长度
描述Value部分所占字节的个数,编码格式分两类:定长方式(DefiniteForm)和不定长方式(IndefiniteForm)。
Length所在八位组固定编码为0x80,但在Value编码结束后以两个0x00结尾。这种方式使得可以在编码没有完全结束的情况下,可以先发送部分数据给对方。
3、Value 描述数据的值
由一个或多个值组成 ,值可以是一个原始数据类型(Primitive Data),也可以是一个TLV结构(Constructed Data)
① Primitive Data 编码
② Constructed Data 编码
原文链接:https://my.oschina.net/maxid/blog/206546?tdsourcetag=s_pctim_aiomsg
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。