1/SPB
- 状态:已弃用 (Status: deprecated)
- 编辑:Martin Sustrik sustrik@imatix.com
SPB 是一种用于封装不透明二进制数据块的极简格式。这些数据块没有属性,也没有内容结构,它们由一个大小字段后跟数据块内容组成。
许可 (License)
版权所有 (c) 2009 iMatix Corporation
本规范是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证(版本 3 或您选择的任何更高版本)的条款对其进行再分发和/或修改。
分发本规范是希望它会有用,但不附带任何担保;甚至不包括对适销性或特定用途适用性的暗示担保。更多详情请参阅 GNU 通用公共许可证。
您应该已经随本程序收到了 GNU 通用公共许可证的副本;如果未收到,请访问https://gnu.ac.cn/licenses。
变更流程 (Change Process)
本规范是自由开放的标准(参见“自由开放标准的定义”),并受数字标准组织(Digital Standards Organization)的共识导向规范系统(COSS)管辖(参见“共识导向规范系统”)。
语言 (Language)
本文档中的关键词“MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、“MAY”和“OPTIONAL”应按 RFC 2119 中的描述解释(参见“用于 RFC 中表示需求级别的关键词”)。
目标 (Goals)
SPB 旨在成为一种可移植的最佳线路帧封装格式,用于通过诸如 TCP/IP 等流协议传输的不透明数据块。
架构 (Architecture)
一个 SPB 帧由一个帧长度后跟帧数据组成。帧数据的大小必须与帧长度一致。
对于 0 到 254 字节的帧,长度由一个字节表示。
对于 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message size | Message body ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message body ...
+-+-+-+-+-+-+- ...
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 ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message size ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message size | Message body ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message body ...
+-+-+-+-+-+-+-+ ...
SPB 可以通过以下语法定义
frame = length data
length = OCTET | escape 8*OCTET
escape = %xFF
data = *OCTET
参考实现 (Reference implementation)
可以在 0MQ 项目中找到 SPB 的参考实现。