← Cloudflare Spectrum / spectrum / reference
Hlavička Simple Proxy Protocol
Zdrojová IP adresa a port klienta jsou zakódovány v hlavičce s pevnou délkou 38 oktetů, která se připojuje před payload každého proxovaného UDP datagramu ve formátu popsaném níže.
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... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Obsah hlavičky je uveden níže.
Magické číslo
16bitová pevná hodnota nastavená na 0x56EC pro SPP. Toto pole slouží k identifikaci protokolu SPP a jeho 38bajtové hlavičky SPP.
Adresa klienta
128bitová adresa odesílatele proxovaného UDP datagramu, tedy klienta. Jde o adresu IPv6, pokud klient použil adresování IPv6, nebo o adresu IPv6 mapovanou z IPv4 (viz RFC 4291 ↗) v případě klienta s IPv4.
Adresa proxy
128bitová adresa příjemce proxovaného UDP datagramu, tedy proxy. Obsah by měl být interpretován stejným způsobem jako Client Address.
Port klienta
16bitové číslo zdrojového portu proxovaného UDP datagramu, tedy číslo portu UDP, ze kterého klient datagram odeslal.
Port proxy
16bitové číslo cílového portu proxovaného UDP datagramu, tedy číslo portu UDP, na kterém proxy datagram přijala.
Payload
Data následující za hlavičkou přenášenou datagramem. Magické číslo, adresy a čísla portů jsou kódovány v pořadí bajtů podle sítě (network byte order).
Odpovídající struktura jazyka C popisující hlavičku vypadá takto:
struct {
uint16_t magic;
uint8_t client_addr[16];
uint8_t proxy_addr[16];
uint16_t client_port;
uint16_t proxy_port;
};