Socket.Connect() কে একটি SOCKS সার্ভারে নির্দেশ করলে সেই সার্ভারে একটি TCP সংযোগ খোলে। পরবর্তী বাইটগুলিকে এখনও SOCKS বলতে হবে। আপনার অ্যাপ্লিকেশনের প্রোটোকল সাথে সাথে পাঠালে সার্ভারটি অন্য এক কথোপকথনের জন্য অপেক্ষা করতে থাকে।

SOCKS5-এ, সংযোগ স্থাপনে পদ্ধতি নিয়ে দরকসরি, যেকোনো নির্বাচিত প্রমাণীকরণ বিনিময় এবং গন্তব্যের নাম উল্লেখ করা একটি অনুরোধ অন্তর্ভুক্ত থাকে। কেবল একটি সফল উত্তরই অ্যাপ্লিকেশনের বাইটের জন্য পথ খোলে। এই ধাপগুলি RFC 1928-এ সংজ্ঞায়িত।

দরকসরি সংযোগ স্তরে রাখুন

নিজস্ব TCP প্রোটোকল থাকা একটি অ্যাপ্লিকেশন এমন প্রক্সি-সচেতন সংযোগকারী ব্যবহার করতে পারে যা একটি প্রতিষ্ঠিত স্ট্রিম ফেরত দেয়। অ্যাপ্লিকেশনের বাকি অংশ তখন সেই স্ট্রিমের মাধ্যমে পড়ে ও লেখে। একটি সংযোগকারীকে আংশিক পাঠ, পরিবর্তনশীল দৈর্ঘ্যের ঠিকানা, প্রমাণীকরণ ব্যর্থতা এবং দরকসরির জন্য একটি সময়সীমা হিসাব করতে হবে।

একটি নির্দিষ্ট আকারের বাফার পড়ে সাফল্য ধরে নেওয়া হাতে লেখা বাস্তবায়ন ভঙ্গুর। TCP SOCKS বার্তাগুলির সীমানা সংরক্ষণ করে না। অ্যাপ্লিকেশন প্রোটোকল শুরু করার আগে এর ঠিকানার ধরন দ্বারা বর্ণিত সম্পূর্ণ উত্তর পড়ুন। .NET 7+ CONNECT উত্তরের পাঠক সেই ধাপটি দেখায়।

যদি একটি রক্ষণাবেক্ষণকৃত লাইব্রেরি ইতিমধ্যেই এই সংযোগ স্তর সরবরাহ করে, তবে এর সমর্থিত SOCKS সংস্করণ, প্রমাণীকরণ পদ্ধতি এবং লক্ষ্য ফ্রেমওয়ার্ক পরীক্ষা করুন। দশক-পুরনো ফোরাম লিঙ্ক তদন্তের সূচনা বিন্দু, বর্তমান সামঞ্জস্যের প্রমাণ নয়।

HTTP ক্লায়েন্ট কনফিগারেশনের আলাদা পরিধি আছে

একটি HTTP ক্লায়েন্টের প্রক্সি সেটিং সেই HTTP ক্লায়েন্টকে কনফিগার করে। এটি প্রক্রিয়ার প্রতিটি কাঁচা সকেট পরিবর্তন করে না। Socket API একটি নেটওয়ার্ক এন্ডপয়েন্ট গ্রহণ করে এবং উচ্চ-স্তরের দরকসরি কলকারীর উপর ছেড়ে দেয়।

এনক্রিপ্টেড অ্যাপ্লিকেশন প্রোটোকলের জন্য, প্রক্সি টানেল প্রতিষ্ঠিত হওয়ার পরে এর TLS হ্যান্ডশেক সম্পাদন করুন। সেই ধাপে অভিপ্রেত গন্তব্য পরিচয় যাচাই করুন। প্রক্সি প্রমাণীকরণ এবং গন্তব্য প্রমাণীকরণ একই অন্তর্নিহিত স্ট্রিম ব্যবহার করলেও আলাদা থাকে।

সম্পর্কিত নিবন্ধ