众所周知, 在Protobuf中使用的编码方式是TLV, 也就是Tag-Length-Value, 但是在单纯的理解TLV是什么之前, 我认为需要去理解一下编码规范的历史, 因此写了这篇文章:
一, 紧凑时代
时代背景是刚刚有类似DOS的时候, 这个时候的显著特征就是各方面都很原始, 带宽很低, 因此在传输数据的时候要省之又省, 因此协议的编码规范以紧凑为特点.
假设武大和华师要搞一个数据传输协议, 目的是传输一本书的信息, 然后两个学校商量好了:
复制代码
1
2
3
4
5
6
7struct BookInfo { unsigned short cmd; // 代表不同的操作 char[8] num; char[60] name; }
学校觉得应该是可以的, 这个协议可以很好的沟通数据了! 也非常的节省空间!
复制代码
1
2
3
4
5
6+---+---+----+ |cmd|num|name| +---+---+----+ | 2 | 8 | 60 | +---+---+----+
这种编码规范的特点就是紧凑, 对于空间的利用率高, 导致这样的特征出现是因为当时的时代环境所限制, 带宽是非常珍贵的, 因此能省则省, 不允许冗余字段的产生.
二, Version的出现
在两三年后, 武大想在这个数据传输协议中增加一个字段: 入馆日期. 我们可以叫它da
最后
以上就是无私水蜜桃最近收集整理的关于TLV, TTLV和编码规范的历史的全部内容,更多相关TLV,内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复