Java DatagramSocket និងការបញ្ជូន UDP តាម SOCKS5
ស្វែងយល់ពីមូលហេតុដែល UDP socket របស់ Java ត្រូវការការអនុវត្ត SOCKS5 UDP ទោះបីជាការតភ្ជាប់ TCP ប្រើ SOCKS រួចហើយក៏ដោយ។
សំណើ HTTP របស់ Java ដំណើរការតាម SOCKS ប៉ុន្តែមុខងារ UDP នៅតែផ្ញើចរាចរណ៍ដោយផ្ទាល់ ឬបរាជ័យ។ ការកំណត់លក្ខណសម្បត្តិ SOCKS របស់ JVM មិនផ្តល់ឱ្យ DatagramSocket នូវការអនុវត្ត SOCKS5 UDP ទេ។
API DatagramSocket ផ្ញើ និងទទួល datagram ដែលមានអាសយដ្ឋានទៅចំណុចចុងបញ្ចប់បណ្តាញ។ វិធីសាស្ត្រ connect() របស់វាជ្រើសដៃគូសម្រាប់ socket នោះ។ វាមិនធ្វើការចរចា SOCKS ជាមួយដៃគូទេ។
ផ្លូវ UDP តាម SOCKS5 ត្រូវការការងារបន្ថែម
SOCKS5 កំណត់ ការភ្ជាប់ UDP ដែលបង្កើតលើការតភ្ជាប់គ្រប់គ្រង TCP។ បន្ទាប់មកអតិថិជន ផ្លាស់ប្តូរ datagram ដែលរុំព័ទ្ធជាមួយអាសយដ្ឋានបញ្ជូនដែល proxy ផ្តល់ឱ្យ។ សារដែលរុំព័ទ្ធនីមួយៗ កំណត់គោលដៅរបស់វា។ ការអនុវត្តអតិថិជនត្រូវគ្រប់គ្រងការរុំព័ទ្ធនេះ និងអាយុកាលនៃការតភ្ជាប់គ្រប់គ្រង។
ការចង្អុល UDP socket ធម្មតាទៅកាន់ច្រកស្តាប់ TCP របស់ proxy រំលងជំហានទាំងនោះ។ ការផ្ញើ datagram ដើមរបស់កម្មវិធីអ្នកទៅអាសយដ្ឋាននោះមិនមែនជាការជំនួសការភ្ជាប់នោះទេ។
ជ្រើសបណ្ណាល័យ ឬមុខងារកម្មវិធីដែលគាំទ្រការបញ្ជូន UDP តាម SOCKS5 យ៉ាងច្បាស់ ហើយបញ្ជាក់ថា ម៉ាស៊ីនមេក៏គាំទ្រវាដែរ។ បណ្ណាល័យដែលផ្សព្វផ្សាយការគាំទ្រ SOCKS អាចអនុវត្តតែ TCP CONNECT ប៉ុណ្ណោះ។ លក្ខណៈបច្ចេកទេសពិធីការបែងចែកពាក្យបញ្ជាទាំងនោះ។
ការបញ្ជូន UDP ក៏ត្រូវការផ្លូវដែលអាចប្រើបានដែរ
ការតភ្ជាប់ TCP ជោគជ័យទៅ proxy បង្កើតតែផ្លូវគ្រប់គ្រងប៉ុណ្ណោះ។ ជញ្ជាំងភ្លើង ឬឥរិយាបថ NAT នៅតែអាចរារាំង datagram ដែលផ្ញើទៅកាន់ការបញ្ជូន។ ប្រមូលចំណុចចុងបញ្ចប់នៃការបញ្ជូនដែលបានត្រឡប់មកវិញ និងកំហុសបញ្ជូនណាមួយ មុនពេលសន្និដ្ឋានថាគោលដៅកម្មវិធីនៅក្រៅបណ្តាញ។
ចុងក្រោយ ការគាំទ្រការដឹកជញ្ជូន SOCKS មិនបន្ថែមការធានាការដឹកជញ្ជូនទៅ UDP ទេ។ ពេលវេលាកំណត់ របស់កម្មវិធីអ្នក ការដោះស្រាយការបាត់បង់ និងដែនកំណត់ទំហំសារ នៅតែអនុវត្តបន្ទាប់ពីផ្លូវបានផ្លាស់ប្តូរ។