Java DatagramSocket at SOCKS5 UDP Relay
Unawain kung bakit kailangan ng isang Java UDP socket ang implementasyon ng SOCKS5 UDP kahit gumagamit na ng SOCKS ang mga koneksyon ng TCP.
Gumagana ang iyong Java HTTP request sa SOCKS, ngunit ang isang feature ng UDP ay direktang nagpapadala ng trapiko o nabibigo. Ang pagtatakda ng mga property ng SOCKS ng JVM ay hindi nagbibigay sa DatagramSocket ng implementasyon ng SOCKS5 UDP.
Ang DatagramSocket API ay nagpapadala at tumatanggap ng mga datagram na nakatugon sa mga endpoint ng network. Pinipili ng method nitong connect() ang isang peer para sa socket na iyon. Hindi ito nagsasagawa ng negosasyon ng SOCKS sa peer.
Ang rutang SOCKS5 UDP ay nangangailangan ng karagdagang trabaho
Tinutukoy ng SOCKS5 ang asosasyon ng UDP na itinatag sa ibabaw ng koneksyon ng kontrol ng TCP. Pagkatapos ay nagpapalitan ang kliyente ng mga nakabalot na datagram sa address ng relay na ibinibigay ng proxy. Tinutukoy ng bawat nakabalot na mensahe ang destinasyon nito. Kailangang pangasiwaan ng implementasyon ng kliyente ang pagkakabalot na iyon at ang tagal ng koneksyon ng kontrol.
Ang pagturo ng ordinaryong UDP socket sa port ng pakikinig ng TCP ng proxy ay lumalaktaw sa mga hakbang na iyon. Ang pagpapadala ng mga raw na datagram ng iyong application sa address na iyon ay hindi kapalit ng asosasyon.
Pumili ng library o feature ng application na tahasang sumusuporta sa SOCKS5 UDP relay, at tiyakin na sinusuportahan din ito ng server. Ang library na nag-aanunsyo ng suporta sa SOCKS ay maaaring magpatupad lamang ng TCP CONNECT. Pinag-iiba ng ispesipikasyon ng protocol ang mga command na iyon.
Ang UDP relay ay nangangailangan din ng magagamit na landas
Ang matagumpay na koneksyon ng TCP sa proxy ay nagtatatag lamang ng landas ng kontrol. Ang mga firewall o pag-uugali ng NAT ay maaari pa ring makagambala sa mga datagram na ipinadala sa relay. Ipunin ang ibinalik na endpoint ng relay at anumang error sa relay bago maghinuha na ang destinasyon ng application ay offline.
Panghuli, ang suporta sa transportasyon ng SOCKS ay hindi nagdaragdag ng mga garantiya ng paghahatid sa UDP. Ang sariling mga timeout ng iyong application, paghawak ng pagkawala at mga limitasyon sa laki ng mensahe ay nalalapat pa rin pagkatapos magbago ang ruta.