প্রক্সিতে সংযোগের পর Asio-র SOCKS5 বিনিময় দরকার
Asio সকেটের উপর SOCKS5-কে প্রোটোকল অবস্থা যন্ত্র হিসেবে দেখুন; সম্পূর্ণ পাঠ, যাচাইকৃত উত্তর এবং CONNECT সফল হওয়ার পরেই গন্তব্যের TLS।
একটি Asio TCP সকেটকে SOCKS5 শ্রোতার সঙ্গে সংযোগ করলে একটি ধাপ সম্পূর্ণ হয়: সেই শ্রোতার সঙ্গে TCP সংযোগ। এটি প্রক্সিকে চূড়ান্ত সার্ভারের সঙ্গে সংযোগ করতে বলে না। অনুমোদিত সার্বজনীন লক্ষ্য পরীক্ষার জন্য SOCKS5 প্রক্সি তালিকা সেই প্রথম TCP এন্ডপয়েন্টের জন্য প্রার্থী দেয়; সংযোগকারীকে নিচের বিনিময়টি সম্পূর্ণ করতেই হবে।
এরপর SOCKS5 সংযোগকারীকে প্রোটোকল বিনিময়টি চালাতে হবে:
- ক্লায়েন্ট যে প্রমাণীকরণ পদ্ধতি সমর্থন করে তার তালিকাসহ সংস্করণ 5-এর অভিবাদন পাঠান।
- নির্বাচিত পদ্ধতিটি পড়ুন এবং প্রয়োজন হলে তার প্রমাণীকরণ বিনিময় সম্পাদন করুন।
- গন্তব্যের ঠিকানা-ধরন, ঠিকানা ও নেটওয়ার্ক বাইট ক্রমের পোর্টসহ CONNECT পাঠান।
- উত্তরটি পড়ুন, তার সংস্করণ ও ফলাফল কোড যাচাই করুন, এবং সম্পূর্ণ পরিবর্তনশীল দৈর্ঘ্যের বাঁধা ঠিকানা ও পোর্ট গ্রহণ করুন।
- প্রতিষ্ঠিত স্ট্রিমটি অ্যাপ্লিকেশনের প্রোটোকলে দিন।
socks5::async_proxy_connect নামের সহায়কটি সেই সহায়ক সরবরাহকারী SOCKS বাস্তবায়নের অন্তর্গত। boost::asio -এর পাশে এর নাম উল্লেখ করলে এটি Asio-র TCP সকেট ইন্টারফেসের অংশ হয় না।
TCP পাঠ উত্তরটির কেবল একটি অংশ ফেরত দিতে পারে। প্রয়োজনীয় বাইট সংখ্যার জন্য পাঠ সংযুক্ত করুন, তারপর ঠিকানা-ধরন ক্ষেত্র থেকে অবশিষ্ট দৈর্ঘ্য বেছে নিন। প্রতিটি সার্ভার উত্তরের স্থির IPv4 বিন্যাস আছে বলে ধরে নেবেন না।
HTTPS-এর জন্য SOCKS CONNECT সফল হওয়ার পর গন্তব্যের TLS হ্যান্ডশেক করুন, গন্তব্যের SNI ও হোস্টনাম যাচাই বজায় রেখে। কেবল সফল প্রক্সি উত্তর ওয়েবসাইটকে প্রমাণিত করে না।
সম্পূর্ণ সেটআপ ক্রম জুড়ে বাতিলকরণ ও সময়সীমা রাখুন। TCP সংযোগ স্থাপনের সময় শেষ হলে পরবর্তী অভিবাদন, প্রমাণীকরণ ও CONNECT বিনিময় সীমাহীন থেকে যায়।