シンプルプロキシプロトコルヘッダー
クライアントのソース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;};