TLV, TTLV和编码规范的历史

本文探讨了编码规范的历史,从早期的紧凑编码到Protobuf中的TLV(Tag-Length-Value)格式,再到TTLV,增加了Type字段以提高解析效率和自解释性。文章详细阐述了各个阶段的发展原因和需求变化,揭示了编码规范演进的逻辑。
摘要由CSDN通过智能技术生成

众所周知, 在Protobuf中使用的编码方式是TLV, 也就是Tag-Length-Value, 但是在单纯的理解TLV是什么之前, 我认为需要去理解一下编码规范的历史, 因此写了这篇文章:

一, 紧凑时代

时代背景是刚刚有类似DOS的时候, 这个时候的显著特征就是各方面都很原始, 带宽很低, 因此在传输数据的时候要省之又省, 因此协议的编码规范以紧凑为特点.

假设武大和华师要搞一个数据传输协议, 目的是传输一本书的信息, 然后两个学校商量好了:

struct BookInfo {
   
    unsigned short cmd; // 代表不同的操作
    char[8]  num;
    char[60] name;
}

学校觉得应该是可以的, 这个协议可以很好的沟通数据了! 也非常的节省空间!

+---+---+----+
|cmd|num|name|
+---+---+----+
| 2 | 8 | 60 |
+---+---+----+

这种编码规范的特点就是紧凑, 对于空间的利用率高, 导致这样的特征出现是因为当时的时代环境所限制, 带宽是非常珍贵的, 因此能省则省, 不允许冗余字段的产生.

二, Version的出现

在两三年后, 武大想在这个数据传输协议中增加一个字段: 入馆日期. 我们可以叫它da

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值