ক্লায়েন্ট 200 Connection Established দেখে TLS শুরু করে, তারপর যেখানে TLS রেকর্ড থাকা উচিত সেখানে অর্থহীন কিছু রিপোর্ট করে। গন্তব্যের সাইফার সেটিংসকে দোষ দেওয়ার আগে অসম্পূর্ণ HTTP প্রতিক্রিয়া খুঁজুন।

HTTP/1 CONNECT বিনিময়ে স্টেটাস লাইন কেবল প্রতিক্রিয়ার শুরু। এর পরে হেডার ফিল্ড আসতে পারে। সফল CONNECT প্রতিক্রিয়ার পরে হেডার অংশ শেষ করা খালি লাইনটিই টানেলে উত্তরণ বোঝায়।

HTTP/1.1 200 Connection Established\r\n
Proxy-Agent: example\r\n
\r\n

এই বাইটগুলো একটি পাঠে, কয়েকটি পাঠে, বা পরবর্তী বাইটও থাকা একটি পাঠে আসতে পারে। TCP সার্ভারের লেখার সীমানা রক্ষা করে না।

হ্যান্ডঅফকে স্পষ্ট পার্সার অবস্থা করুন

  1. স্টেটাস লাইন সংগ্রহ ও পার্স করুন। সঠিক ইংরেজি reason phrase-এর বদলে সংখ্যাগত স্ট্যাটাস ব্যবহার করুন।
  2. হেডার অংশের সম্পূর্ণ সমাপ্তি না আসা পর্যন্ত চালিয়ে যান। সফল স্টেটাস লাইন বাকি ফিল্ডগুলো অদৃশ্য করে না।
  3. সফল CONNECT প্রতিক্রিয়ায় সমাপ্তির ঠিক পরের বাইটটিকে টানেল ডেটার শুরু ধরুন। অন্য প্রতিক্রিয়ায় উপযুক্ত HTTP প্রতিক্রিয়া ও প্রমাণীকরণ ব্যবস্থা অনুসরণ করুন।
  4. সংযোগ ও অব্যবহৃত বাইটগুলো পরবর্তী প্রোটোকলের সমর্থিত বাফারযুক্ত I/O ইন্টারফেস দিয়ে হস্তান্তর করুন।

ভালো ডেলিমিটার অনুসন্ধান থাকলেও শেষ ধাপটি গুরুত্বপূর্ণ। বাফারযুক্ত রিডার পার্সারের চাওয়ার চেয়ে বেশি সকেট নিয়ে নিতে পারে। খালি সকেটে TLS শুরু করে রিডারটি ফেলে দিলে বাইটগুলো রিডারের নিজস্ব বাফারে আটকে থাকতে পারে।

সেটআপের সময়সীমা ও হেডার আকারের সীমা ব্যবহার করুন। সমাপ্তির আগে EOF মানে অসম্পূর্ণ প্রক্সি প্রতিক্রিয়া, অনন্তকাল অপেক্ষা বা যেভাবেই হোক TLS চেষ্টা করার আমন্ত্রণ নয়।

কয়েকটি সীমা নিয়ে ভাবুন

ধরুন একটি পাঠ Proxy-Agent:-এর পরে শেষ হলো। পার্সারের আরও HTTP হেডার বাইট দরকার। ধরুন আরেকটি পাঠ শেষ CRLF অনুক্রমের মাঝখানে শেষ হলো। সেটি এখনও সম্পূর্ণ হেডার অংশ নয়। এখন ধরুন একই বাফারে সম্পূর্ণ সফল হেডার অংশের পরে টানেল বাইট এল: ওই অতিরিক্ত বাইটগুলোকে হস্তান্তর পার হতে হবে।

407 আলাদা ফলাফল। এতে প্রমাণীকরণ ব্যবস্থা দরকার; কখনও না খোলা টানেলে TLS ClientHello পাঠানোর অনুমতি এটি দেয় না।

হ্যান্ডশেক কার্যকর করাই কাজ না হলে রক্ষণাবেক্ষিত কানেক্টর বেছে নিন। এই সীমাটি এখানে দেখানো HTTP/1 বিনিময়ের জন্য নির্দিষ্ট। HTTP/2 প্রক্সি CONNECT-কে ভিন্ন ফ্রেমিংয়ের স্ট্রিমে বহন করে।

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