SOCKS5 درخواست کو HTTP سرنگ میں ترجمہ کرنا
والد کے ساتھ CONNECT کا تبادلہ مکمل کریں، کلائنٹ کو SOCKS جواب واپس بھیجیں اور اس کے بعد ہی ایپلیکیشن کے بائٹس آگے بھیجیں۔
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 ریکارڈ سمجھنے کی بھی ضرورت نہیں۔ اس کا پروٹوکول کام دونوں سرنگ مذاکرات قائم کرنا اور ترجمہ کرنا تھا۔