आपका Java HTTP अनुरोध SOCKS से होकर काम करता है, फिर भी कोई UDP सुविधा ट्रैफ़िक सीधे भेजती रहती है या विफल हो जाती है। JVM के SOCKS गुण सेट करने से DatagramSocket को SOCKS5 UDP कार्यान्वयन नहीं मिलता।

DatagramSocket API नेटवर्क एंडपॉइंट पर पता किए गए डेटाग्राम भेजता और प्राप्त करता है। इसकी connect() विधि उस सॉकेट के लिए एक सहकर्मी चुनती है। यह सहकर्मी के साथ कोई SOCKS वार्ता नहीं करती।

SOCKS5 UDP मार्ग में अतिरिक्त काम होता है

SOCKS5 एक UDP संबंध परिभाषित करता है जो TCP नियंत्रण कनेक्शन पर स्थापित होता है। फिर क्लाइंट प्रॉक्सी द्वारा दिए गए रिले पते के साथ एनकैप्सुलेटेड डेटाग्राम का आदान-प्रदान करता है। प्रत्येक एनकैप्सुलेटेड संदेश अपना गंतव्य बताता है। क्लाइंट कार्यान्वयन को उस फ़्रेमिंग और नियंत्रण कनेक्शन के जीवनकाल को संभालना होता है।

किसी सामान्य UDP सॉकेट को प्रॉक्सी के TCP सुनने वाले पोर्ट की ओर इंगित करना उन चरणों को छोड़ देता है। आपके एप्लिकेशन के कच्चे डेटाग्राम उस पते पर भेजना संबंध का विकल्प नहीं है।

ऐसी लाइब्रेरी या एप्लिकेशन सुविधा चुनें जो स्पष्ट रूप से SOCKS5 UDP रिले का समर्थन करती हो, और पुष्टि करें कि सर्वर भी इसका समर्थन करता है। SOCKS समर्थन का विज्ञापन करने वाली लाइब्रेरी केवल TCP CONNECT लागू कर सकती है। प्रोटोकॉल विनिर्देश इन कमांडों को अलग करता है।

UDP रिले को भी एक उपयोगी मार्ग चाहिए

प्रॉक्सी से सफल TCP कनेक्शन केवल नियंत्रण मार्ग स्थापित करता है। फ़ायरवॉल या NAT व्यवहार रिले को भेजे गए डेटाग्राम में अभी भी बाधा डाल सकते हैं। यह निष्कर्ष निकालने से पहले कि एप्लिकेशन गंतव्य ऑफ़लाइन है, लौटाया गया रिले एंडपॉइंट और कोई भी रिले त्रुटि एकत्र करें।

अंत में, SOCKS परिवहन समर्थन UDP में डिलीवरी की गारंटी नहीं जोड़ता। मार्ग बदलने के बाद भी आपके एप्लिकेशन के अपने टाइमआउट, हानि प्रबंधन और संदेश-आकार की सीमाएँ लागू रहती हैं।

संबंधित लेख