একটি প্রক্সি পোর্ট কীভাবে একসাথে HTTP এবং SOCKS গ্রহণ করতে পারে
কীভাবে একটি ইচ্ছাকৃতভাবে মিশ্র লিসেনার HTTP ও SOCKS আলাদা করতে পারে, অথচ একটি সাধারণ একক-প্রোটোকল লিসেনার তা পারে না, তা ব্যাখ্যা করে।
একটি মিশ্র প্রক্সি লিসেনার একটি TCP পোর্টে HTTP এবং SOCKS গ্রহণ করতে পারে, কারণ সার্ভার প্রাথমিক প্রোটোকল বাইট পরীক্ষা করে। পোর্ট নম্বর সেই শনাক্তকরণ করে না।
একটি HTTP প্রক্সি অনুরোধ HTTP পদ্ধতি দিয়ে শুরু হয়, যেমন GET বা CONNECT। একটি SOCKS অভিবাদন বাইনারি প্রোটোকল ক্ষেত্র দিয়ে শুরু হয়। এই ইনপুটগুলোর জন্য তৈরি সফটওয়্যার সংযোগটি উপযুক্ত হ্যান্ডলারে পাঠাতে পারে।
এটি একটি স্পষ্ট বাস্তবায়ন বৈশিষ্ট্য। একটি সাধারণ Squid HTTP লিসেনার এর পোর্ট 1080-এ বদলালেও মিশ্র হয় না, এবং কেবল-SOCKS লিসেনার ব্রাউজারের সেটিং থেকে HTTP শেখে না।
TLS আরেকটি সীমা যোগ করে: একটি এনক্রিপ্টেড প্রক্সি সংযোগ TLS দিয়ে শুরু হয়, দৃশ্যমান HTTP পদ্ধতি দিয়ে নয়। একই এন্ডপয়েন্টে এটি সমর্থন করতে অতিরিক্ত ইচ্ছাকৃত হ্যান্ডলিং দরকার; সাধারণ টেক্সট HTTP ও SOCKS চেনা সেই সামর্থ্য প্রমাণ করে না।
এন্ডপয়েন্টের জন্য নথিভুক্ত ক্লায়েন্ট প্রোটোকল ব্যবহার করুন। যদি দুটোই কাজ করে, তা ওই সার্ভারের মিশ্র লিসেনারের প্রমাণ, প্রতিটি ক্লায়েন্টে প্রোটোকল অনির্দিষ্ট রাখার কারণ নয়।
Glider-এর মিশ্র লিসেনার একটি নির্দিষ্ট উদাহরণ দেয়: এটি একটি বাইট না খেয়ে দেখে, 0x05 এর SOCKS5 হ্যান্ডলারে পাঠায়, অন্যথায় এর HTTP পার্সার ডাকে। সেই পার্সার এখনও আগত অনুরোধ যাচাই করে; পাঠানোর পছন্দ ইচ্ছামতো ইনপুটকে বৈধ HTTP করে না।
TCP লিসেনার ভাগ করা নিজে থেকে SOCKS5 UDP অ্যাসোসিয়েশন দেয় না। Glider এর UDP লিসেনার আলাদাভাবে চালু করে। TCP প্রোটোকল নির্বাচন এবং পরবর্তী ডেটাগ্রাম রিলে আলাদা সামর্থ্য।