9. Relay Agent/Server Message Formats
Relay agents 与其他 relay agents 和服务器交换消息, 以便在未连接到同一链路的客户端和服务器之间转发消息.
消息头部和 options 中的所有值均采用网络字节序.
Options 串行存储在 "options" 字段中, options 之间没有填充. Options 按字节对齐, 但不采用其他方式对齐, 例如 2-byte 或 4-byte 边界.
有两种 relay agent 消息 (Relay-forward 和 Relay-reply), 它们共享以下格式:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| msg-type | hop-count | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
| link-address |
| |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
| peer-address |
| |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
. .
. options (variable number and length) .... .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
图 3: Relay Agent/Server Message Format
以下各节描述 relay agent 消息头部的使用.
9.1. Relay-forward Message
以下列表定义 Relay-forward 消息中消息字段的使用.
msg-type: RELAY-FORW (12). 这是一个 1-octet 字段.
hop-count: 已经转发此消息的 relay agents 数量. 这是一个 1-octet 字段.
link-address: 服务器可用于识别客户端所在链路的地址. 这通常是全局作用域单播地址, 即 GUA 或 ULA, 但请参见第 19.1.1 节的讨论. 这是一个 16-octet 字段.
peer-address: 接收到待转发消息的来源客户端或 relay agent 的地址. 这是一个 16-octet 字段.
options: 必须包含 Relay Message option (见第 21.10 节); 可以包含 relay agent 添加的其他 options, 例如 Interface-Id option (见第 21.18 节). 这是一个可变长度字段, 长度为消息大小减去 34 octets.
关于 link-address 字段如何使用, 见第 13.1 节.
9.2. Relay-reply Message
以下列表定义 Relay-reply 消息中消息字段的使用.
msg-type: RELAY-REPL (13). 这是一个 1-octet 字段.
hop-count: 从 Relay-forward 消息复制. 这是一个 1-octet 字段.
link-address: 从 Relay-forward 消息复制. 这是一个 16-octet 字段.
peer-address: 从 Relay-forward 消息复制. 这是一个 16-octet 字段.
options: 必须包含 Relay Message option (见第 21.10 节); 可以包含其他 options, 例如 Interface-Id option (见第 21.18 节). 这是一个可变长度字段, 长度为消息大小减去 34 octets.