TLV 设计问答
-
TLV 是什么?
Type-Length-Value 的编码格式:每个字段包含类型标识、长度和实际值,方便解析器跳过未知字段并按长度界定数据边界。 -
面试官默认的使用场景有哪些?
自定义应用层协议(IM、游戏、物联网)、配置/元数据编码、可选字段扩展(如 LLDP、802.11 信息元素、某些自研 RPC 协议),以及在二进制流上承载可变字段。 -
是不是只在 TCP 接收数据时用来判断是否读完?
不是。TLV 是应用层格式,既可跑在 TCP 流上做分帧,也可用于文件/缓存/消息队列。TCP 只保证字节流顺序不丢失,TLV 的 Length 帮你确定一帧边界、判断是否读够,但不限于 TCP。 -
TLV 在流式传输中的作用?
通过 Length 做分帧与越界防护,解析器可在未读满时继续读,在读超时可判定协议异常;Type 便于扩展和兼容,未知类型可按长度跳过。 -
设计 TLV 时要注意什么?
Type/Length 的大小端一致性;长度字段位宽是否足够;最大长度上限校验避免 OOM;是否需要对齐/填充;版本号或 Capability 协商;是否需要校验和/签名保证完整性与安全性。