Java DatagramSocket in posredovanje UDP prek SOCKS5
Razumite, zakaj Java vtičnica UDP potrebuje izvedbo SOCKS5 UDP, tudi ko povezave TCP že uporabljajo SOCKS.
Vaša zahteva HTTP v Javi deluje prek SOCKS, vendar funkcija UDP še vedno pošilja promet neposredno ali spodleti. Nastavitev lastnosti SOCKS v JVM ne da DatagramSocket izvedbe SOCKS5 UDP.
API DatagramSocket pošilja in prejema datagrame, naslovljene na omrežne končne točke. Njegova metoda connect() izbere partnerja za to vtičnico. Ne izvaja pogajanj SOCKS s partnerjem.
Pot UDP prek SOCKS5 zahteva dodatno delo
SOCKS5 določa povezavo UDP, vzpostavljeno prek krmilne povezave TCP. Nato odjemalec izmenjuje ovite datagrame z naslovom posredovanja, ki ga zagotovi posrednik. Vsako ovito sporočilo navaja svoj cilj. Izvedba odjemalca mora obvladati to uokvirjanje in življenjsko dobo krmilne povezave.
Usmerjanje običajne vtičnice UDP na vrata TCP, kjer posrednik posluša, te korake preskoči. Pošiljanje surovih datagramov vaše aplikacije na ta naslov ne nadomesti povezave.
Izberite knjižnico ali funkcijo aplikacije, ki izrecno podpira posredovanje UDP prek SOCKS5, in potrdite, da jo podpira tudi strežnik. Knjižnica, ki oglašuje podporo SOCKS, morda izvaja le TCP CONNECT. Specifikacija protokola razlikuje ta ukaza.
Tudi posredovanje UDP potrebuje uporabno pot
Uspešna povezava TCP s posrednikom vzpostavi le krmilno pot. Požarni zidovi ali vedenje NAT lahko še vedno motijo datagrame, poslane v posredovanje. Zberite vrnjeno končno točko posredovanja in morebitno napako posredovanja, preden sklepate, da je cilj aplikacije brez povezave.
Nazadnje, podpora transporta SOCKS ne doda UDP nobenih zagotovil dostave. Lastni časovni omejitvi vaše aplikacije, obravnava izgub in omejitve velikosti sporočil še vedno veljajo po spremembi poti.