4.1. Message Header 格式
4.1. Message Header 格式 (Message Header Format)
每个 message 都有一个固定大小的 header. 根据 message type, header 后面可能有也可能没有 data portion. 这些字段的布局如下所示:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ +
| Marker |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length | Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Marker:
这个 16-octet 字段出于兼容性原因而包含; 它 MUST 设置为全 1.
Length:
这个 2-octet unsigned integer 以 octet 为单位指示 message 的总长度, 包括 header. 因而它允许在 TCP stream 中定位下一条 message 的 Marker field. Length field 的值 MUST 始终至少为 19 且不大于 4096, 并且 MAY 根据 message type 进一步受限. 不允许在 message 后对额外 data 进行 "padding". 因此, 对给定 message 的其余部分而言, Length field MUST 具有所需的最小值.
Type:
这个 1-octet unsigned integer 指示 message 的 type code. 本文档定义以下 type code:
- 1 - OPEN
- 2 - UPDATE
- 3 - NOTIFICATION
- 4 - KEEPALIVE
[RFC2918] 定义了另一个 type code.