Java DatagramSocket және SOCKS5 арқылы UDP релесі
TCP қосылымдары SOCKS-ты қолданып жатса да, Java UDP сокетіне не үшін SOCKS5 UDP іске асыруы қажет екенін түсініңіз.
Java HTTP сұрауыңыз SOCKS арқылы жұмыс істейді, бірақ UDP мүмкіндігі әлі де трафикті тікелей жібереді немесе сәтсіз аяқталады. JVM-нің SOCKS қасиеттерін орнату DatagramSocket үшін SOCKS5 UDP іске асыруын бермейді.
DatagramSocket API желілік соңғы нүктелерге адрестелген датаграммаларды жібереді және қабылдайды. Оның connect() әдісі сол сокет үшін серіктес таңдайды. Ол серіктеспен SOCKS келіссөзін жүргізбейді.
SOCKS5 UDP маршруты қосымша жұмысты қажет етеді
SOCKS5 TCP басқару қосылымының үстінде орнатылатын UDP бірлестігін анықтайды. Содан кейін клиент прокси ұсынған реле мекенжайымен қапталған датаграммаларды алмастырады. Әрбір қапталған хабарлама өз межелісін көрсетеді. Клиенттік іске асыру сол қаптамалауды және басқару қосылымының өмір сүру ұзақтығын өңдеуі керек.
Кәдімгі UDP сокетін проксидің TCP тыңдау портына бағыттау бұл қадамдарды өткізіп жібереді. Қолданбаңыздың шикі датаграммаларын сол мекенжайға жіберу бірлестікті алмастырмайды.
SOCKS5 UDP релесін анық қолдайтын кітапхананы немесе қолданба мүмкіндігін таңдаңыз және сервердің де оны қолдайтынын растаңыз. SOCKS қолдауын жарнамалайтын кітапхана тек TCP CONNECT-ті іске асыруы мүмкін. Хаттама сипаттамасы бұл командаларды ажыратады.
UDP релесіне де жарамды жол қажет
Проксиге сәтті TCP қосылымы тек басқару жолын орнатады. Желілік қалқандар немесе NAT тәртібі релеге жіберілген датаграммаларға әлі де кедергі келтіруі мүмкін. Қолданба межелісі желіден тыс деп қорытынды жасамас бұрын қайтарылған реле соңғы нүктесін және кез келген реле қатесін жинаңыз.
Соңында, SOCKS көлік қолдауы UDP-ге жеткізу кепілдіктерін қоспайды. Маршрут өзгергеннен кейін де қолданбаңыздың өз тайм-ауттары, жоғалтуларды өңдеу және хабарлама өлшемінің шектеулері күшінде қалады.