কেন বলা হয় যে "এইচটিটিপি একটি রাষ্ট্রবিহীন প্রোটোকল"?


170

HTTP এর মধ্যে HTTP কুকিজ রয়েছে। কুকিজ সার্ভারকে ব্যবহারকারীর অবস্থা, সংযোগের সংখ্যা, শেষ সংযোগ ইত্যাদি ট্র্যাক করার অনুমতি দেয় etc.

HTTP- র অবিচ্ছিন্ন সংযোগ রয়েছে (কিপ-অ্যালাইভ) যেখানে একই টিসিপি সংযোগ থেকে বেশ কয়েকটি অনুরোধ প্রেরণ করা যায়।


3
আর একটি ক্ষেত্র যেখানে আমি "স্টেটলেস-নেস" দেখছি না এটি অনুমোদনের ক্ষেত্রে রয়েছে - বিশেষত প্রক্সি-অনুমোদন। মনে হয় আলোচনার সময় এটি রাষ্ট্রীয়। এনটিএলএম প্রমাণীকরণের জন্য, ক্লায়েন্টকে প্রক্সি-প্রমাণীকরণের ধরণটি মনে রাখতে হবে এবং এনটিএলএম বার্তা প্রকারের ক্রম রয়েছে বলে সার্ভারটি রাষ্ট্রীয় হওয়া দরকার। সুতরাং আমি নিশ্চিত না যে আমি উত্তরগুলি বুঝতে পেরেছি।
লিন্ডসে মুরসিলো

1
আমার এখন কি এইচটিটিপি / ১.১ যোগ করা উচিত? কারণ আমি মনে করি HTTP / 2 এর স্টেট রয়েছে।
জোসে নোবাইল

4
এইচটিটিপি / 2 রাষ্ট্রীয়। এইচটিটিপি 1 রাষ্ট্রবিহীন। পরে কুকিজের মতো এইচটিটিপি 1-র জন্য যুক্ত করা সংযোজনগুলি state এই সংযোজনগুলি "মূল" এইচটিটিপি 1 স্পেসিফিকেশনের বাইরে নয়। এই কারণেই HTTP 1 কে স্টেটহীন প্রোটোকল হিসাবে বলা হয় যদিও বাস্তবে তা না হয়। অন্যদিকে এইচটিটিপি / ২ এ রাষ্ট্রীয় উপাদানগুলি বেকড দিয়ে নকশা করা হয়েছিল। "রাষ্ট্রীয়" লেবেল লাগানোর প্রয়োজনীয়তা পূরণ করার জন্য কোনও সংযোজনের প্রয়োজন ছিল না।
জ্যামিকল

এছাড়াও সম্পর্কিত: স্ট্যাকওভারফ্লো. com
অ্যান্ড্রু

উত্তর:


130

একই HTTP সংযোগে একাধিক অনুরোধ প্রেরণ করা সত্ত্বেও, সার্ভারটি একই সকেটের মাধ্যমে তাদের আগমনের কোনও বিশেষ অর্থ সংযুক্ত করে না। এটি সম্পূর্ণরূপে একটি পারফরম্যান্স জিনিস, সময় / ব্যান্ডউইথকে হ্রাস করার উদ্দেশ্যে যা অন্যথায় প্রতিটি অনুরোধের জন্য একটি সংযোগ পুনঃপ্রকাশ করতে ব্যয় করতে চান।

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


1
যখন সার্ভার একটি অধিবেশন (সার্ভার-সাইড) মনে রাখে এবং এটি অনুসারে ব্যবহারকারীর অভিজ্ঞতা কাস্টমাইজ করে?
নুরশমিক

3
@NurShomik: দেখুন stackoverflow.com/a/3521393/319403 কিভাবে সেশন সাধারণত কাজের একটি ব্যাখ্যা জন্য।
সিএইচও

12
@ অ্যান্ড্রু: এইচটিটিপি টিসিপি "বিল্ট ইন" নয়, এবং টিসিপির অবস্থা এইচটিটিপি-র নয়। দুটি স্ট্যাকের বিভিন্ন স্তরে সম্পূর্ণ পৃথক প্রোটোকল। আপনি চাইলে নামযুক্ত পাইপগুলির উপরে HTTP পরিবেশন করতে পারেন, বা আপনার কাছাকাছি ফাইল প্রেরণ করেও যদি আপনার পক্ষে এটি করার জন্য যথেষ্ট ম্যাসোশিস্ট পাওয়া যায় এবং এটি সঠিকভাবে কাজ করবে কারণ এইচটিটিপি ট্রান্সপোর্ট-প্রোটোকল-অজোনস্টিক। এই স্তরে, এগুলি সবই কেবল অনুরোধ এবং প্রতিক্রিয়া। নিম্ন-বা উচ্চ-স্তরের প্রোটোকলগুলির দ্বারা কোন রাজ্যটি ব্যবহার / রক্ষণাবেক্ষণ / প্রয়োজনীয় হতে পারে তা নির্বিশেষে এটি এইচটিটিপিকেই রাষ্ট্রহীন করে তোলে।
সিএইচও

@ সিএইচও ঠিক আছে, আমি স্বীকার করব। তাহলে আমরা হিসাবে "না statelessness সংজ্ঞায়িত অগত্যা অর্ডার কাজ চালানোর জন্য রাষ্ট্র আছে প্রয়োজন" (HTTP- র মধ্যে রাষ্ট্রপক্ষে অপশন তালিকা নিচে dimo414 এর উত্তর দেখার উইকিপিডিয়া থেকে উদাহৃত), এবং যদি আমরা নিজে কঠোরভাবে প্রতিটি প্রোটোকল দেখতে এবং এটি নীচের স্তর উপর ভিত্তি করে না , তবে হ্যাঁ, আমি সম্মত হতে পারি যে এইচটিটিপি "রাষ্ট্রবিহীন"।
অ্যান্ড্রু

101

উইকিপিডিয়া থেকে :

এইচটিটিপি একটি স্টেটলেস প্রোটোকল। রাষ্ট্রবিহীন প্রোটোকলকে একাধিক অনুরোধের সময়কালের জন্য প্রতিটি ব্যবহারকারীর সম্পর্কে তথ্য বা স্থিতি ধরে রাখতে সার্ভারের প্রয়োজন হয় না।

তবে কিছু ওয়েব অ্যাপ্লিকেশনকে পৃষ্ঠা থেকে অন্য পৃষ্ঠায় ব্যবহারকারীর অগ্রগতি ট্র্যাক করতে হতে পারে, উদাহরণস্বরূপ যখন কোনও ওয়েব সার্ভারের ব্যবহারকারীর জন্য কোনও ওয়েব পৃষ্ঠার বিষয়বস্তু কাস্টমাইজ করার প্রয়োজন হয়। এই কেসগুলির সমাধানগুলির মধ্যে রয়েছে:

  • HTTP কুকিজের ব্যবহার of
  • সার্ভার সাইড সেশন,
  • লুকানো ভেরিয়েবল (যখন বর্তমান পৃষ্ঠায় কোনও ফর্ম থাকে) এবং
  • ইউআরআই-এনকোড প্যারামিটারগুলি ব্যবহার করে ইউআরএল-পুনর্লিখন, যেমন, /index.php?session_id=some_unique_session_code।

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


21

কারণ একটি রাষ্ট্রবিহীন প্রোটোকল একাধিক অনুরোধের সময়কালের জন্য প্রতিটি যোগাযোগের অংশীদার সম্পর্কে সেশন সম্পর্কিত তথ্য বা স্থিতি বজায় রাখতে সার্ভারের প্রয়োজন হয় না।

এইচটিটিপি একটি স্টেটলেস প্রোটোকল, যার অর্থ লেনদেন শেষ হয়ে গেলে ব্রাউজার এবং সার্ভারের মধ্যে সংযোগ নষ্ট হয়ে যায়।


2
তবে, এইচটিটিপি সার্ভারে কুকিজ ব্যবহার করে তথ্য সংরক্ষণ করতে পারে। প্রতিটি অনুরোধের সাথে সংযোগ বন্ধ না করে এইচটিটিপি রাখুন-
জোসে নোবাইল


18
সার্ভারে তথ্য সংরক্ষণের অর্থ এই নয় যে সংযোগটি অবিচ্ছিন্ন।
শ্রীজন

1
@ শ্রীজন ভাল, না। তাই? কেউ অন্যথায় দাবি করছিল না।
মার্ক আমেরিকা

10

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

প্রোটোকলটি কী তৈরি করে তা statelessহ'ল মূল নকশায়, এইচটিটিপি তুলনামূলক সহজ file transfer protocol:

  1. কোনও URL দ্বারা নামক কোনও ফাইলের জন্য একটি অনুরোধ করুন,
  2. প্রতিক্রিয়া হিসাবে ফাইল পান,
  3. সংযোগ বিচ্ছিন্ন।

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


3

যদি প্রোটোকল এইচটিটিপি রাজ্য পূর্ণ প্রোটোকল হিসাবে দেওয়া হয়, ওয়েব অ্যাপ্লিকেশনকে দেওয়া একাধিক অনুরোধের জন্য ওয়েব সার্ভারের সাথে যোগাযোগের জন্য ব্রাউজার উইন্ডো একক সংযোগ ব্যবহার করে th এটি ব্রাউজার উইন্ডো এবং দীর্ঘ সময় ধরে ওয়েব সার্ভারের মধ্যে সংযোগগুলিতে যুক্ত থাকার এবং রাখার সুযোগ দেয় এগুলি দীর্ঘ সময়ের জন্য অলস অবস্থায় রয়েছে clients এটি ক্লায়েন্টগুলির বেশিরভাগ সংযোগ নিষ্ক্রিয় থাকা সত্ত্বেও ওয়েব সার্ভারের সর্বাধিক সংযোগে পৌঁছানোর পরিস্থিতি তৈরি করতে পারে।


1
এইচটিটিপি ইতিমধ্যে কিপ-লাইভ রয়েছে, এর অর্থ এই যে সার্ভারটি সংযোগটি বন্ধ করে না এবং ক্লায়েন্ট একই সংযোগে অনেক অনুরোধ করতে পারে।
জোসে নোবাইল

3

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


1

রাষ্ট্রহীন কি ??

একবার অনুরোধ করা হয়ে গেলে এবং প্রতিক্রিয়াটি ক্লায়েন্টের কাছে ফেরত দেওয়া হলে সংযোগটি বাদ দেওয়া বা সমাপ্ত করা হবে। সার্ভারটি অনুরোধকারীর সম্পর্কে সব ভুলে যাবে।

রাষ্ট্রহীন কেন ??

ওয়েব স্টেটলেস প্রোটোকলের জন্য যেতে পছন্দ করে। এটি একটি প্রতিভা পছন্দ ছিল কারণ ওয়েবের মূল লক্ষ্যটি ছিল দস্তাবেজগুলিকে (ওয়েব পৃষ্ঠাগুলি) অত্যন্ত বড় নম্বরে পরিবেশন করার অনুমতি দেওয়া। সার্ভারের জন্য খুব বেসিক হার্ডওয়্যার ব্যবহার করে এমন লোক of

দীর্ঘ-চলমান সংযোগ বজায় রাখা চূড়ান্ত সংস্থান-নিবিড় হত।

যদি ওয়েবটি রাষ্ট্রীয় প্রোটোকলটি বেছে নেওয়া হয় তবে দর্শকের সংযোগ বজায় রাখতে সার্ভারে লোড বাড়ানো হত।


1

HTTPরাষ্ট্রহীন। TCPরাষ্ট্রীয়। কোনও তথাকথিত নেই HTTP connection, তবে কেবল HTTP requestএবং HTTP response। অন্যটি তৈরির জন্য আমাদের কিছু রক্ষণাবেক্ষণের দরকার নেই HTTP request। একটি সংযোগ শিরোনাম যা "বেঁচে থাকুন" এর অর্থ হ'ল TCPপরের HTTPঅনুরোধগুলি এবং প্রতিক্রিয়াগুলি দ্বারা সংযোগ বিচ্ছিন্ন করে এবং TCPসংযোগটি পুনরায় স্থাপনের পরিবর্তে পুনরায় ব্যবহার করা হবে।


0

আমি মনে করি যে কেউ স্ট্যাটালস ধারণার জন্য খুব দুর্ভাগ্যজনক নামটি বেছে নিয়েছে এবং সে কারণেই পুরো ভুল বোঝাবুঝির কারণ। এটি কোনও ধরণের সংস্থান সংরক্ষণ করার বিষয়ে নয়, বরং ক্লায়েন্ট এবং সার্ভারের মধ্যে সম্পর্ক সম্পর্কে।

ক্লায়েন্ট: আমি সমস্ত সংস্থান আমার পাশে রাখছি এবং আপনাকে প্রয়োজনীয় সমস্ত আইটেমের "তালিকা" প্রেরণ করছি যা প্রক্রিয়া করা প্রয়োজন। তোমার কাজ করো.

সার্ভার: ঠিক আছে .. আপনাকে যথাযথ প্রতিক্রিয়া জানাতে কী গুরুত্বপূর্ণ তা ফিল্টার করার জন্য আমাকে দায়িত্ব নিতে দিন।

যার অর্থ সার্ভারটি ক্লায়েন্টের "ক্রীতদাস" এবং প্রতিটি অনুরোধের পরে তার "মাস্টার" সম্পর্কে ভুলে যেতে হবে। প্রকৃতপক্ষে, স্ট্যাটালস কেবলমাত্র সার্ভারের অবস্থাকে বোঝায়।

https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_3

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.