تعرف على بروتوكول الـ HTTP
صفحة 1 من اصل 1 • شاطر
تعرف على بروتوكول الـ HTTP
:
رغم ما أخذناه من معلومات كثيرة وقصص كثيرة
إلاّ أنه رغم ذلك يفوتنا الكثير من التفاصيل في هذا الموضوع، لذلك
دعنا نغوص قليلاً في التفاصيل عن بروتوكول HTTP بشكل خاص.
عندما تقوم بعملية طلب لصفحة من السيرفر
هناك أمور إضافيه ترسل مع عملية الطلب http request غير ال URL وهي
ترسل كجزء من http request.
نفس الموضوع مع ال http response هناك أمور أخرى تصل معه كجزء منه.
الكثير من هذه المعلومات تولد تلقائياً في
رسالة ال HTTP ولا يقوم المستخدم بالتعامل معها مباشرة.. إذن لا
يحتاج أن تقلق نفسك بشأن هذه المعلومات إذا أنت لم تنشاها في الأصل
ويجب أن تأخذ أيضاً في معلوماتك أن هذه المعلومات ترسل كجزء من ال
HTTP request وال HTTP response لأن سكربت ال PHP الذي نصنعه يمنحنا
تحكماً إضافياً بهذه المعلومات.
كل رسائل الHTTP تأخذ تنسيقاً معيناً سواء
كانت Request أو Response. نستطيع أن نقوم بتقسيم هذا التنسيق إلى
ثلاث أقسام:
1. Request/Response Line .
2. HTTP Header .
3. HTTP Body .
المحتوى من هذه الأشياء الثلاثة يعتمد على
نوع الرسالة إذا كانت HTTP Request أو HTTP Response، لذلك سنتكلم
عنهم بتعمق أكثر.
لنتوقف لحظات وننظر في الشكل التالي لكي
يتوضح إلينا مفهوم المعاجلة التي تتم:
HTTP Request:
يجب أن يحتوي ال request على الأقل ال
request line (سطر الطلب) وال HOST .
يرسل مستعرض الانترنت طلبيه (HTTP request)
إلى ملقم الويب تحتوي على التالي:
1/ The Request Line:
السطر الأول من كل طلبيه (http request) هي
Request Line الذي يحتوي على ثلاث أنواع من المعلومات:
إذن كمثال على ال Request Line انظر إلى
السطر التالي: (ال method يخبر السيرفر كيف يتعامل مع الطلب)
GET /testpage.htm HTTP/1.1
هناك ثلاث أنواع شائعة من ال method والتي
تظهر في الجدول التالي:
هناك أوامر عديدة أخرى مثل: ( PUT - DELETE
- TRACE - CONNECT - OPTION )..
ولكنها تستخدم بقلة، ويمكنك أن تجد شرحاً موفياً لها باللغة
الانجليزية على الرابط التالي:
http://www.rfc.net .
2/ HTTP Header:
البت الثاني من المعلومات هو الهيدر HTTP
Header.. الذي يحتوي على تفاصيل أو وثائق عن العميل مثل نوع المتصفح
(نتسكيب أو اكسبلورر) الذي قام بطلب الصفحة والوقت والتاريخ
والإعدادات العامة.
الHTTP Header يحتوي على معلومات نستطيع
تقسيمها إلى ثلاث فئات وهي:
وهذا مثال:
Accept: * / *
Accept language: Arabic-KSA.
Connection: Keep -Alive.
Host : www.arabbuielder.com
Referer:
http://www.arabbuielder.com/index.php?something=132
User -Agent :Iexploer (win98;.........)
مثلما ترى ال HTTP Header عبارة عن أعداد
يتكون من عدة سطور، كل سطر يحتوي على قيم معينة.
هناك عدة سطور تشكل ال HTTP header وأكثرها
اختياري. يقوم الHTTP بالإخبار عن انتهاء معلومات ال header بترك سطر
فارغ (وهذا يكون في الHTTP1.1).
3/ The HTTP Body:
إذا تم استخدام الأمر POST في ال HTTP
Request Line.. عندها يقوم ال HTTP بطلب المعلومات التي أرسلت في ال
body إلى السيرفر.
HTTP Response:
يرسل من السيرفر إلى المستعرض، ويحتوي على
ثلاث أشياء:
1/ The Response Line:
ال Response line يحتوي فقط على نوعين من
المعلومات:
1- رقم إصدارة ال HTTP .
2- شفرة أو كود ال http request التي تقوم بتحديد ما إذا كان ال
request ناجحاً أم فاشل .
مثال:
HTTP/1.1 200 OK
في هذا المثال يقوم ال response line
بإرجاع القيمة 200 متبوعة بالكلمة OK. هذه تشكل وتشير إلى نجاح ال
request ويكون ال response يحتوي على الصفحة المطلوبة والبيانات من
السيرفر.
ومثال آخر هو الشفرة 404.. وتظهر عندما
تقوم بطلب صفحة ويفشل السيرفر في الحصول عليها.
هناك خمس فئات من الشفرات:
2/ HTTP Header:
ال Response header يعتبر مشابه لـ Request
header الذي ناقشناه في الأعلى. وتنقسم المعلومات التي فيه أيضاً إلى
ثلاث أنواع:
كما قلنا سابقاً.. يتكون من عدة سطور ويتم
وضع سطر فارغ للإعلام عن انتهاء الهيدر (Header):
HTTP/1.1 200
OK
-The satus line
Date: Mon; 1st Nov 1999, 16:12:23
GMT -General header
Server : Apache/1.3.12 (Unix) (SUSE/Linux) PHP/4.0.2
-The response
Last-modified: Fri, 29 Oct 1999, 12:08:03
GMT -Entity Header
السطر الأول ناقشناه، والسطر الثاني مفهوم
من غير شرح، السطر الثالث يقوم بتحديد البرنامج تبع السيرفر ونوعه
ونظام التشغيل القائم عليه، والسطر الأخير يقوم بتعريف آخر وقت تمّ
فيه تعديل أو تجديد الصفحة.
* ملاحظة/ قد يحتوي الهيدر (Header) على
أكثر من هذه المعلومات أو معلومات مختلفة وهذا يعتمد على نوع الشيء
المطلوب من السيرفر.
إذا أردت معرفة معلومات أكثر عن هذه الأقسام.. تستطيع مراجعة المقالة
رقم 2068 في الموقع التالي:
http://www.rfc.net .
3/ The HTTP Body:
إذا تمت معالجة الطلب بنجاح.. فإن ال HTTP
Response Body يحتوي على شفرة الHTML ويقوم مستعرض الانترنت بتفسيرها
وتحويلها إلى الصفحة النهائية التي تراها.
أين سكربت الPHP من ذلك كله ؟
أصبح الآن لدينا مفهومية جيدة عن طريقة
إرسال المستعرض طلب صفحة من السيرفر وكيفية استجابة السيرفر لهذا
الطلب. دعنا نلخص ما تمّ رؤيته وشرحه في النقاط السابقة في صورة
ثالثة ملخصّة:
تكلمنا عن أن سكربت ال php يتكون من ثلاث
أشياء: نص وشفرة php وشفرة html.
لا نستطيع وصف ال html بأنها لغة برمجة بشكل جيد، ونستطيع أن نقول أن
ال php لغة سكربتات Scripting Language.. لأنها تضيف قدرات html
عليها مثل الجداول والفريمات بشفرة html بداخل شفرة ال php.
هناك لغات تسمى لغات سكربتات قد تكون
متآلفاً معها مثل الجافا سكربت والفجول بيسك سكربت، باستثناء أن
الفرق بينها وبين الphp هو أن الphp لغة تعتمد على جهة المزود أي
السيرفر ويمكنك تخصيص المتصفح الذي يستعرضها.
تجعلنا الhtml نضمن سكربتات الphp فيها ضمن
قواعد لذلك لكي نستطيع تشغيلها، ولكننا لا ننسى أن امتداد الملفات
يظلّ كما هو php أو php3 بدون تغير فيه. لكي يتم إرسال السكربت إلى
مكينة الترجمة (Scripting Engine) التي تقوم بترجمة السكربت إلى html
(كأنك تترجم من عربي إلى انجليزي أو العكس).
* مفهوم الـ Parsing والـ Execution :
يمكن أن نقسم عملية الترجمة التي يقوم بها
سيرفر php إلى قسمين أو عمليتين:
العملية الأولى / هي أن السيرفر يقوم أولاً
بفحص قواعد اللغة، وهذا لا يضمن أن السكربت صحيح مئة بالمائة ولكنه
تدقيق في الأوامر وقواعد اللغة وهذا ما يسمونه بال Parsing.
العملية الثانية/ هي تنفيذ السكربت بعدها وإخراجه على شكل شفرة html،
وهذا ما يسمى بال Execution .
بقي أن نقول أمراً معروفاً وهو أن
السكربتات نوعين:
النوع الأول / وهو ما ينفذ من جهة المزود
Server-Side Scripting .
النوع الثاني/ ما ينفذ من جهة المستعرض (صفحة انترنت). مثل: الجافا
سكربت وغير ذلك.
رغم ما أخذناه من معلومات كثيرة وقصص كثيرة
إلاّ أنه رغم ذلك يفوتنا الكثير من التفاصيل في هذا الموضوع، لذلك
دعنا نغوص قليلاً في التفاصيل عن بروتوكول HTTP بشكل خاص.
عندما تقوم بعملية طلب لصفحة من السيرفر
هناك أمور إضافيه ترسل مع عملية الطلب http request غير ال URL وهي
ترسل كجزء من http request.
نفس الموضوع مع ال http response هناك أمور أخرى تصل معه كجزء منه.
الكثير من هذه المعلومات تولد تلقائياً في
رسالة ال HTTP ولا يقوم المستخدم بالتعامل معها مباشرة.. إذن لا
يحتاج أن تقلق نفسك بشأن هذه المعلومات إذا أنت لم تنشاها في الأصل
ويجب أن تأخذ أيضاً في معلوماتك أن هذه المعلومات ترسل كجزء من ال
HTTP request وال HTTP response لأن سكربت ال PHP الذي نصنعه يمنحنا
تحكماً إضافياً بهذه المعلومات.
كل رسائل الHTTP تأخذ تنسيقاً معيناً سواء
كانت Request أو Response. نستطيع أن نقوم بتقسيم هذا التنسيق إلى
ثلاث أقسام:
1. Request/Response Line .
2. HTTP Header .
3. HTTP Body .
المحتوى من هذه الأشياء الثلاثة يعتمد على
نوع الرسالة إذا كانت HTTP Request أو HTTP Response، لذلك سنتكلم
عنهم بتعمق أكثر.
لنتوقف لحظات وننظر في الشكل التالي لكي
يتوضح إلينا مفهوم المعاجلة التي تتم:
HTTP Request:
يجب أن يحتوي ال request على الأقل ال
request line (سطر الطلب) وال HOST .
يرسل مستعرض الانترنت طلبيه (HTTP request)
إلى ملقم الويب تحتوي على التالي:
1/ The Request Line:
السطر الأول من كل طلبيه (http request) هي
Request Line الذي يحتوي على ثلاث أنواع من المعلومات:
أمر HTTP وهو مايسمى بـ method .
المسار من السيرفر إلى المصادر المطلوبة
(صفحات الانترنت) المطلوبة من قبل العميل (المستعرض) .
إصدارة ال HTTP .
إذن كمثال على ال Request Line انظر إلى
السطر التالي: (ال method يخبر السيرفر كيف يتعامل مع الطلب)
GET /testpage.htm HTTP/1.1
هناك ثلاث أنواع شائعة من ال method والتي
تظهر في الجدول التالي:
وصفه | Method |
عبارة عن طلب لمعلومات تستقر في نفس صفحة الانترنت، وهذا الmethod الذي يستخدم. وهو المستخدم بكثرة في صفحات الانترنت ويعتبر الرئيسي فيهم. المعلومات التي تطلب بواسطة هذا الأمر قد تكون معلومات قد تكون أي شيء من: صفحة الhtml أو php إلى: مخرج من سكربت (برنامج) بيرل أو جافا أو ملفات تنفيذيه أخرى. يمكنك إرسال بعض المعلومات المحددة إلى مستعرض الانترنت لديك عبر نموذج (Form) في الصفحة. | GET |
مثل الGET.. باستثناء أنه يقوم بعملية طلب للـheader فقط من غير بيانات (data). | HEAD |
هذا الأمر يقوم بإرسال البيانات إلى السيرفر كجزء من HTTP body. هذه البيانات تعالج بواسطة برنامج مخصص لمعالجتها (perl or php) على السيرفر. | POST |
هناك أوامر عديدة أخرى مثل: ( PUT - DELETE
- TRACE - CONNECT - OPTION )..
ولكنها تستخدم بقلة، ويمكنك أن تجد شرحاً موفياً لها باللغة
الانجليزية على الرابط التالي:
http://www.rfc.net .
2/ HTTP Header:
البت الثاني من المعلومات هو الهيدر HTTP
Header.. الذي يحتوي على تفاصيل أو وثائق عن العميل مثل نوع المتصفح
(نتسكيب أو اكسبلورر) الذي قام بطلب الصفحة والوقت والتاريخ
والإعدادات العامة.
الHTTP Header يحتوي على معلومات نستطيع
تقسيمها إلى ثلاث فئات وهي:
عامة General / تحتوي على معلومات إما عن
العميل أو السيرفر ولا تخصص إلى فرد أو مجموعة .
شخصية Entity / تحتوي على معلومات عن
البيانات التي أرسلت بين المتصفح والسيرفر .
مطلوبة Request / تحتوي على بيانات عن
إعدادات العميل والأنواع المختلفة المقبولة من البيانات .
وهذا مثال:
Accept: * / *
Accept language: Arabic-KSA.
Connection: Keep -Alive.
Host : www.arabbuielder.com
Referer:
http://www.arabbuielder.com/index.php?something=132
User -Agent :Iexploer (win98;.........)
مثلما ترى ال HTTP Header عبارة عن أعداد
يتكون من عدة سطور، كل سطر يحتوي على قيم معينة.
هناك عدة سطور تشكل ال HTTP header وأكثرها
اختياري. يقوم الHTTP بالإخبار عن انتهاء معلومات ال header بترك سطر
فارغ (وهذا يكون في الHTTP1.1).
3/ The HTTP Body:
إذا تم استخدام الأمر POST في ال HTTP
Request Line.. عندها يقوم ال HTTP بطلب المعلومات التي أرسلت في ال
body إلى السيرفر.
HTTP Response:
يرسل من السيرفر إلى المستعرض، ويحتوي على
ثلاث أشياء:
The Response Line .
HTTP Header .
HTTP Body .
1/ The Response Line:
ال Response line يحتوي فقط على نوعين من
المعلومات:
1- رقم إصدارة ال HTTP .
2- شفرة أو كود ال http request التي تقوم بتحديد ما إذا كان ال
request ناجحاً أم فاشل .
مثال:
HTTP/1.1 200 OK
في هذا المثال يقوم ال response line
بإرجاع القيمة 200 متبوعة بالكلمة OK. هذه تشكل وتشير إلى نجاح ال
request ويكون ال response يحتوي على الصفحة المطلوبة والبيانات من
السيرفر.
ومثال آخر هو الشفرة 404.. وتظهر عندما
تقوم بطلب صفحة ويفشل السيرفر في الحصول عليها.
هناك خمس فئات من الشفرات:
وصفها | الفئة |
يتم إعطاء هذا الكود إذا كان الطلب (request) يتم معالجته حالياً. | 100 - 199 |
يتم إعطاء هذا الكود إذا تم استقبال الطلب بنجاح. | 200 - 299 |
يتم إعطاء هذا الكود إذا كانت البيانات قد تم تحويلها أو تحريكها من موضعها. | 300 - 399 |
يتم إعطاء هذا الكود إذا الطلب فيه خطأ من قبل العميل (المستعرض).. غير كامل أو غير صحيح أو غير ممكن. | 400 - 499 |
يتم إعطاء هذا الكود إذا كان الخطأ من قبل السيرفر. أي إذا كان الطلب صحيحاً وموجوداً لكن السيرفر فشل في معالجته وإخراجه. | 500 - 599 |
2/ HTTP Header:
ال Response header يعتبر مشابه لـ Request
header الذي ناقشناه في الأعلى. وتنقسم المعلومات التي فيه أيضاً إلى
ثلاث أنواع:
عامة General / معلومات عن ال client أو
السيرفر ولا تخصص إلى واحد منهما.
شخصية Entity / يحتوي على معلومات عن
البيانات التي يتم إرسالها بين السيرفر والعميل .
الإجابة Response / يحتوي معلومات عن
السيرفر الذي قام بإرسال الرد وكيفيه تعامله ومعاجلته للرد
(Response) .
كما قلنا سابقاً.. يتكون من عدة سطور ويتم
وضع سطر فارغ للإعلام عن انتهاء الهيدر (Header):
HTTP/1.1 200
OK
-The satus line
Date: Mon; 1st Nov 1999, 16:12:23
GMT -General header
Server : Apache/1.3.12 (Unix) (SUSE/Linux) PHP/4.0.2
-The response
Last-modified: Fri, 29 Oct 1999, 12:08:03
GMT -Entity Header
السطر الأول ناقشناه، والسطر الثاني مفهوم
من غير شرح، السطر الثالث يقوم بتحديد البرنامج تبع السيرفر ونوعه
ونظام التشغيل القائم عليه، والسطر الأخير يقوم بتعريف آخر وقت تمّ
فيه تعديل أو تجديد الصفحة.
* ملاحظة/ قد يحتوي الهيدر (Header) على
أكثر من هذه المعلومات أو معلومات مختلفة وهذا يعتمد على نوع الشيء
المطلوب من السيرفر.
إذا أردت معرفة معلومات أكثر عن هذه الأقسام.. تستطيع مراجعة المقالة
رقم 2068 في الموقع التالي:
http://www.rfc.net .
3/ The HTTP Body:
إذا تمت معالجة الطلب بنجاح.. فإن ال HTTP
Response Body يحتوي على شفرة الHTML ويقوم مستعرض الانترنت بتفسيرها
وتحويلها إلى الصفحة النهائية التي تراها.
أين سكربت الPHP من ذلك كله ؟
أصبح الآن لدينا مفهومية جيدة عن طريقة
إرسال المستعرض طلب صفحة من السيرفر وكيفية استجابة السيرفر لهذا
الطلب. دعنا نلخص ما تمّ رؤيته وشرحه في النقاط السابقة في صورة
ثالثة ملخصّة:
تكلمنا عن أن سكربت ال php يتكون من ثلاث
أشياء: نص وشفرة php وشفرة html.
لا نستطيع وصف ال html بأنها لغة برمجة بشكل جيد، ونستطيع أن نقول أن
ال php لغة سكربتات Scripting Language.. لأنها تضيف قدرات html
عليها مثل الجداول والفريمات بشفرة html بداخل شفرة ال php.
هناك لغات تسمى لغات سكربتات قد تكون
متآلفاً معها مثل الجافا سكربت والفجول بيسك سكربت، باستثناء أن
الفرق بينها وبين الphp هو أن الphp لغة تعتمد على جهة المزود أي
السيرفر ويمكنك تخصيص المتصفح الذي يستعرضها.
تجعلنا الhtml نضمن سكربتات الphp فيها ضمن
قواعد لذلك لكي نستطيع تشغيلها، ولكننا لا ننسى أن امتداد الملفات
يظلّ كما هو php أو php3 بدون تغير فيه. لكي يتم إرسال السكربت إلى
مكينة الترجمة (Scripting Engine) التي تقوم بترجمة السكربت إلى html
(كأنك تترجم من عربي إلى انجليزي أو العكس).
* مفهوم الـ Parsing والـ Execution :
يمكن أن نقسم عملية الترجمة التي يقوم بها
سيرفر php إلى قسمين أو عمليتين:
العملية الأولى / هي أن السيرفر يقوم أولاً
بفحص قواعد اللغة، وهذا لا يضمن أن السكربت صحيح مئة بالمائة ولكنه
تدقيق في الأوامر وقواعد اللغة وهذا ما يسمونه بال Parsing.
العملية الثانية/ هي تنفيذ السكربت بعدها وإخراجه على شكل شفرة html،
وهذا ما يسمى بال Execution .
بقي أن نقول أمراً معروفاً وهو أن
السكربتات نوعين:
النوع الأول / وهو ما ينفذ من جهة المزود
Server-Side Scripting .
النوع الثاني/ ما ينفذ من جهة المستعرض (صفحة انترنت). مثل: الجافا
سكربت وغير ذلك.
رد: تعرف على بروتوكول الـ HTTP
جزاك الله خيرا على الموضوع
الزعيم- المـديـر العـــام
- احترام القوانين :
عدد المساهمات : 7554
رد: تعرف على بروتوكول الـ HTTP
شرح مبسط ورائع اخي شكرا لك
: فا:
: فا:
AM!N£ M£D!A- عضو قيد النشاط
- احترام القوانين :
عدد المساهمات : 88
تاريخ الميلاد : 17/10/1993
العمر : 31
رد: تعرف على بروتوكول الـ HTTP
معلومات جميلة بارك الله فيك
aaaa- عضو نشيط
- احترام القوانين :
عدد المساهمات : 768
تاريخ الميلاد : 13/10/1983
العمر : 41
رد: تعرف على بروتوكول الـ HTTP
بارك الله فيك على الموضوع
وشكرا لك على الشرح
موفق
وشكرا لك على الشرح
موفق
اميرة الاحساس- عضو نشيط
- احترام القوانين :
عدد المساهمات : 850
تاريخ الميلاد : 27/07/1997
العمر : 27
الموقع : في كل مكان
مواضيع مماثلة
» تعرف على المزيد عن تعرف اكثر على رؤية الأب الميت في المنام وهو حي للعزباء وللمتزوجة وللحامل
» http://www.bac.onec.dz/
» http://www.bem.onec.dz/
» http://helpubb2012.blogspot.com/
» http://helpub12.blogspot.com/
» http://www.bac.onec.dz/
» http://www.bem.onec.dz/
» http://helpubb2012.blogspot.com/
» http://helpub12.blogspot.com/
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى