Java DatagramSocket i SOCKS5 UDP preusmeravanje
Shvatite zašto Java UDP soketu treba SOCKS5 UDP implementacija čak i kada TCP veze već koriste SOCKS.
Vaš Java HTTP zahtev radi kroz SOCKS, ali UDP funkcija i dalje šalje saobraćaj direktno ili ne uspeva. Postavljanje SOCKS svojstava JVM-a ne daje DatagramSocket SOCKS5 UDP implementaciju.
DatagramSocket API šalje i prima datagrame adresirane na mrežne krajnje tačke. Njegova metoda connect() bira partnera za taj socket. Ona ne obavlja SOCKS pregovaranje sa partnerom.
SOCKS5 UDP ruta zahteva dodatni rad
SOCKS5 definiše UDP asocijaciju uspostavljenu preko TCP kontrolne veze. Klijent zatim razmenjuje inkapsulirane datagrame sa adresom posrednika koju daje proxy. Svaka inkapsulirana poruka identifikuje svoje odredište. Implementacija klijenta mora da obradi to uokvirivanje i trajanje kontrolne veze.
Usmeravanje običnog UDP socketa na proxyjev TCP port za slušanje preskače te korake. Slanje sirovih datagrama vaše aplikacije na tu adresu nije zamena za asocijaciju.
Izaberite biblioteku ili funkciju aplikacije koja izričito podržava SOCKS5 UDP posredovanje i potvrdite da ga podržava i server. Biblioteka koja oglašava SOCKS podršku može da implementira samo TCP CONNECT. Specifikacija protokola razlikuje te komande.
UDP posredniku je takođe potrebna iskoristiva putanja
Uspešna TCP veza sa proxyjem uspostavlja samo kontrolnu putanju. Vatrozidi ili ponašanje NAT-a i dalje mogu ometati datagrame poslane posredniku. Prikupite vraćenu krajnju tačku posrednika i svaku grešku posredovanja pre nego što zaključite da je odredište aplikacije van mreže.
Konačno, SOCKS podrška za prenos ne dodaje garancije dostave UDP-u. Sopstvena vremenska ograničenja vaše aplikacije, rukovanje gubicima i ograničenja veličine poruka i dalje važe nakon promene rute.