INTEGRITY Dokumentace

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;
};