Java DatagramSocket va SOCKS5 orqali UDP uzatish
TCP ulanishlari allaqachon SOCKS ishlatayotgan bo‘lsa ham, Java UDP soketi uchun nima uchun SOCKS5 UDP tatbiqi kerakligini tushuning.
Java HTTP so‘rovingiz SOCKS orqali ishlaydi, lekin UDP funksiyasi hali ham trafikni to‘g‘ridan-to‘g‘ri yuboradi yoki muvaffaqiyatsiz tugaydi. JVM ning SOCKS xususiyatlarini o‘rnatish DatagramSocket ga SOCKS5 UDP tatbiqini bermaydi.
DatagramSocket API tarmoq oxirgi nuqtalariga manzillangan datagrammalarni yuboradi va qabul qiladi. Uning connect() usuli o‘sha soket uchun sherik tanlaydi. U sherik bilan SOCKS muzokaralarini o‘tkazmaydi.
SOCKS5 UDP yo‘nalishi qo‘shimcha ish talab qiladi
SOCKS5 TCP boshqaruv ulanishi ustida o‘rnatiladigan UDP birlashmasini belgilaydi. So‘ngra mijoz proksi taqdim etgan uzatish manzili bilan qadoqlangan datagrammalarni almashadi. Har bir qadoqlangan xabar o‘z manzilini ko‘rsatadi. Mijoz tatbiqi bu qadoqlashni va boshqaruv ulanishining umrini boshqarishi kerak.
Oddiy UDP soketini proksining TCP tinglash portiga yo‘naltirish bu qadamlarni o‘tkazib yuboradi. Ilovangizning xom datagrammalarini o‘sha manzilga yuborish birlashmani almashtirmaydi.
SOCKS5 UDP uzatishni aniq qo‘llab-quvvatlaydigan kutubxona yoki ilova funksiyasini tanlang va server ham uni qo‘llab-quvvatlashini tasdiqlang. SOCKS qo‘llab-quvvatlashini e’lon qilgan kutubxona faqat TCP CONNECT ni tatbiq qilishi mumkin. Protokol spetsifikatsiyasi bu buyruqlarni ajratadi.
UDP uzatish uchun ham yaroqli yo‘l kerak
Proksiga muvaffaqiyatli TCP ulanish faqat boshqaruv yo‘lini o‘rnatadi. Xavfsizlik devorlari yoki NAT xatti-harakati uzatishga yuborilgan datagrammalarga hali ham xalaqit berishi mumkin. Ilova manzili oflayn degan xulosaga kelishdan oldin qaytarilgan uzatish oxirgi nuqtasini va har qanday uzatish xatosini to‘plang.
Nihoyat, SOCKS transport qo‘llab-quvvatlashi UDP ga yetkazib berish kafolatlarini qo‘shmaydi. Yo‘nalish o‘zgargandan keyin ham ilovangizning o‘z taym-autlari, yo‘qotishlarni qayta ishlash va xabar hajmi cheklovlari amal qiladi.