نموذج طلب الخدمة[1] أو نموذج العميل/الخادم أو نموذج المنتفع والخادم[2] (بالإنجليزية: Client/Server Model) هو نموذج بُنيوي لتطبيق مُوزّع حيث يجري توزيع المُهام أو الأعمال بين الطرف الذي يُقدّم الخدمات أو الموارد ويُسمّى المُخدّم والطرف الذي يطلب الخدمة ويُسمّى العميل أو مُستخدم الخدمة.[3] غالباً ما يتّصل المُخدّم مع العميل عبر شبكة حواسب، حيث يعمل كل منهما على منصّة مُنفصلة، ولكن يُمكن أن يتواجد المُخدّم والعميل ضمن نفس النظام.[4]
يُكمن للمُخدّم أن يُشغّل برنامجاً واحداً أو أكثر من البرامج الخاصة بطرف المُخدم لتقديم خدمة واحدة أو أكثر أو مُشاركة الموارد مع عميلٍ واحدٍ أو أكثر، أمّا العميل فلا يُشارك موارده مع أحد، ولكنّه يطلب الخدمة أو الموارد من المُخدّم.[5] لذلك يبدأ العملاء بإنشاء قنوات اتصال مع المُخدّمات التي تنتظر مبادرتهم وتعمل على تقديم الخدمة المُناسبة لهم.
ورد ذكر شكل بدائيّ من نموذج طلب الخدمة في الوثائق المرجعيّة الخاصة بنظام أو أس 360[الإنجليزية] المُطوّر من قبل شركة أي بي أم في منتصف الستينيات من القرن الماضي، وتحديداً في الوثيقة المعنونة:[7] «مدخل لأداء الأعمال عن بعد»،(1) حيث كان الهدف الأساسي هو إنجاز عمل ما عن بُعد. في نهاية الستينيات، كان العمل في معهد ستانفورد للأبحاث يجري على بناء شبكة الأربانت، وقد ورد ذكر بُنيّة بدائيّة لنموذج طلب الخدمة في أوائل وثائق التعليقات، حيث ورد في الوثيقة (RFC 4) المُعنونّة:[8] «الجدول الزمني للشبكة» (2) استعمال لمصطلح المُضيف المُستخدم (بالإنجليزية: Using Host) والمُضيف المُخدّم (بالإنجليزية: Serving Host)، وهي تصف أشكال بدائيّة من العملاءوالمُخدّمات.
ظهرت مُصطلحات مُشابهة في الوثيقة (RFC 5) المُعنونّة:[9] «لغة الترميّز وفك الترميز» (3)، حيث كان الهدف الأساسي من هذه اللغة هو تطوير القدرة على إرسال أوامر والردّ عليها بشكل مُرمّز عبر الشبكة، وسميت أطراف العلاقة بمُضيف المستخدم (بالإنجليزية: User-Host) ومُضيف المُخدم (بالإنجليزية: Server-Host). أخيراً، في عام 1978م، نشر باحثون في شركة زيروكسورقة بحثيّة بعنوان:[10] «الفصل بين المُعطيات والوظائف في نظام توزيع الملفّات»،(4) وقد حرص كاتبو البحث على التمييز بين المُستخدموالعميل، الذي عرّفوه بأنّه مُستخدم لعقدة في الشبكة. أمّا استعمال كلمة مُخدّم بمعناها الحالي فقد بدأ في العام 1992م.[11]
يتألّف نموذج طلب الخدمة من مجموعة من العُملاءوالمُخدّمات بالإضافة إلى الشبكة التي تصلّ فيما بينهم، ويُمكن تصنيف البُنى السابقة بحسب عدد المراحل اللازمة ليحصل العميل على الخدمة، والتي تُسمى مُستويات (بالإنجليزية: Tier)، بالشكل التالي:[12]
بُنيّة ثُنائيّة المُستويات (بالإنجليزية: Two-Tiers Architecture): وهو أبسط بُنية لنموذج طلب الخدمة، وفيه يتوزّع العمل بين مُخدّم وعدد من العُملاء، يضمّ خادم المُخدّم قاعدة بيانات خاصّة بالخدمة التي يُقدمّها. بشكلٍ عام، يجب على كل عميل ينفذ إلى قاعدة البيانات. عبر طلب يُقدّم إلى المُخدّم الذي يُعالج الطلبات، من سلبيات هذه البُنية محدوديّة عدد العُملاء الذين يُمكن للمُخدم دعمُهم، بالإضافة لوجود إشكالات أمنيّة بسبب حاجة كل عميل للنفاذ بشكلٍ مُستقل إلى قاعدة البيانات.[13]
بُنيّة ثُلاثيّة المُستويات (بالإنجليزية: Three-Tiers Architecture): تم تطوير هذا النموذج لتجاوز محدوديّة البُنيّة ثنائيّة المستويات،[14] في هذه البُنية يُضاف مُستوى ثالث، في الوسط بين المستويين السابقين بهدف فصل التعامل مع العميل عن إدارة قاعدة بيانات،[15] يضمّ هذا المُستوى بالإضافة للعميل ومُخدّم قاعدة البيانات، مُخدّماّ خاصّاً بالتطبيقات. يُمكن أن يعمل مُخدّم التطبيقات على منصّة مُستقلة، أو أن يتواجد على نفس المنصة التي يعمل عليها مُخدّم قاعدة البيانات. في البنية ثُلاثية المُستويات، فقط مُخدّم التطبيقات هو من يملك صلاحيّات النفاذ إلى قاعدة البيانات الخاصّة بالخدمة عبر مُخدّم قاعدة البيانات، وذلك عوضاً عن منح هذه الصلاحيّات لكل عميل يتقدم بطلب الحصول على الخدمة كما هو الحال في البنيّة ثُنائية المستويات. إنّ البنية السابقة هي البُنية ثُلاثيّة المُستويات الأساسيّة، وتتنوع البُنى المُشتقة عنها باختلاف التطبيقات، ومن أهمها البُنى التي تحتوي على وسيط (بالإنجليزية: Broker)،[16] والبنى التي تحتوي على أكثر من قاعدة بيانات مُتزامنة.
بُنيّة مُتعددة المُستويات (بالإنجليزية: N-Tiers Architecture): إنّ تطوير هذا النموذج هو نتيجة للاعتماد المتزايد على شبكة الإنترنت، وهو يسمح للعميل بالنفاذ إلى الخدمة عبر مُتصفّخ ويب، أيّاً كانت الخدمة وأيّاً كان التطبيقات. في هذه البُنيّة، ونظراً إلى اعتماد العميل على مُتصفّخ ويب فإنّ طبقة جديدة تحتوي مُخدّم ويب سوف تضاف بين العُملاء ومُخدّم التطبيقات، ليصبح عدد الطبقات في هذه البنيّة أربعة، الأولى تضمّ العميل والمُتصفّح، والثانية تضم مُخدّم ويب، والثالثة تضمّ مُخدّم التطبيقات، أمّا الرابعة فتحتوي مُخدّم قاعدة البيانات وقاعدة البيانات الخاصّة خدمة بالخدمة. يُمكن تعميم هذا النموذج ليضم (N) مستوى.
لا يتواصل العُملاء فيما بينهم من أجل الحصول على الخدمة، بل يقُومُون بإرسال طلباتهم إلى المُخدّمات. ينتظر المُخدّم استقبال طلبات العملاء، وهو قادر على تقديم الخدمة لأكثر من عميل بنفس الوقت، يمكن أن تتواصل المُخدّمات التي تقدّم نفس الخدمة مع بعضها البعض من أجل مُزامنةقواعد بياناتها وصُولاً إلى قاعدة بيانات مُشتركة، تسمّى هذه العملية الاتصال بين المُخدّمات (بالإنجليزية: Inter-Server Communication).
بشكلٍ عام، الخدمة هي شكل تجريديّ يُعبّر عن الموارد التي يمكن للمُخدم أن يقدّمها للعُملاء. إنّ نظام طلب الخدمة مُصمم بحيّث يكون العُملاء غير معنيين بالآليّة التي يقوم فيها المُخدّم بالاستجابة للطلبات، ويتوجب عليهم فقط أن يكونوا قادرين على فهم الردّ الوارد من المُخدّم، ويحصل ذلك عن طريق تشغيل العميل لأحد البروتوكولات الخاصّة بالخدمة المطلوبة.
يتبادل العميل والمُخدّم الرسائل ضمن نمط الطلب/الرد (Request/Response)، حيث يرسل العميل طلباً فيقوم المُخدّم بالردّ عليه، إنّ هذا النمط هو مثال عن عمليّة اتصال بين العمليات. لنجاح الاتصال يجب أن يدعم المُخدّم والعميل نفس بروتوكولات الاتصالات، حيث تحدد هذه البروتوكولات مجموعة القواعد الخاصّة بتنسيق وإعداد ونقل البيانات فيما بينهما بحيث تحصل العمليات السابقة بطريقة مفهومة لطرفي الاتصال.[18]
قد يستقبل |المُخدّم طلبات من العديد من العُملاء في فترة قصيرة، ويمكن أن يُشكل هذا ضغطاً على موارده، لذلك تعمد المُخدمات إلى الاعتماد على نظام جدولة لطلبات العُملاء، بحيث يتمّ تصنيف هذه الطلبات بحسب أهميتها. قد تُشكّل محدوديّة موارد المُخدّم ثغرة أمنيّةلهجوم إيقاف الخدمة،[23] حيث يعمد المهاجمون إلى استغلال التزام المُخدّم بالرد على طلبات العُملاء فيقومون بإرسال الطلبات بمعدّلٍ مُفرط.
فيما يلي أمثلة عن عمل نموذج طلب الخدمة، يُظهر المثال الأول كيفيّة عمل النموذج مع بروتوكول التهيئة الآليّة للمُضيفين (DHCP)،[24] حيث يمكن أن يعمل البروتوكول بحسب النموذج بشكلين، إمّا وفق بنية ثنائية المُستويات، أو ثلاثيّة المستويات. أمّا المثال الثاني، فهو مُخصص لإظهار كيفيّة عمل النموذج عند تصفّح الإنترنت.
مثال عن عمل النموذج في بروتوكول التهيئة الآليّة للمُضيفين
يعمل بروتوكول التهيئة الآلية للمُضيفين على تزويد المُضيفين بالإعدادات اللازمة لنجاح اتصالهم بالشبكة أو قيامهم بوظائفهم. بشكلٍ أساسيّ، يقوم البروتوكول بتزويد المُضيف بعنوان بروتوكول إنترنت وقناع الشبكة (Network mask) وعنوان المخرج الافتراضي[الإنجليزية]. هناك إمكانيّة لتزويد المُضيف بعدد كبير من الخيارات الأخرى. يعمل بروتوكول التهيئة الآلية للمُضيفين وفق نموذج طلب الخدمة، حيث تُعرّف مُحددات البروتوكول عميلَ البروتوكول بأنّه مُضيف إنترنت يستخدم البروتوكول من أجل الحصول على إعدادات التهيئة، ومُخدّم البروتوكول بأنّه مُضيف إنترنت يُقدّم إعدادات التهيئة لعملاء البروتوكول.
يُمكن أن يعمل البروتوكول بشكلين، الأول هو النموذج المُباشر، وهو نموذج طلب خدمة ثنائيّ المُستويات، حيث يملك المُخدّموالعميل عناوين إنترنت من نفس الشبكة، أيّ أنّهما يتواجدان ضمن نفس نطاق البث العام، أمّا النموذج الثاني، فهو نموذج الوسيط، وهو نموذج طلب خدمة ثُلاثي المُستويات، وفيه يكون العميل والمُخدّم في |نطاقي بث عام مُختلفين، أيّ في شبكتين مُختلفتين، ويُوجد في شبكة العميل وسيط للمُخدّم يقوم بنقل الرسائل بين العميل والمُخدّم.
رسالة الاكتشاف (DHCP Discovery): وتُرسل من العميل إلى المُخدّم، وتكون موجّهة إلى أي مُخدّم للبروتوكول موجود في نطاق البث العام، كما يُمكن أن تُستخدم هذه الرسالة لطلب مُحددات سابقة، مثل العنوان القديم الذي استضافه المُضيف.
رسالة العرض (DHCP Offer): وهي ردّ على رسالة الاكتشاف، وتُرسل من المُخدّم إلى العميل، وتتضمن معلومات عن المُخدّم الذي يقدّم عرض التهيئة ومعلومات عن العرض نفسه.
رسالة الطلب (DHCP request): وتُرسل من العميل إلى المُخدّم، وتتضمن طلباً بالتزويد بمعلومات التهيئة بحسب العرض الذي تمّ تقديمه في الرسالة السابقة.
إشعار التأكيد (DHCP Acknowledgement): ويُرسل من المُخدّم إلى العميل، وهو آخر مرحلة من مراحل التهيئة، ويتضمّن الإشعار معلُومات التهيئة الخاصّة بالعميل، ويمكن للعميل استعمال هذه المعلومات بعد تلقيه إشعار التأكيد.
تصفّ الوثيقة (RFC 3046) المعنونّة:[26] «معلومات عن خيار وسيط النقل الخاصّ ببروتوكول التهيئة الآليّة للمُضيفين»(5) كيفيّة استخدام أحد خيارات البروتوكول من أجل توسيع مجال عمل البروتوكول وتمكينُه من تقديم خدمة التهيئة الآلية لمُضيفين لا يتواجدون ضمن نطاق بثّه العامّ.
لينجح المُخدّم في تقديم خدمته في شبكة بعيدة، لابدّ من وجود وسيطٍ له في تلك الشبكة، يقوم هذا الوسيط بنقل الرسائل بين العميلوالمُخدّم. يجب تهيئة الوسيط وتزويده بعنوان بروتوكول الإنترنت الخاصّ بالمخدّم. بعد التهيئة يقوم الوسيط بانتظار رسائل الاكتشاف التي يُرسلها العملاء،[27] ثُمّ يقوم بتوليد رسائل طلب مُكافئة نحو المُخدّم. لا يكون العملاء مُدركين لوجود الوسيط الذي غالباً ما يكون أحد منافذالمُوجّهات المُتصلة مع الشبكة البعيدة.
في المثال المدروس هنا، يوجد المُخدّموالعميل في شبكتين مختلفتين، يتصل الموجه (R1) مع شبكة العميل، ويلعب منفذالموجّه دور وسيط المُخدّم، يُمكن الاطلاع على طوبولوجيا الشبكة من الشكل المُرفق جانباً، إنّ الرسائل المتبادلة بين العميلوالمُخدّم مشابه من حيث النوع والترتيب للرسائل في المثال السابق، ولكنّ المسار الذي تسلكه يكون مُختلفّاً.
تكون الرسائل المتبادلة بين العميل والوسيط رسائل بثّ عام، أما تلك المُتبادلة بين الوسيط والمُخدّم فتكون رسائل فريدة، ويكون مسار الرسائل بالشكل التالي:
يُرسل العميل رسائله على شكل رسائل بثّ عام في شبكته المحليّة (LAN)، تصل هذه الرسائل إلى الوسيط الموجُود في تلك الشبكة.
في هذا المثال[30] يوجد ثلاث طرفيات، الأولى هي حاسب المُستخدم، والثانيّة هي مُخدّم الويب البعيد (Web Server)، والثالثة هي مُخدّم نظام تسميّة النطاقات البعيد (Remote DNS Server)، يضمّ حاسب المستخدم مُتصفّح ويب ومُخدّم محلّيّ لنظام تسمية النطاقات (Local DNS Client). يلعب مُتصفّح الويب دور عميل الويب (Web Client) وعميل نظام تسميّة النطاقات (DNS Client).
تبدأ العملية عندما يقوم المُستخدم بإدخال اسم موقع ويب لأول مرة في المُتصفّح من أجل تصفّحه، وتتابع مراحل العمل بالشكل التالي:
يحصل عميل نظام أسماء النطاقات على اسم الموقع، ويُرسل طلباً لمُخدّم نظام أسماء النطاقات المحلّيّ طالباً منه خدمة تبديل الاسم بالعنوان الموافق.
يستقبل مُخدّم نظام تسميّة النطاقات الطلب، وبما أنّ تصفّح الموقع يجري للمرة الأولى، فلا وجود لسجلّات خاصّة به في قاعدة البيانات المحلّيّة، فيقوم مُخدّم نظام أسماء النطاقات المحلّيّ بإرسال الطلب إلى مُخدّم نظام أسماء النطاقات البعيد.
يصلّ الطلب إلى نظام أسماء النطاقات البعيد، يُعالج المُخدّم البعيد الطلب ويُرسل ردّاً بالعنوان المُوافق إلى مُخدّم نظام أسماء النطاقات المحلّيّ.
يصلّ الردّ إلى نظام أسماء النطاقات المحلّيّ، فيُسجّل العنوان المُوافق للاسم في قاعدة بياناته المحليّة، ثُمّ يُرسل الردّ إلى عميل نظام أسماء النطاقات، ونتيجة للعملية يحصل المُتصفّح على عنوان موقع الويب.
يطلب عميل الويب خدمة تصفّح موقع الويب المُحدد بالعنوان من مُخدّم الويب البعيد.
بالإضافة لنموذج طلب الخدمة، هناك نموذج عمل آخر هو نموذج القرناء (P2P)،[31] ولهذا النموذج تطبيقات عديدة في مجال الحوسبة الموزّعة. يعتمد نموذج القرناء على آليّات عمل مُختلفة مقارنة بنموذج طلب الخدمة بالإضافة لامتلاكه بُنيّة معماريّة خاصّة.
في نموذج طلب الخدمة، تُصنّف الطرفيّات لتكون إمّا مُخدّمات أو عملاء، لا يتواصل العملاء مع بعضهم البعض بشكلٍ مُباشر، ولابد من وجود وسيط هو المُخدّم. أمّا في نموذج القرناء، فتُعتبر كل الطرفيات قرين،(6) وهي تتواصل مع بعضها البعض بشكلٍ مُباشر بدون الحاجة لوجود وسيط.[22]
إنّ أحد الأهداف الرئيسيّة الكامنة خلف تصميم نموذج طلب الخدمة هو خلق نقطة تحكّم مركزيّة في النظام لتُقدّم الخدمةللعُملاء، تتجمع في هذه النقطة قُدرات الحوسبةوالتخزين، ويجب أن يأخذ التصميم بالحسبان عدد العُملاء الأعظميّ المُتوقّع، وغالباً ما تُستخدم آليّات توزيع الحمل وأنظمة تجاوز الفشل (Failover) على نطاقٍ واسع. أمّا في الشبكات التي تعتمد نموذج القرناء، فيتشارك قرينان أو أكثر مواردهما ويتواصلان ضمن نظام غير مركزيّ. تكون القرناء مُتكافئة أي أنّها تملك أدواراً مُتساويّة ضمن شبكة ذات بنيّة غير هرميّة الامتيازات.
في نموذج طلب الخدمة، يجب أن تُحقق المُخدّمات توافريّة عاليّة، فقد يُسبب فشل المُخدّم فشلاً في كامل النموذج بسبب مركزيّة النظام. أمّا في نموذج القرناء، فإنّ التوافريّة العاليّة ليست مطلباً أساسيّاً بسبب وجود قرائن إضافيّة فائضة تُعوّض النقص الحاصل في الخدمة أو الموارد.[32]
^"The client/server model". International Business Machines Corporation (IBM) (بالإنجليزية). Archived from the original on 2017-08-04. Retrieved 2017-08-05.
^Israel، Jay E.؛ Mitchell، James G.؛ Sturgis، Rahner (1978). "Separating Data from Function in a Distributed File System". Xerox Palo Alto Research Center Computer Science Laboratory. Xerox Palo Alto Research Center,. ج. 78.{{استشهاد بدورية محكمة}}: صيانة الاستشهاد: علامات ترقيم زائدة (link)
^Gallaugher، John M.؛ Ramanathan، Suresh C. (1996). "Choosing a Client/Server Architecture". Information Systems Management. Taylor & Francis. ج. 7 ع. 13: 7-13.
^Adkr، Richard M. (أبريل 1995). "Distributed coordination models for client/server computing". Computer. IEEE. ج. 28 ع. 4: 14-22. ISSN:0018-9162.
^ ابYongsheng، Huang؛ Xiaoyu، Tian؛ Zhongbin، Tang (يونيو 2013). "An Optimization Model for the Interconnection among Peers of the P2P Network". Journal of Applied Sciences. ج. 13 ع. 5: 700-707.
^Fielding, R.; Gettys, J.; Mogul, J.; Frystyk, H.; Masinter, L.; Leach, P.; Berners-Lee, T. (Jun 1999). "Hypertext Transfer Protocol -- HTTP/1.1". The Internet Society (بالإنجليزية). Archived from the original on 2019-09-22. Retrieved 2017-08-05.
^Schollmeier, R. (2001). 1st International Conference on Peer-To-Peer Computing:A definition of peer-to-peer networking for the classification of peer-to-peer architectures and applications (بالإنجليزية). IEEE. ISBN:0-7695-1503-7.
^Wu، BangYu؛ Chi، Chi-Hung؛ Liu، Cong؛ Xie، ZhiHeng؛ Ding، Chen (ديسمبر 2010). "High Availability Data Model for P2P Storage Network". Web Information Systems Engineering – WISE. springer.: 322-327.