2/SPB
- 状态:已弃用
- 编辑:Pieter Hintjens ph@imatix.com
SPB 是一种用于封装不透明二进制大对象(blob)的极简格式。这些大对象没有属性,没有内容结构,表示为一个大小字段,后跟大对象内容。
许可证
版权所有 (c) 2009-10 iMatix Corporation
本规范是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它;可以是许可证的第 3 版,或者(由您选择)任何更高版本。
发布本规范是希望它会有用,但不提供任何担保;甚至不包括适销性或特定用途适用性的默示担保。有关更多详细信息,请参阅 GNU 通用公共许可证。
您应该已随此程序收到一份 GNU 通用公共许可证的副本;如果未收到,请参阅 https://gnu.ac.cn/licenses。
变更流程
本规范是一个自由和开放的标准(参见“自由和开放标准的定义”),并受数字标准组织(Digital Standards Organization)的面向共识规范系统(COSS)管辖(参见“面向共识规范系统”)。
语言
本文档中的关键词“必须”(MUST)、“不得”(MUST NOT)、“必需的”(REQUIRED)、“应”(SHALL)、“不应”(SHALL NOT)、“应该”(SHOULD)、“不应该”(SHOULD NOT)、“推荐的”(RECOMMENDED)、“可以”(MAY)和“可选的”(OPTIONAL)的解释应遵循 RFC 2119 中的描述(参见“RFC 中用于指示需求级别的关键词”)。
目标
SPB 被设计为一种可移植的最优有线帧格式,用于封装通过诸如 TCP/IP 等流式协议传输的不透明数据大对象。
架构
一个 SPB 帧包含一个帧长度、一个扩展点和帧数据。帧数据的大小必须与帧长度相符。
对于 0 到 254 个八位字节(octet)的帧,长度由一个八位字节表示。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message size | Extensions | Message body ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message body ...
+-+-+-+-+-+-+-...
对于 255 个或更多八位字节的帧,长度由一个八位字节 %xFF 后跟一个网络字节序的 64 位无符号整数长度表示。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
| 0xff |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...+-+
| Message size (8 bytes) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...+-+
| Extensions | Message body ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message body ...
+-+-+-+-+-+-+-+...
SPB 由此语法定义
frame = length extensions data
length = OCTET | escape 8*OCTET
escape = %xFF
extensions = %x00
data = *OCTET
参考实现
SPB 的参考实现可在 0MQ 项目中找到。