SOCKS5 فرنٹ اینڈ HTTP پراکسی کو اپنی اگلی ترسیل کے طور پر استعمال کر سکتا ہے۔ یہ کلائنٹ کی جانب SOCKS سرور اور والد کی جانب HTTP CONNECT کلائنٹ کے طور پر کام کرتا ہے۔ دونوں کنٹرول تبادلے ایپلیکیشن کے بہاؤ سے پہلے ختم ہو جاتے ہیں۔

SOCKS CONNECT درخواست پہلے ہی منزل کا ہوسٹ یا پتہ اور پورٹ فراہم کرتی ہے۔ والد کے ساتھ ایک مثالی HTTP/1.1 تبادلے کے لیے:

client → adapter: SOCKS5 CONNECT service.example.net:443
adapter → parent:
    CONNECT service.example.net:443 HTTP/1.1
    Host: service.example.net:443

parent → adapter: HTTP/1.1 200 Connection Established
                 [end of headers]
adapter → client: SOCKS5 success reply

client ↔ adapter ↔ parent ↔ service: application bytes

حد پر نتیجے کا ترجمہ کریں

اڈاپٹر والد کی طرف سے درکار کسی بھی توثیق کو مکمل کرتا ہے اور CONNECT کے نتیجے کا انتظار کرتا ہے۔ کامیاب 2xx جواب والد کی سرنگ قائم کرتا ہے۔ اسی کے بعد اسے متعلقہ SOCKS کامیابی کا جواب نیچے والے کلائنٹ کو واپس بھیجنا چاہیے۔

اگر والد کارروائی مسترد کرے تو متعین SOCKS ناکامی کا جواب بھیجیں، پھر کلائنٹ کا کنکشن فوراً ختم کریں۔ SOCKS5 ناکامی کی نشاندہی کے دس سیکنڈ کے اندر اس بندش کا تقاضا کرتا ہے۔ والد کی HTTP حیثیت کو اڈاپٹر کے لیے تشخیصی معلومات کے طور پر رکھیں۔ اس حیثیت کی سطر کو ایپلیکیشن ڈیٹا کے طور پر بھیجنا ایسے بہاؤ میں HTTP کنٹرول پیغام ڈال دے گا جس کا کلائنٹ SOCKS فریمنگ کی توقع رکھتا ہے۔

کامیاب CONNECT نتیجے سے پہلے والد اب بھی HTTP بولتا ہے، بشمول کسی بھی چیلنج یا خرابی کے جواب کی فریمنگ۔ کامیاب نتیجے کے ہیڈر جدا کنندہ کے بعد کنکشن سرنگ بن جاتا ہے؛ پہلے استعمال کرنے کے لیے کوئی HTTP جوابی باڈی نہیں ہوتی۔

ہیڈرز کے بعد کے بائٹس محفوظ رکھیں

ایک قراوت میں والد کے ہیڈرز کا اختتام اور منزل سے آنے والے بائٹس اکٹھے ہو سکتے ہیں۔ وہ اضافی بائٹس نیچے والی ایپلیکیشن کے لیے رکھیں۔ سرور پہلے بولنے والے پروٹوکول اپنا کنکشن کھلتے ہی سلام کر سکتے ہیں۔

SOCKS کامیابی کا جواب بھیجنے کے بعد، ایپلیکیشن کا بہاؤ دونوں سمتوں میں آگے بھیجیں۔ اڈاپٹر کو ایک کلائنٹ پیغام کے بدلے ایک سرور پیغام بدلنے کی ضرورت نہیں، اور انہیں آگے بھیجنے کے لیے TLS ریکارڈ سمجھنے کی بھی ضرورت نہیں۔ اس کا پروٹوکول کام دونوں سرنگ مذاکرات قائم کرنا اور ترجمہ کرنا تھا۔

متعلقہ مضامین