Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Simple Proxy Protocol ヘッダー

最終更新 Markdown で表示Agent セットアップ

クライアントの送信元 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

SPP 用に 0x56EC が設定される 16 ビットの固定値です。このフィールドで SPP プロトコルと、38 バイトの SPP ヘッダーを識別してください。

Client Address

プロキシされる UDP データグラムの送信元、つまりクライアントの 128 ビットアドレスです。クライアントが IPv6 を使った場合は IPv6 アドレス、IPv4 クライアントの場合は IPv4 マップ済み IPv6 アドレス(RFC 4291 を参照)です。

Proxy address

プロキシされる UDP データグラムの受信者、つまりプロキシの 128 ビットアドレスです。解釈方法は Client Address と同じです。

Client port

プロキシされる UDP データグラムの 16 ビット送信元ポート番号です。つまり、クライアントがデータグラムを送出した UDP ポート番号です。

Proxy port

プロキシされる UDP データグラムの 16 ビット宛先ポート番号です。つまり、プロキシがデータグラムを受信した UDP ポート番号です。

Payload

ヘッダーに続く、データグラムが運ぶデータです。 マジックナンバー、アドレス、ポート番号はネットワークバイトオーダーでエンコードされます。

ヘッダーを表す対応する C 構造体は次のとおりです。

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

役に立ちましたか?