Java DatagramSocket اور SOCKS5 UDP ریلے
سمجھیں کہ Java UDP ساکٹ کو SOCKS5 UDP عمل درآمد کی ضرورت کیوں ہے، چاہے TCP کنکشن پہلے ہی SOCKS استعمال کرتے ہوں۔
آپ کی 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 میں ترسیل کی ضمانتیں شامل نہیں کرتی۔ راستہ بدلنے کے بعد بھی آپ کی ایپلیکیشن کی اپنی ٹائم آؤٹ، نقصان کی سنبھال اور پیغام کے حجم کی حدود لاگو رہتی ہیں۔