0.0.0.0:0 w żądaniu Indy UDP ASSOCIATE może być zamierzone. To żądanie opisuje oczekiwany punkt końcowy UDP po stronie klienta, a RFC 1928 dopuszcza zera, gdy jest nieznany. Nie wybiera usługi końcowej.

BND.ADDR/BND.PORT w odpowiedzi wskazuje przekaźnik, do którego klient wysyła enkapsulowane datagramy.

TCP control: client → SOCKS5 proxy → UDP association reply
UDP payload: client → returned relay address → target service

W Indy TIdUDPClient.Connect wywołuje OpenUDP przezroczystego proxy. TIdSocksInfo dostarcza pola zerowego skojarzenia. Później SendBuffer przekazuje żądaną usługę do SendToUDP, który buduje nagłówek celu SOCKS UDP przed danymi aplikacji.

Jeśli skojarzenie się powiedzie, ale ruch zawodzi, sprawdź zwrócony przekaźnik, zakodowany cel i ścieżkę odpowiedzi UDP. NAT/zapory mogą przepuszczać wymianę TCP, blokując UDP.

Utrzymuj połączenie sterujące TCP otwarte; jego zamknięcie kończy skojarzenie. SOCKS4/4a nie mają tej operacji, a sama nazwa SOCKS5 nie gwarantuje, że serwer obsługuje UDP.

Powiązane artykuły