# خادم ويب

خادم ويب أو ملقم الويب أو خادوم ويب (بالإنجليزية: web server)‏ هو البرنامج الذي يسمح لك بالتجول على شبكة إنترنت باستخدام متصفح ويب ورؤية الصفحات كالتي تراها الآن، وذلك عن طريق توفير الصفحات بصيغة لغة رقم النص الفائق (HTML) أو غيرها من الصيغ المستخدمة.
و من مزودات الويب الشهيرة:
* أباتشي
* آي آي إس

## خادم الشبكة

هو برنامج الحاسوب الذي يسلم (يخدم) المحتوى، مثل أي صفحة على شبكة إنترنت، وذلك باستخدام بروتوكول نقل النص الفائق ("Hypertext Transfer Protocol "HTTP)، وعلى المدى فإن خادم الشبكة يمكن أن يشير إلى العتاد المرئي «جهاز الحاسوب» أو العتاد البرمجي ويشمل ذلك «الآلة الافتراضية (Virtual machine)» أو البرنامج المسؤول عن خدمة المحتوى (Web Server Software).

## نبذة عامه

الوظيفة الأولى لخادم الشبكة هي تقديم صفحات الويب (وثائق لغة رقم النص الفائق) (HTML Document) وما يرتبط بها من محتوى (صور، ملفات صوتية، ملفات مرئية، صفحات الطرز المتراصة، جافا سكريبت، وغيرها من أنواع المحتوى) للعملاء. العميل هو متصفح ويب أو زاحف على شبكة الإنترنت، يطلب الحصول على مورد معين باستخدام بروتوكول نقل النص الفائق وإذا سارت الامور بشكل جيد، يستجيب الخادم (Server) مع مضمون تلك الموارد. المورد هو عادة ملف حقيقي على الخادم في الذاكرة الثانوية، ولكن هذا ليس صحيحا بالضرورة حيث يعتمد ذلك على كيفية تنفيذ خادم الشبكة لهذا الطلب. في حين أن وظيفة خوادم الشبكة الأساسية هي خدمة المحتوى، فإن التنفيذ الكامل للطلب يشمل أيضا وسيلة لتلقي المحتوى من العملاء. هذه الميزة تستخدم لتقديم الاستمارات على شبكة الإنترنت، بما في ذلك تحميل الملفات. وهناك كثير من خوادم الشبكة العامة تدعم جانب الخادم النصي (مثل النص المتشعب الخادم أباتشي). وهذا يعني أن سلوك خادوم الشبكة يمكن كتابته في ملفات منفصلة، في حين أن برنامج الخادم الفعلي لم يتغير.
عادة تستعمل هذه الوظيفة لإنشاء مستندات لغة رقم النص الفائق (HTML) مقابل عودة وثائق ثابتة. هذا ويشار إلى الديناميكية والمحتوى الثابت على التوالي. ويمكن العثور على خادم الشبكة في أجهزة مثل الطابعات وأجهزة التوجيه من أجل تسهيل الإدارة وذلك باستخدام واجهة مستخدم مألوفة على شكل صفحة على شبكة الإنترنت.

## تاريخ خوادم الشبكة

خادم الشبكة الأول بالعالم وجد في عام 1989 حين اقترح تيم بيرنرز لي على صاحب العمل سيرن (Cern المنظمة الأوروبية للبحوث النووية) مشروعا جديدا، والذي كان يهدف إلى تسهيل تبادل المعلومات بين العلماء باستخدام نظام هايبرتكست.
نتيجة لتنفيذ هذا المشروع، في عام 1990 كتب بيرنرز لي برنامجين:
* مستعرض (Browser) أسماه الشبكة العالمية (World Wide Web).
* خادم شبكة، عرف فيما بعد باسم سيرن Httpd والذي كان أول خادم شبكة في العالم.
وبين عامي 1991 و 1994 وبالرغم من بساطة وفعالية التقنيات المستخدمة في وقت مبكر لتصفح وتبادل البيانات من خلال الشبكة العالمية فقد ساعدت وأشارت لهم بالعديد من أنظمة التشغيل المختلفة والتي انتشر استخدامها بين الكثير من الفئات الاجتماعية المختلفة من الناس، فكانت الأولى في المنظمات العلمية، ثم في الجامعات، وأخيرا في مجال الصناعة. وفي عام 1994 قرر تيم بيرنرز لي تشكيل اتحاد لشبكة ويب العالمية وذلك لتنظيم وتطوير العديد من التقنيات المعنية وذلك من خلال عملية التوحيد.

## السمات المشتركة

1-الاستضافة الافتراضية (Virtual hosting) لخدمة العديد من المواقع باستخدام عنوان بروتوكول إنترنت واحد (IP address). 2-الملف كبير الدعم يكون قادر على خدمة ملفات حجمها أكبر من 2 غيغابايت (GB) على نظام تشغيل يدعم هيكلية 32 بت. 3-التحكم بعرض النطاق الترددي للحد من سرعة الاستجابة وتشبع الشبكة وبذلك تكون قادرة على خدمة المزيد من العملاء.

## أصل المحتوى العائد

يقوم خادم الويب بخدمة نوعين من المحتويات:
* ثابت (ٍStatic): حيث لا يتم معالجة المحتوى في هذه الحالة وانما يتم فقط خدمته.
* ديناميكي (Dynamic): وفي هذه الحالة يقوم الخادم بمعالجة المحتوى قبل ارساله إلى المتصفح، وعادة ما تتم عملية المعالجة باستخدام إحدى لغات البرمجة.
و من الجدير بالذكر القول أن خدمة المحتوى الثابت عادة ما تكون أسرع (من 2 إلى 100 مرة) من خدمة المحتوى الديناميكي، وخاصة إذا كان الأخير يعتمد على سحب البيانات من قاعدة بيانات أو أن يقوم الخادم بسحب البيانات من خادم اَخر.

## مسار الترجمة

خوادم الشبكة قادرة على رسم خارطة طريق عنصر محدد موقع المعلومات (URL) إلى:
* موارد نظام الملف المحلي (للطلبات الثابتة).
* اسم برنامج داخلي أو خارجي (للطلبات الديناميكية).
للطلب الثابت يكون مسار موقع المعلومات محدد من قبل العميل وهو نسبة إلى الدليل الجذري (Root directory) لخادم الشبكة وهذا هو العنوان الذي سيطلب من قبل العميل، مثال ذلك:
سيترجم متصفح الإنترنت (Web browser) للعميل ذلك إلى اتصال www.example.com بما يلي النص المتشعب HTTP 1.1 طلب
خادم الويب على www.example.com سيلحق المسار المعطى بمسار الدليل الجذري (Root directory) وفي آلآت يونيكس هذا هو الشائع /var/www/ والنتيجة هي مورد نظام الملف المحلي: var/www/path/file.html/ سيقرأ خادم الشبكة الملف -حال وجوده- ومن ثم يرسل الاستجابة إلى متصفح الإنترنت للعميل وسيصف الرد محتوى الملف واحتواء الملف نفسه.

## حدود السعة التحملية

يضع خادم الشبكة (البرنامج) حدوداً للسعة التحملية، وتعرف السعة التحملية لخادم الويب بالعدد الأقصى من الطلبات التي يستطيع تنفيذها في وقت واحد، وبما أنه لا يستطيع التعامل مع عدد لانهائي من اتصالات العملاء المتزامنة (عادة ما بين 2 و 80,000 وافتراضيا بين 500 و1,000 لكل عنوان) فلابد من وضع ضوابط للتحكم بالسعة التحملية وهذه الضوابط يتم تنفيذها عبر ما يلي:
* إعدادات الخادم الخاصة.
* نوع طلب المتشعب (HTTP).
* أصل محتوى (ثابت أو متحرك).
* تعمل الأجهزة والبرمجيات على الحد من عمل نظام التشغيل.
عندما يكون خادم الشبكة قريب من أو على حدود سعته التحملية، يصبح زائد عن طاقته، وبالتالي لا يستجيب.

## وضع النواة ووضع المستخدم لخوادم الشبكة (Kernel –mode and user-mode web servers)

ومن الممكن أن ينفذ خادم الشبكة إما في نواة نظام التشغيل (OS kernel)أو في فضاء المستخدم (User space) مثل التطبيقات العادية الأخرى، وضع النواة لخادم الشبكة (مثل تكس عندما يعمل على أنظمة لينكس أو الآي آي إس (IIS) الذي يعمل على أنظمة مايكروسوفت ويندوز) عادة ما يعمل بشكل أسرع لأنه جزء من النظام، وبذلك يمكنه مباشرة استخدام جميع الموارد التي يحتاجها، مثل:
* الذاكرة غير المقسمة إلى صفحات (Non-paged memory).
* شرائح الوقت لوحدة المعالجة المركزية (CPU time-slice).
* مخازن محولات الشبكة (Network adapter’s buffers).
خوادم الشبكة التي تعمل في وضع المستخدم لابد أن تطلب الإذن من النظام بالحصول على المزيد من ذاكرة الوصول العشوائي أو المزيد من موارد وحدة المعالجة المركزية. ليس فقط الطلبات إلى النواة هي التي تستغرق وقت طويلا، ولكنها ليست دائما راضية لأنها تتحمل موارد احتياطي النظام الخاص بها وكذلك تتحمل المسؤولية لتقاسم موارد الأجهزة مع جميع التطبيقات التي تكون قيد التشغيل. كما أنه لا يمكن للتطبيقات الوصول إلى المخازن الداخلية للنظام، الامر الذي يتسبب في نسخ عازل عديم الفائدة والذي يخلق عائق في وضع المستخدم لخادم الشبكة. ونتيجة لذلك، فإن الطريقة الوحيدة لجعل وضع المستخدم لخادم الويب مماثل لوضع النواة في الأداء هي طريقة رفع جودة رمز المعايير أعلى بكثير من الرموز المستخدمة في خادم شبكة آخر والذي يعمل في النواة. هذا هو أكثر صعوبة في ويندوز عنه في لينكس حيث أن وضع المستخدم أقل 6 مرات تحت ويندوز.

## أسباب الحمل الزائد

من الممكن أن تكون خوادم الشبكة زائدة الحمل وذلك بسبب:
* الكثير من حركة المرور على الشبكة.هناك الآلاف أو حتى الملايين من العملاء يستطيعون الوصول إلى مواقع عديدة على شبكة الإنترنت في فترة زمنية قصيرة.
* حجب الخدمة عن طريق اغراق الخادم بالطلبات (DoS Attack).
* طفيليات الكمبيوتر (Computer worms) التي تسبب حركة غير طبيعية في بعض الأحيان وذلك لأن الملايين من أجهزة الحاسوب المصابة (غير منسق فيما بينها).
* فايروسات إكس إكس إس (XXS)، يمكن أن تتسبب بارتفاع في حركة المرور بسبب إصابة الملايين من متصفحات الإنترنت أو خوادم الشبكة بها.
* روبوتات الشبكة العالمية.
* التباطؤ في شبكة الإنترنت، حيث تقدم طلبات العميل ببطء شديد وبذلك يزيد عدد الروابط إلى أن يتوصل إلى حدود الخادم.
* عدم توفر خوادم الويب، من الممكن أن يحدث هذا بسبب الصيانة المطلوبة أو لأمر عاجل أو لترقية أو بعض الأخطاء وحالات الفشل (قاعدة البيانات Data Base) وغيرها، وفي مثل هذه الحالات المتبقية تكون خوادم الشبكة في حالة حركة مما يؤدي إلى زيادة الحمل عليها.

## أعراض الحمل الزائد

* التأخر في خدمة المحتوى للعملاء.
* حين يقوم خادم الويب بارجاع رموز تدلل على حالة الخادم مثل 500، 502، 503، 504، 408، أو حتى 404
* في حالات نادرة جدا، ترسل محتويات جزئية فقط (و في هذه الحالة يمكن اعتبار هذا التصرف بمثابة خطأ برمجي حتى وان كان نتيجة حمل الزائد على أجهزة الخوادم).

## التقنيات المضادة للحمل الزائد

محاولة التغلب جزئيا ومنع حدوث الحمل الزائد، فأكثر مواقع الويب الشعبية تقوم باستخدام التقنيات الشائعة مثل إدارة حركة المرور في الشبكة باستخدام:
* الجدران النارية (Firewalls) لعرقلة حركة المرور غير المرغوب فيها والقادمة من مصادر عناوين سيئة أو وجود أنماط سيئة.
* يوجه المتشعب (HTTP) مديري المرور إلى الانخفاض، وتكون إعادة التوجيه أو إعادة الكتابة تتطلب وجود أنماط متشعب سيئة.
* عرض النطاق الترددي (Bandwidth) لإدارة وتشكيل حركة المرور، من أجل سلاسة استخدام الشبكة.
* نشر تقنيات التخزين المؤقت على الشابكة (الإنترنت).
* استخدام أسماء نطاقات مختلفة لخدمة مختلف المحتويات (الثابتة والمتحركة) من خوادم الشبكة المنفصلة، أي:
http://images.example.com
http://www.example.com
* استخدام أسماء نطاقات مختلفة و/أو حواسيب لفصل الملفات الكبيرة من الصغيرة والمتوسطة الحجم، والفكرة هي أن تكون قادرة تماما على تخزين الملفات الصغيرة والمتوسطة الحجم بكفاءة وذلك لتقديم خدمة كبيرة أو ضخمة (أكثر من 10—1000 ميغابايت) وذلك باستخدام إعدادات مختلفة.
* استخدام العديد من برامج خوادم الشبكة في حاسوب واحد، وكل واحد منها يتجه إلى بطاقة الشبكة الخاصة به وعنوان بروتوكول الإنترنت (IP address).
* استخدام العديد من حواسيب خوادم الشبكة والتي تجمع معا بحيث يتعامل بها وينظر إليها وكأنها خادم شبكة كبير (واحد).
* إضافة مزيد من الموارد المعدنية (ذاكرة الوصول العشوائي (RAM)، والأقراص) على كل حاسوب.
* ضبط نظام التشغيل للأجهزة وقدراتها واستخداماتها.
* استخدام العديد من برامج الحاسب الأكثر كفاءة لخوادم الشبكة، إلخ.
* استخدام الحلول الأخرى، خصوصا إذا كان المحتوى الديناميكي هو المعني.