跳转到内容
搜索文档

Simple Proxy Protocol 标头

最后更新 查看 MarkdownAgent 设置

客户端的源 IP 和端口被编码在固定长度(38 个八位字节长)的标头中,并以下面描述的格式附加到每个代理的 UDP 数据报的有效负载前面。

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Magic Number         |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                                                               |
+                                                               +
|                                                               |
+                         Client Address                        +
|                                                               |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                                                               |
+                                                               +
|                                                               |
+                         Proxy Address                         +
|                                                               |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |         Client Port           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Proxy Port          |          Payload...           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

标头的内容如下:

Magic Number

16 位固定值,对于 SPP 设置为 0x56EC。此字段应该用于识别 SPP 协议及其 SPP 38 字节标头。

Client Address

代理 UDP 数据报的始发者(即客户端)的 128 位地址。如果客户端使用 IPv6 寻址,则是 IPv6 地址;如果是 IPv4 客户端,则是 IPv4 映射的 IPv6 地址(参阅 RFC 4291)。

代理地址

代理 UDP 数据报的接收者(即代理)的 128 位地址。内容应该以与 Client Address 相同的方式进行解释。

客户端端口

代理 UDP 数据报的 16 位源端口号。换句话说,就是客户端用来发送数据报的 UDP 端口号。

代理端口

代理 UDP 数据报的 16 位目标端口号。换句话说,就是代理接收该数据报的 UDP 端口号。

Payload

数据报所携带的标头后面的数据。 Magic number (魔数)、地址和端口号均以网络字节序 (network byte order) 编码。

描述该标头的相应 C 语言结构如下:

struct {
    uint16_t magic;
    uint8_t  client_addr[16];
    uint8_t  proxy_addr[16];
    uint16_t client_port;
    uint16_t proxy_port;
};

这篇文档对您有帮助吗?