Java DatagramSocket i SOCKS5 UDP preusmjeravanje
Shvatite zašto Java UDP socketu treba SOCKS5 UDP implementacija čak i kada TCP veze već koriste SOCKS.
Vaš Java HTTP zahtjev radi kroz SOCKS, ali UDP funkcija i dalje šalje saobraćaj direktno ili ne uspijeva. 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() odabire partnera za taj socket. Ona ne obavlja SOCKS pregovaranje s partnerom.
SOCKS5 UDP ruta zahtijeva dodatni rad
SOCKS5 definira UDP asocijaciju uspostavljenu preko TCP kontrolne veze. Klijent zatim razmjenjuje inkapsulirane datagrame s adresom posrednika koju daje proxy. Svaka inkapsulirana poruka identificira svoje odredište. Implementacija klijenta mora obraditi to uokvirivanje i trajanje kontrolne veze.
Usmjeravanje 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 zamjena za asocijaciju.
Odaberite 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 implementirati samo TCP CONNECT. Specifikacija protokola razlikuje te komande.
UDP posredniku je također potrebna iskoristiva putanja
Uspješna TCP veza s 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 prije nego što zaključite da je odredište aplikacije izvan mreže.
Konačno, SOCKS podrška za prijenos ne dodaje garancije dostave UDP-u. Vlastita vremenska ograničenja vaše aplikacije, rukovanje gubicima i ograničenja veličine poruka i dalje vrijede nakon promjene rute.