عبدالفتاح الصلوي

نظرة على بروتوكول النسيان Stateless

كتبها : عبدالفتاح الصلوي / في رصيف : تعليم

نظرة على بروتوكول النسيان Stateless


يقول الشاعر
توافقَ الناسُ في النسيان واختلفوا
فكلُّ ناسٍ له جنسٌ وأشباهُ

كما يحكى بأنه قيل لإبراهيم بن ادهم بأن اللحم قد غلا، فقال أرخصوه بأن لا تشتروه و أنشد بذلك :
وإذا غلا شيء عليّ تركته   فيكون أرخص ما يكون إذا غلا

في عالم التقنية تخيل لو انك تريد جهاز حاسب بمواصفات خارقة لتستخدمه في أعمال التصميم والمونتاج وغيره ، بالتأكيد سيتوجب أن يحتوي الجهاز على معالج و ذاكرة خارقة ومن المعروف بأن  ذاكرة الوصول العشوائي (RAM) تُصنع من رقائق السليكون، وهي عملية إنتاج معقدة ومكلفة. كلما زادت السعة، زادت عدد الرقائق المطلوبة، وارتفع السعر بشكل كبير. فما بالك اذا كان هذا الجهاز سيقوم بمعالجة ملايين الطلبات في نفس الوقت لملايين المستخدمين. والحل هنا كان في طريقة النسيان والتخلي و ظهر مصطلح Stateless . الفرق بين Stateful وStateless ؟

في عالم الحوسبة الحديثة، حيث تتعامل التطبيقات مع ملايين المستخدمين في وقت واحد، يصبح فهم الفرق بين الأنظمة التي تحتفظ بالحالة (Stateful) وتلك التي لا تحتفظ بها (Stateless) أمرًا بالغ الأهمية. تخيل أنك تعمل على ملف نصي ضخم، وتفتح تطبيق تصميم مثل Photoshop ، وتستخدم برامج متعددة في نفس اللحظة. في هذه الحالة، كل برنامج يحتفظ بمعلوماته مؤقتًا في ذاكرة جهازك (RAM).

الآن، تخيل أن هناك آلاف المستخدمين يحاولون استخدام نفس الجهاز في نفس الوقت. سيكون من المستحيل تقريبًا تلبية هذا الطلب دون جهاز خارق. ولكن في عالم الإنترنت، هذا ما يحدث بالضبط مع خوادم الويب. فكيف يمكن لهذه الخوادم، التي قد تكون بمواصفات متواضعة، أن تتعامل مع آلاف الطلبات في نفس الوقت؟ الجواب يكمن في مفهوم "النسيان" أو ما يعرف بـ Stateless Protocol.

 ما الفرق بين جهازك وخادم الويب؟

 1. جهازك: "عامل واحد متعدد المهام" (Stateful)
عندما تعمل على برنامج مثل Microsoft Word، يحتفظ البرنامج بكل حالة العمل في الذاكرة:
- النصوص التي كتبتها
- موقع المؤشر
- التنسيقات
- المستندات المفتوحة الأخرى

 2. الخادم: "مدير خط إنتاج ذكي" (Stateless)
على النقيض، فإن معظم خوادم الإنترنت مصممة لتكون ذكية وفعالة:
- تستقبل الطلب
- تعالجه بسرعة
- ترسل الرد
- تنسى العملية تمامًا

هذا ما يُعرف بـ "عديم الحالة" أو Stateless، وهو ما يجعل الخوادم قادرة على التعامل مع آلاف الطلبات دون الحاجة لتخزين معلومات كل مستخدم.

 ما هو بروتوكول Stateless؟


Stateless Protocol هو بروتوكول اتصال يعامل كل طلب على أنه مستقل تمامًا عن الطلبات الأخرى. لا يحتفظ الخادم بأي معلومات عن الجلسة أو حالة الاتصال بين الطلبات.

 أبرز مثال: بروتوكول HTTP

HTTP هو أشهر بروتوكول عديم الحالة، ويُستخدم في تصفح الإنترنت. عند زيارة موقع ويب:
1. يرسل المتصفح طلبًا إلى الخادم.
2. يعالج الخادم الطلب ويرسل الصفحة.
3. ينسى الخادم أنك اتصلت به.

 كل نقرة على رابط تعتبر طلبًا جديدًا لا علاقة له بالطلب السابق.

 كيف يحتفظ الموقع بحالة تسجيل الدخول رغم أن HTTP عديم الحالة؟

هنا يأتي دور [الكوكيز (Cookies)
- عند تسجيل الدخول، يرسل الخادم كوكي يحتوي على رمز تعريف.
- في كل طلب لاحق، يرسل المتصفح هذا الكوكي تلقائيًا.
- يتعرف الخادم عليك من خلال هذا الكوكي، رغم أنه لا يحتفظ بأي معلومات عنك في ذاكرته.

 تقنيات أخرى لمحاكاة الحالة:
- Tokens مثل JWT (JSON Web Tokens)
- Sessions  التي تُخزن على الخادم ولكن تُدار بطريقة ذكية

 المميزات والعيوب: Stateful vs Stateless

 ✅ مميزات الأنظمة Stateless
- المرونة وقابلية التوسع (Scalability):
  - يمكن إضافة خوادم جديدة بسهولة.
  - لا حاجة لمزامنة الحالة بين الخوادم.
- الموثوقية (Reliability):
  - لا يتم فقدان المعلومات عند تعطل خادم.
  - يمكن توجيه الطلبات لخادم آخر بسهولة.
- البساطة (Simplicity):*
  - تصميم أسهل.
  - لا حاجة لإدارة الحالة أو تنظيفها.


❌ عيوب الأنظمة Stateless
- زيادة حجم الطلب:
  - كل طلب يجب أن يحتوي على كافة المعلومات اللازمة.
- أداء أقل في بعض الحالات:
  - الخادم يعيد التحقق من البيانات في كل مرة.
- تعقيد على جانب العميل:
  - يجب على العميل إدارة الحالة (مثل تخزين الكوكيز أو التوكن).


 مقارنة بين Stateful وStateless


المعيارStatefulStateless
الاحتفاظ بالحالةنعملا
قابلية التوسعأقلأعلى
الموثوقيةأقلأعلى
الأداءأسرع في بعض الحالاتيعتمد على حجم الطلب
التعقيدعلى الخادمعلى العميل


 استخدامات شائعة لـ Stateless

- REST API 
- Microservices
- تطبيقات السحابة مثل Google Cloud و AWS
- تطبيقات الهواتف المحمولة التي تعتمد على واجهات API

 لماذا يعتبر Stateless أساس الإنترنت الحديث؟


في عالم يعتمد على الأداء العالي والتوسع السريع، فإن الأنظمة عديمة الحالة توفر:

- إمكانية التعامل مع ملايين المستخدمين
- سهولة التوزيع على خوادم متعددة
- أداء مستقر حتى في ظروف الضغط العالي

ولهذا السبب، تعتمد كبرى الشركات مثل [Facebook]، [Amazon] و Netflix على هذا النموذج في بنيتها التحتية.

 كيف يتم محاكاة الحالة في بيئة Stateless؟
 1. الكوكيز (Cookies)

- تُخزن على جهاز المستخدم.
- تُرسل تلقائيًا مع كل طلب.

 2. التوكنات (Tokens)

- مثل JWT.
- تحتوي على معلومات مشفرة عن المستخدم.
- تُرسل مع كل طلب في رأس HTTP.

 3. التخزين المحلي (Local Storage)
- يُستخدم في تطبيقات الويب الحديثة.
- يُخزن البيانات على المتصفح.

 الأسئلة الشائعة (FAQ)


 1. ما الفرق بين Stateful وStateless؟
- Stateful: يحتفظ الخادم بمعلومات عن المستخدم بين الطلبات.
- Stateless: لا يحتفظ الخادم بأي معلومات، كل طلب مستقل.

 2. لماذا يُفضل استخدام Stateless في REST APIs؟
لأنها:
- تسهل التوسع
- تقلل من تعقيد إدارة الحالة
- تجعل النظام أكثر مرونة 

اقرأ عن RESTful APIs

 3. كيف يمكن للخادم التعرف على المستخدم في نظام Stateless؟
من خلال:
- الكوكيز
- التوكنات
- معلومات تُرسل مع كل طلب تفاصيل عن إدارة الجلسات


 4. هل يمكن الجمع بين Stateful وStateless في نفس النظام؟
نعم، بعض الأنظمة تستخدم مزيجًا:
- Stateless في الواجهة الأمامية
- Stateful في قواعد البيانات أو الجلسات
[أمثلة على الهياكل المختلطة](https://www.nginx.com/blog/building-microservices-using-an-api-gateway/)

 5. ما هي التحديات الأمنية في الأنظمة Stateless؟
- التوكنات قد تُسرق إذا لم تُشفّر جيدًا
- الكوكيز قد تُستخدم في هجمات XSS
تعرف على حماية التوكنات

 خلاصة المقال

- الأنظمة عديمة الحالة (Stateless) هي العمود الفقري للإنترنت الحديث.
- توفر مرونة، موثوقية، وقابلية توسع عالية.
- يتم محاكاة الحالة عند الحاجة باستخدام تقنيات مثل الكوكيز والتوكنات.
- رغم بعض العيوب، فإن فوائدها تجعلها الخيار الأمثل لتطبيقات الويب الحديثة.


 قائمة مختصرة لأهم المصطلحات

- Stateless Protocol: بروتوكول لا يحتفظ بالحالة.
- HTTP: بروتوكول عديم الحالة يستخدم في تصفح الإنترنت.
- Cookies: ملفات تعريف تُستخدم لمحاكاة الحالة.
- Tokens: رموز تعريف تُرسل مع كل طلب.
- REST API: واجهة برمجة تطبيقات تعتمد على Stateless.

 روابط مفيدة

- ما هو HTTP؟
- مقدمة إلى REST
- ما هو Web Server؟
- JWT Tokens


إذا كنت مطورًا أو مهتمًا بفهم كيفية عمل الإنترنت، فإن إدراك الفرق بين Stateful وStateless هو خطوة أساسية لفهم بنية الأنظمة الحديثة. فالعالم الرقمي لا يتوقف عن التطور، ولكن المبادئ الأساسية مثل "عديم الحالة" تظل حجر الأساس في هذا التطور.

علامات ذات صلة :