السبت، 29 سبتمبر 2018

كيفيه طريقة عمل بروتوكول HTTP

نحو تصفح الويب فان الموقف كما يلي: تجلس على حاسبوك وتريد عرض مستند في مقر ما في الويب بواسطة URL المخصص به. بما ان المستند في مقر ما على الشبكة وربما بعيد بشكل كبير عنك فتحتاج الى تفاصيل اكثر لجعل المستند متاح لك . اول تلك التفاصل هو مستعرض الانترنت المخصص بك . انت تقوم بفتح المستعرض وتبدا كتابة URL (على الاقل يلزم ان تخبر المستعرض اين ستذهب , على الارجح بواسطة الضغط على وصلة)


مع هذا . الصورة غير جلية , مستعرضك لا يمكنه عرض المستند من خلال URL المخصص به لاغير . من اجل ان يمكنها الوصول الى المستند يلزم ان يكون المستند حاضر على خادم ويب . خادم الويب هو حاسب الي يقوم بالانصات الى الطلبات من المستعرضات ووفقا لذلك تطبيقها .

ماذا عقب ذلك ؟ مستعرضك يتصل بالخادم ويطلب المستند يقوم الخادم بتطبيق المطلب وايصال المستند الى المستعرض(الاستجابة إلى المطلب ) , يقوم المستعرض بعرضة للمستخدم . الخادم كذلك يخبر مانوع المستند المطلوب (PDF,HTML,ZIP… الخ ) .

مستندات HTML تعرض من المستعرض على الفور . في وضعية وجود صور او اصوات او برمجيات Java في المستند المستعرض سيطلبها من خوادمها المتواجدة عليه (كثيرا ما نفس الخادم إلا أن ليس باستمرار ) تلك طلبات معزولة عن بعض , عندما ينتمي المستعمل وصلة آخر العملية تبدا مكررا .

تلك الطلبات والردود تعمل في لغة خاصة تدعى HTTP . ماتفعله تلك المقالة هو وصف تلك اللغة لاغير , يبقى بروتوكولات مشهورة اخرى مثل FTP و Gopher تعمل بأسلوب مماثلة للـ HTTP , يبقى أيضا بروتوكولات اخرى ولكنها تعمل بأساليب غير مشابهة على الإطلاق . لاحظ ان HTTP يعلم مايقوله المستعرض والخادم لبعض ولكن لا يعلم كيف يتصلان ببعض , التواصل الحقيقي (ارسال واستقبال البتات عبر الشبكة ) يتم بواسطة TCP/IP. لاحظ ايضاً ان اي برنامج يقوم بفعل المستعرض (استدعاء ملف من الخادم ) يسمى زبون

# ماذا يأتي ذلك عندما اتبع وصلة ؟

1 – فحص الـ URL :
اول عمل يتم القيام به هو البحث عن URL للحصول عليه . اغلب الURL لديها هيئة اساسية

[quote] protocol://server/request-URL [/quote]

جزء البروتوكول يمثل أسلوب التواصل بالخادم وأسلوب استدعاء المستندات منه , جزء الخادم يخبر المستعرض بالخادم المطلوب , الجزء الاخير يستعمل من قبل الخادم لمعرفة المستند المطلوب (اسم المستند)

2 – ارسال المطلب  :
عادة للاستحواز على مستند عبر بروتوكول http المستعرض يرسل دعوة مثل ذلك

[quote] GET /المستند المطلوب HTTP/version  [/quote]

الجزء الاخير من ذلك المطلب (version) تخبر الخادم اي صورة منسوخة من نسخ HTTP هي المستخدمة.
النقطة الهامة هنا ان الخادم لا يهتم ان كان مستعرضك من قام بالطلب او كان محرك بحث او حتى ان كتبته انت يدويا , هو لاغير ينفذ المطلب ويرسل نتيجة المطلب

3 – رد الخادم :
عندما يقوم الخادم باستقبال دعوة http يقوم بايجاد (في وضعية وجد) الملف الموائم وارجاعة . رد http لديه شكل مثل الأتي

[quote]HTTP/[VER] [CODE] [TEXT] Field1: Value1
Field2: Value2
… محتوى المستند هنا …  [/quote]

اول سطر يتضح نسخة http المستخدمة يتبعها برقم من ثلاث خانات (رقم الوضعية لـhttp) وعبارة مقروءة للبشر . عادة العدد 200 و العبارة OK ( توميء الى ان كل شي جرى على مايرام ) الاسطر الآتية لشي يسمى header انه يتضمن على بعض البيانات المخصصة بالمستند . الـ header ينتهي بسطر فارغ متبوعا بمحتوى المستند . مثال على header

[quote]HTTP/1.0 200 OK
Server: Netscape-Communications/1.1
Date: Tuesday, 25-Nov-97 01:22:04 GMT
Last-modified: Thursday, 20-Nov-97 10:44:53 GMT
Content-length: 6372
Content-type: text/html



…متبوعا بمحتوى المستند …  [/quote]

نلمح من السطر الاول ان المطلب كان ناجحا . السطر الثاني سطر اخياري يقوم باخبرانا ان الخادم يحاول أن Netscape Communications . السطر الثالث يتضح الميعاد فيما يتعلق للخادم واخر تطوير تم على المستند . السطر الذي يتبعه يخبرنا عن مقدار المستند في البايت . آخر سطر وهو الاهم “نوع المتحوى”. حيث يستعمل من قبل المستعرض لمعرفة صيغة المستند. HTML علم بـ “text/html”, المقالات العادية علم بـ “text/plain”, الصور بـ “image/gif” .
ثمة مفهوم هام وهو : فيما يتعلق للمستعرض , الخادم يعمل مثل الحاوية الاسود , المستعرض يطلب مستند محدد والمستند اما يعود (يرد) واما برقية خطا تعود , كيف ينتج الخادم الملف توجد غير معروفة للمستعرض (هل هو يقراها من ملف داخلي , ام ينتجها من احد البرامج )
ذلك المفهوم يمنح مدير الخادم الحرية لتجربة انواع من الخدمات بدون انتباه (او حتى علم ) المستعملين لكيفية اصدار تلك الصفحات.

# نسخ HTTP :
حتى هذه اللّحظة ثمة ثلاث نسخ من HTTP . الاولى كانت HTTP/0.9 وتم تصحيحها بـ HTTP/1.0 حيث هي النسخة التي يتم تداولها في الوقت الحاليّ . يبقى أيضاً HTTP/1.1 والتي هي امتداد للاخيرة (في ذلك التفسير تم استعمال HTTP/1.0)

http2

# المطلب المرسل من الزبون :

شكل المطلب  .. جميع الطلبات تشبه ذلك الشكل

[quote][METH] [REQUEST-URI] HTTP/[VER] [fieldname1]: [field-value1] [fieldname2]: [field-value2] [request body, if any]  [/quote]

METH نوع المطلب المستهلك , REQUEST-URI هي معرف المستند على الخادم , VER هي نسخة HTTP, حقول HEADER حاضرة أيضا كما في الرد من الخادم . السطر الاخير

[quote] [request body, if any]  [/quote]

يستعمل في وضعية الطلبات التي تفتقر الى ارسال معلومات مثل POST و PUT .

# الاستحواذ على المستند :
ثمة عديدة انواع من الطلبات اكثرها شهرة هو GET . GET بيسر تعني “ارسلي ذلك المستند ” على الشكل “GET xxxxx HTTP/version” كما هو مشروح بالاعلى (حيث xxxxx مجرى المستند )
بالرغم من ان السطر اعلاه هو اهم سطر الا ان user agent ( برنامج يعمل بالنيابة عن المستهلك , في تلك الوضعية هو المستعرض ) يمكن ان يرسل اكثر من حقل header في المطلب لتزويد الخادم بمعلومات اضافية
بعض حقول header التي يمكن استعمالها مع GET :
User-Agent لاخبار الخادم نوع المتصفح .
Referer اخبار الخادم من اين جئت .
Authorization يمكن ان يحمل اسم مستعمل وكلمة سر اذا كان المستند يطلب هذا .
نوع المطلب الاخر HEAD
يسعى عرض header المستند بلا تحميل مختلَف المستند

# معاني ارقام الحالات :
1xx علم ومحجوزة للاغراض التجريبية
2xx المطلب تم بنجاح
3xx تغيير (ناشر الخبر حاضر إلا أن في موضع اخر )
4xx خطا من الزبون (اكثر خطا شهير هو 404 )
5xx خطا من الخادم

لديك سؤال؟ دعنا نساعدك بالاتصال بنا عبر صفحة خدمات