Asio TCP सॉकेट को SOCKS5 श्रोता से जोड़ना एक ही चरण पूरा करता है: उस श्रोता से TCP कनेक्शन। यह प्रॉक्सी से अंतिम सर्वर से जुड़ने को नहीं कहता। अनुमत सार्वजनिक लक्ष्य परीक्षण के लिए SOCKS5 प्रॉक्सी सूची उस पहले TCP एंडपॉइंट के लिए उम्मीदवार देती है; कनेक्टर को नीचे दिया गया एक्सचेंज पूरा करना ही होगा।

इसके बाद SOCKS5 कनेक्टर को प्रोटोकॉल एक्सचेंज चलाना होगा:

  1. संस्करण 5 का अभिवादन भेजें जिसमें क्लाइंट द्वारा समर्थित प्रमाणीकरण विधियाँ सूचीबद्ध हों।
  2. चुनी गई विधि पढ़ें और आवश्यक होने पर उसका प्रमाणीकरण एक्सचेंज करें।
  3. गंतव्य का पता प्रकार, पता और नेटवर्क बाइट क्रम वाला पोर्ट लेकर CONNECT भेजें।
  4. उत्तर पढ़ें, उसका संस्करण और परिणाम कोड जाँचें, और पूरा परिवर्तनीय लंबाई वाला बद्ध पता और पोर्ट उपभोग करें।
  5. स्थापित स्ट्रीम को एप्लिकेशन के प्रोटोकॉल को सौंपें।

socks5::async_proxy_connect नामक सहायक उस SOCKS कार्यान्वयन का है जो वह सहायक देता है। boost::asio के साथ इसका नाम लेने से यह Asio के TCP सॉकेट इंटरफ़ेस का हिस्सा नहीं बन जाता।

TCP रीड उत्तर का केवल एक भाग लौटा सकती हैं। आवश्यक बाइट संख्याओं के लिए रीड संयोजित करें, फिर शेष लंबाई पता-प्रकार फ़ील्ड से चुनें। यह न मानें कि हर सर्वर उत्तर का निश्चित IPv4 लेआउट होता है।

HTTPS के लिए SOCKS CONNECT सफल होने के बाद गंतव्य का TLS हैंडशेक करें, गंतव्य का SNI और होस्टनाम सत्यापन बनाए रखते हुए। केवल सफल प्रॉक्सी उत्तर वेबसाइट को प्रमाणित नहीं करता।

पूरे सेटअप क्रम में रद्दीकरण और समयसीमाएँ बनाए रखें। यदि TCP कनेक्शन स्थापित करने का समय समाप्त हो जाए, तो बाद के अभिवादन, प्रमाणीकरण और CONNECT एक्सचेंज अनियंत्रित रह जाते हैं।

संबंधित लेख