Java DatagramSocket i SOCKS5 UDP preusmjeravanje
Shvatite zašto Java UDP socket treba SOCKS5 UDP implementaciju čak i kada TCP veze već koriste SOCKS.
Vaš Java HTTP zahtjev radi kroz SOCKS, ali UDP značajka još uvijek šalje promet izravno 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 toč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 poslužitelj. Biblioteka koja oglašava SOCKS podršku može implementirati samo TCP CONNECT. Specifikacija protokola razlikuje te naredbe.
UDP posredniku je također potreban iskoristiv put
Uspješna TCP veza s proxyjem uspostavlja samo kontrolni put. Vatrozidi ili ponašanje NAT-a i dalje mogu ometati datagrame poslane posredniku. Prikupite vraćenu krajnju točku posrednika i svaku pogrešku posredovanja prije nego što zaključite da je odredište aplikacije izvan mreže.
Konačno, SOCKS podrška za prijenos ne dodaje jamstva dostave UDP-u. Vlastita vremenska ograničenja vaše aplikacije, rukovanje gubicima i ograničenja veličine poruka i dalje vrijede nakon promjene rute.