Web Technology

HTTP Hypertext Transfer Protocol Request
طلب بروتوكول نقل النصوص HTTP

في هذا الدرس سوف نتعرف علي الخطوات والعمليات التي تحدث عن قيامك بطلب صفحة ويب معينة والتي تتم علي خطوتين أساسيتين وهما Request and response 

التاريخ

10 أبريل 2021

الدروس

41

المستوى

متقدم

اللغة

انجليزي

المشاهدات

2158

المواضيع

4
الشروحات chevron_left HTTP Hypertext Transfer Protocol Request chevron_left Web Technology

HTTP Hypertext Transfer Protocol Request
طلب بروتوكول نقل النصوص HTTP

مراجعة تقنية
Mostafa Hefny

Mostafa Hefny

CEO & Founder CloseTag

</> HTTP Request
طلب HTTP

طلب HTTP HTTP Request هو رسالة تُرسل من العميل مثل متصفح الويب إلى الخادم بهدف الحصول على مورد معين [صفحة ويب مثلًا] أو تنفيذه. يُعتبر طلب HTTP أحد المكونات الأساسية في عملية التواصل على الإنترنت، وهو ما يُمكِّن المستخدمين من التفاعل مع المواقع والتطبيقات بسهولة وسلاسة. تتكون طلبات HTTP من عدة أجزاء رئيسية تشمل سطر الطلب Request Line، والرؤوس Headers، و الجسم Body، ولكل جزء منها دور مهم في تحديد وتوصيل المعلومات المطلوبة من الخادم.

HTTP Request Message Structure

محتوي رسالة طلب HTTP تكون بهذا النمط.

Request line | header | message body

</> HTTP Request Message Structure
بنية رسالة طلب HTTP

بنية رسالة طلب HTTP تتكون من عدة أجزاء تُحدد كيفية نقل البيانات من العميل [مثلاً، متصفح الويب] إلى الخادم [مثلاً، خادم الويب]. ورسالة HTTP يمكن أن تكون إما طلب Request أو استجابة Response.

 بنية رسالة طلب HTTP Request:
1. سطر الطلب Request Line:
  • الطريقة Method: طريقة HTTP المطلوب من الخادم تنفيذه أو القيام به مثل GET، POST، PUT، و DELETE مثلاً [DELETE حذف مورد معين من الخادم].
  • Uniform Resource Identifier URI: معرف الموارد الموحد لتحديد المورد المطلوب مثلاً، صفحة موقع كلوز تاج الرئيسية.
  • إصدار البروتوكول HTTP Version: إصدار HTTP المستخدم مثل HTTP/1.1.
  • هذا هو شكل سطر الطلب [GET /index.html HTTP/1.1].


2. الرؤوس Headers: توفر معلومات إضافية عن الطلب أو العميل، يُكتب كل رأس في سطر منفصل متبوعًا بنقطتين ومسافه Key: Value ويكون الـ http header بالشكل التالي:

  • Host: www.example.com: يحدد عنوان أو دومين الخادم المستهدف.
  • User-Agent: Mozilla/5.0: يحدد معلومات عن العميل [مثل المتصفح الموجود علي جهاز المستخدم وفي هذا المثال هو متصفح موزيلا فاير فوكس].
  • Accept-Language: en-US: يحدد اللغة المكتوب بها محتوى صفحة الويب.
  • Content-Type: application/x-www-form-urlencoded: يحدد نوع البيانات المرسلة في الجسم Body.
  • Content-Length: 27: يحدد طول البيانات المرسلة في الجسم Body بالبايتات.


3. الجسم Body: يحتوي على البيانات المُرسَلة مع الطلب، ويكون موجودًا فقط في بعض أنواع الطلبات مثل POST و PUT. في طلبات GET الجسم يكون فارغًا.


  • في طلبات GET، يتم إرسال البيانات عادةً كجزء من عنوان URL بدلاً من الجسم [Body]، وبالتالي يكون الجسم فارغًا بالفعل. البيانات في طلبات GET تضاف إلى نهاية عنوان URL في شكل سلسلة استعلام [query string]. جسم الرسالة في طلبات GET لا يحتوي على بيانات، وكل المعلومات تُرسل في عنوان URL بهذا الشكل username=user&password=pass.

  • في طلبات POST، يتم إرسال البيانات عادةً كجزء من الجسم [Body] بدلاً من عنوان URL. يتم نقل المعلومات المطلوبة أو البيانات التي يجب معالجتها إلى الخادم من خلال الجسم. هذا يسمح بإرسال كميات كبيرة من البيانات بشكل آمن، حيث لا تظهر هذه البيانات في عنوان URL.
HTTP Get Request Line

سطر طلب http من النوع get يكون بهذا الشكل.

GET /login?username=user&password=pass HTTP/1.1
HTTP Post Request Line

سطر طلب http من النوع post يكون بهذا الشكل.

GET /login HTTP/1.1
HTTP Request Headers

بادئة أو رأس طلب http تكون بهذا الشكل.

Host: www.example.com
User-Agent: Mozilla/5.0
Accept-Language: en-US
HTTP Get Request Message

رسالة طلب http تكون كاملة بهذا الشكل في حال كان من النوع get.

GET /login?username=user&password=pass HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept-Language: en-US
HTTP Post Request Message

رسالة طلب http تكون كاملة بهذا الشكل في حال كان من النوع get.

POST /login HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

username=user&password=pass
Host
  • في request headers، يُستخدم Host لتحديد المضيف (الخادم) والعنوان المطلوب أو والدومين. هذا الجزء من الرأس يخبر الخادم بالضبط أي مورد يتم طلبه، خاصة عندما يكون لدى الخادم العديد من المواقع المستضافة على نفس عنوان IP.
  • عندما يقوم المستخدم بإدخال اسم المستخدم وكلمة المرور في صفحة تسجيل الدخول على موقع ويب معين، ويضغط على زر "تسجيل الدخول"، يتم إرسال هذه البيانات إلى الخادم للتحقق منها. في هذه الحالة، يكون جسم الرسالة بالشكل التالي:[username=user&password=pass].
  • يكون جسم الرسالة Request body غير فارغ في حالة كان الطلب من نوع POST وهذا هو مثال [username=ahmed&password=123456].
  • يكون جسم الرسالة Request body فارغًا في حالة كان الطلب من نوع GET.

</> HTTP Header Fields
حقول البادئة أو رأس رسالة HTTP

  • User:Agent: Mozilla/5.0: يحدد معلومات عن المتصفح الذي يستخدمه العميل.
  • Host: www.closetag.com: يحدد عنوان أو دومين الخادم المستهدف.
  • Accept:Language: es, fr: يحدد اللغات المفضلة للمحتوى لدى العميل.
  • Date: Tue, 25 Jul 2023 10:30:00 GMT: يحدد تاريخ ووقت الطلب أو الاستجابة.
  • Server: Nginx: يحدد معلومات عن خادم الويب الذي يستجيب للطلب.
  • Last:Modified: Fri, 21 Jul 2023 15:00:00 GMT: يحدد آخر تاريخ تعديل للمحتوى المطلوب.
  • ETag: "a1b2c3d4:e:12345678": معرف فريد للإصدار الحالي من المورد.
  • Accept:Ranges: none: يحدد إذا كانت الخادم يقبل طلبات بتجزئة المحتوى.
  • Content:Length: 100: يحدد طول المحتوى بالبايتات.
  • Vary: User:Agent: يحدد أن الاستجابة قد تختلف بناءً على حقل User:Agent.
  • Content:Type: application/json: يحدد نوع المحتوى المُرسل.
HTTP Header Fields

هذه الحقول توضح تفاصيل الاتصال بين العميل والخادم، بما في ذلك نوع المتصفح، الخادم، وتفضيلات اللغة.

User-Agent: Mozilla/5.0
Host: www.closetag.com
Accept-Language: es, fr
Date: Tue, 25 Jul 2023 10:30:00 GMT
Server: Nginx
Last-Modified: Fri, 21 Jul 2023 15:00:00 GMT
ETag: "a1b2c3d4-e-12345678"
Accept-Ranges: none
Content-Length: 100
Vary: User-Agent
Content-Type: application/json
ملاحظة
هناك بعض الحقول المشتركة بين الطلب request والاستجابة response، وبعضها مخصص للطلب فقط، وبعضها مخصص للاستجابة فقط.

</> Request and Response


هي الخطوات التي تتم داخليا نتيجة قيام المستخدم بطلب صفحة ويب معينة باستخدام المتصفح browser الخاص به وذلك يكون عن طريق عمليتين أساسيتين وهما Request و Response وفيما يلي سنشرح ما يتم بالتفصيل داخل العمليتين .

</> Request

  1. يقوم المستخدم بكتابة رابط الموقع في المتصفح browser ويضغط زر إدخال “Enter”.
  2. المتصفح يقوم بالاتصال بنظام التشغيل operating system الخاص بجهاز المستخدم 
  3. يفحص نظام التشغيل اعدادات ونوع الاتصال حتي يصل الي بوابة الانترنت الافتراضية default getaway ثم يذهب الي جهاز ال router عن طريق local IP عنوان IP محلي تم تعيينه من قبل جهاز ال router حتي يقوم جهاز المستخدم بالاتصال بجهاز ال router عن طريقه وجميع الأجهزة المتصلة علي هذه الشبكة 
  4. يتحقق الrouter اتصاله بخدمة الانترنت عن طريق فحص اذا ما كان لديه عنوان IP من النوع عام Public  , هناك احتمالين اما ال router متصل بخدمة الانترنت والحالة الثانية انه يكون غير متصل بالأنترنت 
  5. في حالة اتصال ال router بخدمة الانترنت سوف يقوم بالاتصال بمزود الخدمة ISP  
  6. يقوم مزود خدمة الانترنت ISP بفحص قواعد بيانات DNS  الموجودة علي خوادمه الخاصة 
  7. يقوم DNS بتحويل .عنوان النطاق  Domain name الموجود بداخل الرابط الذي كتبه علي المتصفح الي Public IP الخاص بخادم الويب web server  الموجود عليه ملفات وبيانات صفحة الويب المطلوبة من المستخدم 
  8. الخادم يقوم بمعالجة الأوامر الموجودة بداخل صفحة الويب المطلوبة من المستخدم - وهذه هي اخر خطوة من خطوات عملية ال Request 

هذه العملية تتم بسرعة كبيرة جدًا وفقا لإمكانيات الخادم وسرعة اتصال كلاً من الخادم والمُستخدم بالإنترنت والأهم هو الخادم لأنه قد يتعامل مع الآلاف من المُستخدمين في نفس اللحظة

</> HTTP Request
طلب HTTP



http request read by server

طلب http الذي يقرأه الخادم.

HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html

<!doctype html>… (here come the 29769 bytes of the requested web page)

</> Processes that take place in the background when a user requests a web page
العمليات التي تتم في الخلفية عندما يقوم المستخدم بطلب صفحة انترنت

لكي نوضح لك كيفية عمل السيرفر بأبسط ما يُمكن، فسوف نشرح لك سيناريو بسيط لما يحدث عندما تزور موقع إلكتروني..

هذا السيناريو يتم في عمليتين : 

العملية الأولي وهي ال Request 

  1. يقوم المستخدم بكتابة رابط الموقع في المتصفح browser ويضغط زر إدخال “Enter”.
  2. المتصفح يقوم بالاتصال بنظام التشغيل operating system الخاص بجهاز المستخدم 
  3. يفحص نظام التشغيل اعدادات ونوع الاتصال حتي يصل الي بوابة الانترنت الافتراضية default getaway ثم يذهب الي جهاز ال router عن طريق local IP عنوان IP محلي تم تعيينه من قبل جهاز ال router حتي يقوم جهاز المستخدم بالاتصال بجهاز ال router عن طريقه وجميع الأجهزة المتصلة علي هذه الشبكة 
  4. يتحقق الrouter اتصاله بخدمة الانترنت عن طريق فحص اذا ما كان لديه عنوان IP من النوع عام Public  , هناك احتمالين اما ال router متصل بخدمة الانترنت والحالة الثانية انه يكون غير متصل بالأنترنت 
  5. في حالة اتصال ال router بخدمة الانترنت سوف يقوم بالاتصال بمزود الخدمة ISP  
  6. يقوم مزود خدمة الانترنت ISP بفحص قواعد بيانات DNS  الموجودة علي خوادمه الخاصة 
  7. يقوم DNS بتحويل .عنوان النطاق  Domain name الموجود بداخل الرابط الذي كتبه علي المتصفح الي Public IP الخاص بخادم الويب web server  الموجود عليه ملفات وبيانات صفحة الويب المطلوبة من المستخدم 
  8. الخادم يقوم بمعالجة الأوامر الموجودة بداخل صفحة الويب المطلوبة من المستخدم - وهذه هي اخر خطوة من خطوات عملية ال Request 

العملية الثانية وهي ال Response

  1. يقوم الخادم بأرسال البيانات الي ISP عن طريق الشبكة العالمية internet علي هيئة حزم مقسمة الي بيانات صغيره 
  2. يقوم ال ISP باستلام هذه الحزم وفحصها ثم ارسالها الي جهاز ال router 
  3. يقوم ال Router باستلام هذه البيانات ثم ارسالها الي نظام التشغيل operating system الخاص بك 
  4. يقوم ال operating system باستلام هذه الحزم ثم تحويلها الي معلومات عن طريق بروتوكول معين وارسالها الي المتصفح
  5. يقوم المتصفح بعد ذلك بأخذ هذه المعلومات والتي هي عبارة عن رموز وشفرات برمجية وتحويلها الي معلومات يستطيع المستخدم فهمها داخل صفحة ويب 

هذه العملية تتم بسرعة كبيرة جدًا وفقا لإمكانيات الخادم وسرعة اتصال كلاً من الخادم والمُستخدم بالإنترنت والأهم هو الخادم لأنه قد يتعامل مع الآلاف من المُستخدمين في نفس اللحظة

معلومات تهمك
  • لا تنس تقييم الدروس لكي نُحدّث المُحتوى باستمرار حتى ينال إعجابك.
  • لا تنس مشاركة الموقع مع أصدقائك حتى تعمّ الفائدة وتكون سببًا في نفعهم.
مشاركة
0
0
0
0
عدد المشاركات
هل هذه المعلومات نالت إعجابك ؟
0
0
عدد التقييمات