コンテンツにスキップ

シンプルプロキシプロトコルヘッダー

クライアントのソース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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| マジックナンバー | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
+ +
| |
+ クライアントアドレス +
| |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
+ +
| |
+ プロキシアドレス +
| |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | クライアントポート |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| プロキシポート | ペイロード... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

ヘッダーの内容は以下の通りです。

マジックナンバー

SPPのために0x56ECに設定された16ビットの固定値。このフィールドは、SPPプロトコルとそのSPP 38バイトヘッダーを識別するために使用されるべきです。

クライアントアドレス

プロキシされたUDPデータグラムの発信者の128ビットアドレス、すなわちクライアント。クライアントがIPv6アドレッシングを使用した場合はIPv6アドレス、IPv4クライアントの場合はIPv4マッピングされたIPv6アドレス(RFC 4291を参照)です。

プロキシアドレス

プロキシされたUDPデータグラムの受信者の128ビットアドレス、すなわちプロキシ。内容はクライアントアドレスと同様に解釈されるべきです。

クライアントポート

プロキシされたUDPデータグラムの16ビットソースポート番号。言い換えれば、クライアントがデータグラムを送信したUDPポート番号です。

プロキシポート

プロキシされたUDPデータグラムの16ビット宛先ポート番号。言い換えれば、プロキシがデータグラムを受信したUDPポート番号です。

ペイロード

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

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

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