
HTTP Introduction
مقدمة في HTTP
في هذا الدرس سوف نتعرف علي البروتوكول HTTP وما الدور الزي يقوم به وما علاقته بالويب.
التاريخ
الدروس
المستوى
اللغة
المشاهدات
المواضيع
What is HTTP
</> نظرة عامه عن بروتوكول An overview of HTTP
ال HTTP هو المسئول عن نقل ال resources الملفات من النوع hypermedia documents مثل ملفات ال HTML إنه أساس أي تبادل بيانات على الويب بين العميل Client وبين السيرفر , مما يعني ان الطلبات تنشأ من جهاز المستخدم علي المتصفح , المستند او الصفحة تتكون من resources ملفات منفصلة بمعني ان صفحة الويب بداخلها ملفات مرئية Videos والصور Images والنصوص Text وال Scripts بداخل صفحة الويب HTML كل resource يتم نقله بشكل منفصل في HTTP Request.
HTTP هو بروتوكول Hyper text transfer protocol هو المسئول عن transmitting نقل ملفات من النوع hypermedia documents مثل ملفات ال HTML وتم تصميمه للتواصل بين Web Browsers متصفحات الويب Web Servers وخوادم الويب وايضاً يستخدم لاغراض اخري.
و HTTP يتبع classical client-server model نموذح كلاسيكي للمتصفحات الموجوده بداخل اجهزة المستخدمين لكي يقوم بفتح اتصال عند ال client المستخدم لكي يقوم بأرسال request طلب من ال Server وهذا الاتصال يظل مفتوحاً حتي يتلقي ال response من ال Server , لا يقوم بروتوكول ال HTTP بحفظ اي بيانات سواء كان Request او Response للطلبات السابقة.
HTTP تم تصميمه للتواصل بين Web Browsers متصفحات الويب Web Servers وخوادم الويب وايضاً يستخدم لاغراض اخري.
و HTTP يتبع classical client-server model نموذح كلاسيكي للمتصفحات الموجوده بداخل اجهزة المستخدمين لكي يقوم بفتح اتصال عند ال client المستخدم لكي يقوم بأرسال request طلب من ال Server وهذا الاتصال يظل مفتوحاً حتي يتلقي ال response من ال Server , لا يقوم بروتوكول ال HTTP بحفظ اي بيانات سواء كان Request او Response للطلبات السابقة.


عندما يتصل ال Client جهاز المستخدم وال Server يتم بواسطة رسايل فردية هذه الرسايل ترسل من ال Client عادة المتصفح هو الزي يرسل ال HTTP Request الطلب والرسالة تذهب الي ال Server والسيرفر يقوم بالرد علي ال Client وهذه تسمي HTTP Response رد السيرفر.
تم تصميم HTTP في أوائل التسعينيات ، وهو بروتوكول قابل للتطوير بمرور الوقت. إنه بروتوكول من طبقات ال Application Layers يتم إرساله عبر TCP ، أو عبر اتصال TCP مشفر بواسطة TLS ، على الرغم من إمكانية استخدام أي بروتوكول نقل موثوق به نظريًا. نظرًا لقابليته للتوسعة ، فإنه لا يستخدم فقط لجلب المستندات مثل ال HTML ، ولكن أيضًا الصور ومقاطع الفيديو أو لنشر المحتوى على الخوادم ، كما هو الحال مع نتائج HTML Forms. يمكن أيضًا استخدام HTTP لجلب أجزاء من المستندات لتحديث صفحات الويب عند الطلب.
</> كيف يعمل ال HTTP
بروتوكول ال HTTP هو يخدم ال Client user-agent وهو وكيل عن المستخدم من المتصفح الي ال Server ويسمي ايضاً proxy
في معظم الاحيان الوكيل عن المستخدم هو المتصفح وهو يسمي ال proxy ويمكن ان يكون اي شئ مثل robot يذهب الي السيرفر ويقوم باداء وظيفة ما.
كل طلب Request فردي يذهب الي ال Server لكي يقوم بمعالجة اي يقوم بعمل عمليات معينه علي هذا الطلب ثم يرسل الرد Response الي المتصفح تتم هذه العمليات بداخل كيانات جميعهم تسمي proxies والتي تتكون من عمليات مختلفه.

بفضل الطبقات المصممة لل Web هي عباره عن طبقات تتم في الخلفية من خلال transport layers طبقات النقل الخفيه عن طريق الشبكات يعد ال HTTP في اعلي طبقات ال transport layers انها مهم جداً فهم هذه الرحله لحل المشاكل التي تحدث اثناء الاتصال مع سيرفرات الويب.
</> Client: the user-agent
Client: the user-agent وهو وكيل العميل المستخدم
ال user-agent هي اي اداة تتكلم نيابه عن ال User يتم تقمص هذا الدور بشكل اساسي متصفح الويب نايبه عن ال User ولكن يمكن أيضًا تقمصة بواسطة البرامج التي يستخدمها المهندسون ومطورو الويب debug تشغيل او اختبار تطبيقاتهم.
متصفحات الويب هي دائمًا الكيان الذي يبدأ الطلب HTTP Request . إنه ليس الخادم Server أبدًا (على الرغم من إضافة بعض الآليات لمحاكاة الرسائل التي يبدأها الخادم).
لكي يتم عرض صفحة الويب علي المتصفح المتصفح يرسل HTTP Request لكي يمسك بصفحة ال HTML يقوم بالمتصفح بعد ذلك بتحليل صفحة ال HTML لان يوجد بداخلها ملفات اخري موجودة علي السيرفر صم يقوم المتصفح بارسال عدة طلبات جديد HTTP Requests لكي يمسك بباقي الصفحات المربوطه بملف ال HTML :
- طلب لصفحة ال CSS
- طلب لصفحات ال Script JS Files
- طلبات للصور
- طلبات للفيديوهات
هذه الطلبات فرعية من ال Request الاساسي ثم يقوم المتصفح بعد ذلك بعمل Render لهذه الملفات ثم يقوم باكمال العمليه بعد استلامة ال HTTP Response من الخادم Server
صفحة الويب هي عبارة عن hypertext document يعني ذلك ان هناك اجزاء من هذه الصفحه عبارة عن Links روابط لصفحات اخري يتم ارسال HTTP Request اخر من خلالها عندما يقوم المستخدم بالنقر فوق هذه الروابط مره اخري لكي تعرض صفحات ويب جديد اخري لاحقاً.
</> خادم الويب Web server
على الجانب الآخر من قناة الاتصال يوجد الخادم Web Server ، الذي يخدم العميل بناء علي طلبة. يظهر الخادم كآلة واحدة فقط تقريبًا ؛ ولكنها قد تكون في الواقع مجموعة من الخوادم التي تشترك في العمل (موازنة التحميل) ، تحتوي الخوادم علي (ذاكرة التخزين المؤقت ، قاعدة البيانات ، الخ) ، مما يؤدي إلى إنشاء صفحة الويب كليًا أو جزئيًا عند الطلب.
لا يكون الخادم بالضرورة جهازًا واحدًا ، ولكن يمكن استضافة العديد منها لتقوم معاً بعرض صفحة الويب . باستخدام HTTP / 1.1 ورأس المضيف ، يمكنهم أيضًا مشاركة عنوان IP نفسه. ويمكن لكل خادم IP مختلف.

</> Proxies
يوجد بين متصفحات المستخدمين browsers و الخادم server الكثير من رسائل الأرسال والاستقبال من والي الخادم ونظرا الي ان الهيكل الخاص بالويب هو متعدد الطبقات فأن معظم هذه العمليات يتم تنفيذها من خلال شبكات الارسال transport network
يمكن أن تصبح شفافًا في طبقة HTTP ويحتمل أن يكون لها تأثير كبير على الأداء في تنفيذ هذه العمليات
- تسمي كل هذه العمليات ب Proxies او "وكلاء" ويمكن ان تكون هذه ال proxies في احدي الحالتين التاليين
- transparent : ويتم فيها إعادة توجيه الطلبات التي يتلقونها دون تغييرها بأي شكل من الأشكال ،
- non-transparent : في هذه الحالة سيقومون بتغيير الطلب بطريقة ما قبل تمريره إلى الخادم
- ال Proxies تقوم بأداء العديد من العمليات وهي :
- Caching : يمكن ان يكون private او public , مثل ال cache الخاص بمتصفحات الويب
- filtering : وهو مثل برامج الخاصة بفحص الفيروسات antivirus
- load balancing : وهي تقوم خلالها بالسماح للعديد من الخوادم بالعمل علي العديد من ال طلبات Request
- authentication : وهي تستخدم للتحكم في عملية الوصول للمصادر
- logging : وهي خاصة بالسماح بتخزين المعلومات التاريخية

</> HTTP Request / Response
يتم الاتصال بين المستخدم (client ) والخادم (server) عن طريق عملتين أساسيتين وهما Request و Response ;
- يقوم المستخدم بأرسال طلب للخادم عن طريق بروتوكول HTTP
- يقوم الخادم باستلام الطلب من المستخدم
- يقوم الخادم بتشغيل البرامج الخاصة به لاستلام طلب المستخدم
- يقوم الخادم بأرسال المعلومات الي المستخدم وهذه العملية تسمي response
- يقوم المستخدم باستلام المعلومات من الخادم عن طريق المتصفح الخاص به

</> The HTTP Request Circle
عملية request & response مماثلة للمثال السابق
- يقوم المتصفح بطلب صفحة HTML , فيقوم الخادم بأرسال ملف ال HTML الي المتصفح
- يقوم المتصفح بطلب ملف style , فيقوم الخادم بأرسال ملف css
- يقوم المتصفح بطلب كود JavaScript . فيقوم الخادم بأرسال ملف JS
- يقوم المتصفح بطلب صورة من النوع JPG , فيقوم الخادم بأرسال ملف JPG
- يقوم المتصفح بطلب بيانات , يقوم المتصفح بأرسال ملف البيانات في صيغة (XML ، او JSON )
</> XHR - XML Http Request
تحتوي المتصفحات علي بنية (XHR ) والتي تعني XMLHttpRequest object
وهي عبارة عن عنصر من عناصر لغة JavaScript والتي تستخدم في أرسال البيانات بين المتصفح والخادم (server )
غالبا ما تقوم XML بأرسال واستلام البيانات لتعديل صفحة الويب
تستخدم XHR بروتوكولات اخري عن HTTP , والبيانات يمكن ان تتكون من انواع مختلفة مثل HTML ,CSS ,XML , JSON
يعتبر XHR كأمنية كبيرة بالنسبة للمبرمجين حيث يمكنك من خلاله :
- تحديث صفحة الانترنت بدون إعادة تحميلها مرة اخري
- طلب البيانات من الخادم بعدما يتم تحميل الصفحة
- استلام البيانات من الخادم
- ارسال البيانات الي الخادم في الخلفية
XHR تعتبر المضمون الاساسي ل AJAX و JSON
