پروتکلها را میتوان به دو دسته Stateless و Stateful تقسیم کرد. تفاوت این دو دسته در نگهداری اطلاعات مربوط به ارتباطات میباشد. یعنی سرور به هنگام برقراری یک ارتباط از سمت کاربران، اطلاعات و حالیت (State) ارتباط را نهگداری بکند و یا خیر.
HTTP یک نمونه پروتکل Stateless است. برای فهم بهتر این دستهبندی، با یک مثال شروع میکنیم. فرض کنید یک لیست خرید برای منزل دارید و میخواهید همه آنها را از یک فروشگاه اینترنتی تهیه کنید. این لیست شامل، چند ماده شوینده، مقداری موارد خوراکی و چند وسیله زینتی میباشد. وقتی وارد وب سایت فروشگاه میشوید، باید همه اینها را در سبد خرید خود اضافه و سپس خرید خود را نهایی کنید. اما اینجا یک مشکل وجود دارد:
Stateless بودن پروتکل HTTP. حالا Stateless بودن HTTP چه مشکلی را ایجاد میکند؟
Stateless بودن HTTP به این معناست که اطلاعات ارتباطاتی که بر بستر این پروتکل هستند، ذخیره نمیشود. در اصل ارتباطات در این پروتکل فاقد State هستند. به بیان سادهتر، هر درخواستی که بر بستر HTTP به یک سرور ارسال میشود، گیرنده فکر میکند که کاربر جدیدی در حال ارسال درخواست است، انگار که پروتکل HTTP حافظهای ندارد و برایش مهم نیست که هر کاربر قبلا چه درخواستهایی ارسال کرده است و چه کارهایی در وبسایت انجام داده است.
این به این معناست که اگر در فروشگاه یک ماده شوینده را به سبد خرید اضافه کنید و سپس به صفحه مربوط به مواد خوراکی بروید، ماده شوینده از سبد شما حذف میشود! چرا که با ارسال درخواست جدید (رفتن به بخش مواد خوراکی) گیرنده فکر میکند کاربر جدیدی وارد بخش خوراکی شده است، بدون اینکه بداند که کاربر قبلا در بخش مواد خوراکی حضور داشته است. البته برای حل این مشکل راهحلهای زیادی نظیر استفاده از کوکی وجود دارد.
پس پروتکلهای Stateless دستهای از پروتکلهای شبکه هستند که گیرنده حالت ارتباط و اطلاعات ارتباط را در خود ذخیره نمیکند. یعنی اگر یک کاربر 10 درخواست پشت هم به یک سرور ارسال کند، گیرنده در هر 10 درخواست دریافت شده، فکر میکند که کاربر جدیدی در حال ارسال درخواست است.
از نمونه پروتکلهای Stateless میتوان به HTTP، UDP، SNMP و IP اشاره کرد.
در مقابل دسته پروتکلهای Stateless، پروتکلهای Stateful قرار دارد. این دسته از پروتکلها حالت ارتباط را ذخیره میکنند. به عبارت دیگر، این دسته از پروتکلها درخواستهای کاربران را در نظر دارند. برای مثال، FTP یک پروتکل Stateful است. اگر شما 10 درخواست به یک FTP Server ارسال کنید، چون FTP یک پروتکل Stateful است، سرور میداند که همه این 10 درخواست از سمت یک کاربر به دست او رسیده است.
در جدول زیر به مقایسه پروتکلهای Stateless و Stateful میپردازیم:
پروتکلهای Stateful | پروتکلهای Stateless |
سرور اطلاعات Session را ذخیره میکند. | اطلاعات Session توسط سرور ذخیره نمیشود. |
سرور از پیچیدگی نسبی بیشتری برخوردار است. | طراحی سرور را سادهتر میکند. |
اطلاعات کاربر باید به درستی ذخیره شود و به هنگام خطا به درستی بارگیری شود. مدیریت خطا در این دستهبندی دشوار است. | به هنگام خطا، این مدل بهتر عمل میکند، چرا که نیاز نیست اطلاعاتی بازگردانی شود. |
تراکنشها سرعت بیشتری برای انجام شدن نیاز دارند. | تراکنشها در این پروتکل بسیار سریعتر هستند. |
ترجنس | thregence.ir
آکادمی ترجنس | edu.thregence.ir
اینستاگرام | instagram.com/thregence
تلگرام | t.me/thregence
یوتوب | https://bit.ly/30mGowo
آپارات | aparat.com/thregence