1) ওয়েবসকেটস প্রোটোকল কেন ভাল?
ওয়েবসকেটগুলি এমন পরিস্থিতিতে যেমন ক্লায়েন্ট থেকে সার্ভার বার্তাগুলি ক্লায়েন্টের জন্য স্বল্প ল্যাটেন্সির জন্য লো-লেটেন্সি যোগাযোগের সাথে জড়িত তাদের পক্ষে আরও ভাল। ক্লায়েন্ট ডেটাতে সার্ভারের জন্য আপনি দীর্ঘ-অধিষ্ঠিত সংযোগগুলি এবং চুনযুক্ত স্থানান্তর ব্যবহার করে মোটামুটি কম বিলম্ব পেতে পারেন। যাইহোক, এটি ক্লায়েন্ট থেকে সার্ভার ল্যাটেন্সিতে সহায়তা করে না যা প্রতিটি ক্লায়েন্টের জন্য সার্ভার বার্তায় নতুন সংযোগ স্থাপনের প্রয়োজন।
আপনার 48 বাইট এইচটিটিপি হ্যান্ডশেক বাস্তব-বিশ্বের এইচটিটিপি ব্রাউজার সংযোগগুলির জন্য বাস্তবসম্মত নয় যেখানে প্রায়শই বেশিরভাগ কিলোবাইট ডেটা অনুরোধের অংশ হিসাবে প্রেরণ করা হয় (উভয় দিকে) অনেকগুলি শিরোনাম এবং কুকি ডেটা সহ। ক্রোম ব্যবহারের জন্য এখানে একটি অনুরোধ / প্রতিক্রিয়ার একটি উদাহরণ:
উদাহরণ অনুরোধ (কুকি ডেটা সহ 2800 বাইট, কুকি ডেটা ছাড়াই 490 বাইট):
GET / HTTP/1.1
Host: www.cnn.com
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.68 Safari/537.17
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: [[[2428 byte of cookie data]]]
উদাহরণ প্রতিক্রিয়া (355 বাইট):
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 13 Feb 2013 18:56:27 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: CG=US:TX:Arlington; path=/
Last-Modified: Wed, 13 Feb 2013 18:55:22 GMT
Vary: Accept-Encoding
Cache-Control: max-age=60, private
Expires: Wed, 13 Feb 2013 18:56:54 GMT
Content-Encoding: gzip
এইচটিটিপি এবং ওয়েবসকেট উভয়েরই সমান আকারের প্রাথমিক সংযোগ হ্যান্ডশেক রয়েছে তবে একটি ওয়েবস্কট সংযোগের মাধ্যমে প্রাথমিক হ্যান্ডশেক একবার করা হয় এবং তারপরে ছোট বার্তাগুলিতে কেবল ওভারহেডের 6 বাইট থাকে (শিরোনামের জন্য 2 এবং মুখোশের মানের জন্য 4)। লেটেন্সি ওভারহেড শিরোনামের আকার থেকে এতটা নয়, তবে যুক্তি থেকে সেই শিরোনামগুলি পার্স / হ্যান্ডেল / সঞ্চয় করতে হবে। এছাড়াও, প্রতিটি অনুরোধের জন্য আকার বা প্রসেসিং সময়ের চেয়ে টিসিপি সংযোগ সেটআপ বিলম্বিতা সম্ভবত একটি বৃহত ফ্যাক্টর।
২) এইচটিটিপি প্রোটোকল আপডেট করার পরিবর্তে কেন এটি প্রয়োগ করা হয়েছিল?
উন্নত পারফরম্যান্স এবং এসপিডিওয়াই , এইচটিটিপি ২.০ এবং কুইকের মতো নিম্নতর বিলম্বিতা অর্জনের জন্য এইচটিটিপি প্রোটোকলটিকে পুনরায় ইঞ্জিনিয়ার করার প্রচেষ্টা রয়েছে । এটি স্বাভাবিক এইচটিটিপি অনুরোধের জন্য পরিস্থিতির উন্নতি করবে, তবে সম্ভবত এইচটিটিপি প্রোটোকলের চেয়ে ক্লাবের কাছে সার্ভার ডেটা স্থানান্তরের জন্য ওয়েবসকেটস এবং / অথবা ওয়েবআরটিটিসি ডেটাচ্যানেলটির কম বিলম্ব থাকবে (অথবা এটি ওয়েবসকেটের মতো দেখতে এমন একটি মোডে ব্যবহৃত হবে) কোন পথে)।
আপডেট :
ওয়েব প্রোটোকল সম্পর্কে চিন্তাভাবনার জন্য এখানে একটি কাঠামো দেওয়া হল:
- টিসিপি : নিম্ন-স্তরের, দ্বি-দিকনির্দেশক, পূর্ণ-দ্বৈত এবং গ্যারান্টিযুক্ত অর্ডার পরিবহন স্তর। কোনও ব্রাউজার সমর্থন নেই (প্লাগইন / ফ্ল্যাশ বাদে)।
- HTTP 1.0 : টিসিপিতে অনুরোধ-প্রতিক্রিয়া পরিবহন প্রোটোকল স্তরযুক্ত। ক্লায়েন্ট একটি সম্পূর্ণ অনুরোধ করে, সার্ভার একটি সম্পূর্ণ প্রতিক্রিয়া দেয় এবং তারপরে সংযোগটি বন্ধ হয়ে যায়। অনুরোধের পদ্ধতিগুলি (জিইটি, পোষ্ট, হেড) এর সার্ভারে সংস্থানগুলির জন্য নির্দিষ্ট লেনদেনের অর্থ রয়েছে।
- HTTP 1.1 : HTTP 1.0 এর অনুরোধ-প্রতিক্রিয়া প্রকৃতি বজায় রাখে, তবে একাধিক সম্পূর্ণ অনুরোধ / পূর্ণ প্রতিক্রিয়া (অনুরোধ অনুযায়ী একটি প্রতিক্রিয়া) এর জন্য সংযোগটি উন্মুক্ত রাখতে দেয়। অনুরোধ এবং প্রতিক্রিয়াতে এখনও পুরো শিরোনাম রয়েছে তবে সংযোগটি পুনরায় ব্যবহৃত হয়েছে এবং বন্ধ নয়। HTTP 1.1 এছাড়াও কিছু অতিরিক্ত অনুরোধ পদ্ধতি যুক্ত করেছে (অপশনস, পুট, মোছা, ট্র্যাক, সংযোগ) যার নির্দিষ্ট ট্রানজেকশনাল অর্থও রয়েছে। তবে, এইচটিটিপি ২.০ খসড়া প্রস্তাবটির প্রবর্তনে উল্লিখিত হিসাবে , এইচটিটিপি ১.১ পাইপলাইনিং ব্যাপকভাবে মোতায়েন করা হয়নি তাই এটি ব্রাউজার এবং সার্ভারের মধ্যে বিলম্ব সমাধানের জন্য এইচটিটিপি ১.১ এর ব্যবহারকে সীমাবদ্ধ করে দেয়।
- লং-পোল : এইচটিটিপিতে ("1.0 বা 1.1) তে" হ্যাক "বাছাই করুন যেখানে ক্লায়েন্টের অনুরোধে সার্ভারটি তাত্ক্ষণিকভাবে প্রতিক্রিয়া জানায় না (বা কেবলমাত্র শিরোনাম দিয়ে আংশিকভাবে প্রতিক্রিয়া জানায়)। সার্ভারের প্রতিক্রিয়ার পরে ক্লায়েন্টটি তাত্ক্ষণিকভাবে একটি নতুন অনুরোধ প্রেরণ করে (HTTP 1.1 এর বেশি হলে একই সংযোগটি ব্যবহার করে)।
- এইচটিটিপি স্ট্রিমিং : বিভিন্ন কৌশল (মাল্টিপার্ট / ছিন্ন প্রতিক্রিয়া) যা সার্ভারকে একক ক্লায়েন্টের অনুরোধে একাধিক প্রতিক্রিয়া প্রেরণে অনুমতি দেয়। ডাব্লু 3 সি একটি এমআইএমএম টাইপ ব্যবহার করে এটি সার্ভার-প্রেরিত ইভেন্ট হিসাবে মানীকৃত করছে
text/event-stream
। ব্রাউজার এপিআই (যা ওয়েবসকেট এপিআইয়ের সাথে মোটামুটি মিল) বলা হয় ইভেন্টসোর্স এপিআই।
- ধূমকেতু / সার্ভার পুশ : এটি একটি ছাতা শব্দ যা দীর্ঘ-পোল এবং এইচটিটিপি উভয় স্ট্রিমিংয়ের অন্তর্ভুক্ত। ধূমকেতু গ্রন্থাগারগুলি সাধারণত ক্রস ব্রাউজার এবং ক্রস-সার্ভার সমর্থনকে চেষ্টা করার এবং সর্বাধিক করার জন্য একাধিক কৌশল সমর্থন করে।
- ওয়েবসকেটস : একটি ট্রান্সপোর্ট লেয়ারটি বিল্ট-অন টিসিপি যা এইচটিটিপি বান্ধব আপগ্রেড হ্যান্ডশেক ব্যবহার করে। টিসিপি'র বিপরীতে, যা একটি স্ট্রিমিং ট্রান্সপোর্ট, ওয়েবসকেটগুলি একটি বার্তা ভিত্তিক পরিবহণ: বার্তাগুলি তারের উপর বিস্মৃত হয় এবং অ্যাপ্লিকেশনে পৌঁছানোর আগে পুরোপুরি পুনরায় একত্রিত হয়। ওয়েবসকেট সংযোগগুলি দ্বি-দিকনির্দেশক, পূর্ণ দ্বৈত এবং দীর্ঘজীবী। প্রাথমিক হ্যান্ডশেকের অনুরোধ / প্রতিক্রিয়ার পরে, কোনও লেনদেনের শব্দার্থবিজ্ঞান নেই এবং বার্তা ওভারহেডের খুব কম থাকে। ক্লায়েন্ট এবং সার্ভার যে কোনও সময় বার্তাগুলি প্রেরণ করতে পারে এবং ম্যাসেজের রসিদকে সংবিধানে পরিচালনা করতে হবে।
- এসপিডিওয়াই : গুগল আরও দক্ষ তারের প্রোটোকল ব্যবহার করে এইচটিটিপি প্রসারিত করার প্রস্তাব নিয়েছিল কিন্তু সমস্ত এইচটিটিপি শব্দার্থবিজ্ঞান (অনুরোধ / প্রতিক্রিয়া, কুকিজ, এনকোডিং) বজায় রেখেছে। এসপিডিওয়াই একটি নতুন ফ্রেমিং ফর্ম্যাট (দৈর্ঘ্য-প্রিফিক্সড ফ্রেম সহ) প্রবর্তন করে এবং নতুন ফ্রেমিং স্তরটিতে এইচটিটিপি অনুরোধ / প্রতিক্রিয়া জোড়া লেয়ার করার একটি উপায় নির্দিষ্ট করে। সংযোগ স্থাপনের পরে শিরোনামগুলি সংকুচিত করা যায় এবং নতুন শিরোনামগুলি প্রেরণ করা যায়। ব্রাউজার এবং সার্ভারগুলিতে এসপিডিওয়াইয়ের বাস্তব বিশ্ব বাস্তবায়ন রয়েছে।
- এইচটিটিপি ২.০ : এর এসপিডিওয়াইয়ের মতো লক্ষ্য রয়েছে: এইচটিটিপি সিলেটিক্স সংরক্ষণের সময় এইচটিটিপি ল্যাটেন্সি এবং ওভারহেড হ্রাস করুন। বর্তমান খসড়াটি এসপিডিওয়াই থেকে প্রাপ্ত এবং একটি আপগ্রেড হ্যান্ডশেক এবং ডেটা ফ্রেমিংয়ের সংজ্ঞা দেয় যা হ্যান্ডশেক এবং ফ্রেমিংয়ের জন্য ওয়েবস্কট স্ট্যান্ডার্ডের সাথে খুব মিল। একটি বিকল্প এইচটিটিপি ২.০ খসড়া প্রস্তাবনা (httpbis-গতি-গতিশীলতা) আসলে ট্রান্সপোর্ট লেয়ারের জন্য ওয়েবসকেট ব্যবহার করে এবং এসপিডিওয়াই মাল্টিপ্লেক্সিং এবং এইচটিটিপি ম্যাপিংকে ওয়েবস্কট এক্সটেনশান হিসাবে যুক্ত করে (ওয়েবস্কট এক্সটেনশানগুলি হ্যান্ডশেকের সময় আলোচিত হয়)।
- ওয়েবআরটিসি / সিইউ-ওয়েবআরটিসি : ব্রাউজারগুলির মধ্যে পিয়ার-টু-পিয়ার সংযোগের অনুমতি দেওয়ার প্রস্তাবসমূহ। এটি নিম্ন গড় এবং সর্বাধিক বিলম্বিত যোগাযোগটি সক্ষম করতে পারে কারণ অন্তর্নিহিত পরিবহণটি টিসিপির পরিবর্তে এসডিপি / ডেটাগ্রাম। এটি প্যাকেটগুলি / বার্তাগুলির আউট-অফ-অর্ডার সরবরাহের অনুমতি দেয় যা ড্রপ প্যাকেটগুলির ফলে ঘটে যাওয়া বিলম্বিত স্পাইকগুলির টিসিপি ইস্যুকে এড়িয়ে চলে যা পরবর্তী সমস্ত প্যাকেটের বিতরণে বিলম্বিত করে (অর্ডার সরবরাহের গ্যারান্টি দিতে)।
- কুইক : এটি একটি পরীক্ষামূলক প্রোটোকল যা টিসিসিটির চেয়ে ওয়েব ল্যাটেন্সি কমাতে লক্ষ্য করে। সরেজমিনে, ক্যুইকটি ইউডিপিতে প্রয়োগ করা টিসিপি + টিএলএস + এসপিডিওয়াইয়ের সাথে খুব মিল। কুইক এইচটিটিপি / ২ এর সমান মাল্টিপ্লেক্সিং এবং প্রবাহ নিয়ন্ত্রণ সরবরাহ করে, টিএলএসের সমতুল্য সুরক্ষা এবং সংযোগ শব্দার্থ, নির্ভরযোগ্যতা, এবং টিসিপি-তে কনজেশন নিয়ন্ত্রণ সরবরাহ করে। যেহেতু টিসিপি অপারেটিং সিস্টেম কার্নেল এবং মিডলবক্স ফার্মওয়্যারের ক্ষেত্রে প্রয়োগ করা হয়েছে, তাই টিসিপিতে উল্লেখযোগ্য পরিবর্তন করা অসম্ভব হয়ে পড়েছে। তবে, যেহেতু ক্যুইকটি ইউডিপির শীর্ষে নির্মিত, এটি এ জাতীয় কোনও সীমাবদ্ধতায় ভুগছে না। কুইক এইচটিটিপি / 2 শব্দার্থবিজ্ঞানের জন্য ডিজাইন এবং অনুকূলিত হয়েছে।
তথ্যসূত্র :
- এইচটিটিপি :
- সার্ভার-প্রেরিত ইভেন্ট :
- ওয়েবসকেট :
- এসপিডিওয়াই :
- HTTP 2.0 :
- ওয়েবআরটিসি :
- কুইক :