HTTP Hypertext Transfer Protocol Request
طلب بروتوكول نقل النصوص HTTP
في هذا الدرس سوف نتعرف علي الخطوات والعمليات التي تحدث عن قيامك بطلب صفحة ويب معينة والتي تتم علي خطوتين أساسيتين وهما Request and response
التاريخ
الدروس
المستوى
اللغة
المشاهدات
المواضيع
الشروحات chevron_left HTTP Hypertext Transfer Protocol Request chevron_left Web Technology
HTTP Hypertext Transfer Protocol Request
طلب بروتوكول نقل النصوص HTTP
</>
HTTP Request
طلب HTTP
HTTP Request Message Structure
محتوي رسالة طلب HTTP تكون بهذا النمط.
Request line | header | message body
</>
HTTP Request Message Structure
بنية رسالة طلب HTTP
- الطريقة 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 and Response
هي الخطوات التي تتم داخليا نتيجة قيام المستخدم بطلب صفحة ويب معينة باستخدام المتصفح browser الخاص به وذلك يكون عن طريق عمليتين أساسيتين وهما Request و Response وفيما يلي سنشرح ما يتم بالتفصيل داخل العمليتين .
</> Request
- يقوم المستخدم بكتابة رابط الموقع في المتصفح browser ويضغط زر إدخال “Enter”.
- المتصفح يقوم بالاتصال بنظام التشغيل operating system الخاص بجهاز المستخدم
- يفحص نظام التشغيل اعدادات ونوع الاتصال حتي يصل الي بوابة الانترنت الافتراضية default getaway ثم يذهب الي جهاز ال router عن طريق local IP عنوان IP محلي تم تعيينه من قبل جهاز ال router حتي يقوم جهاز المستخدم بالاتصال بجهاز ال router عن طريقه وجميع الأجهزة المتصلة علي هذه الشبكة
- يتحقق الrouter اتصاله بخدمة الانترنت عن طريق فحص اذا ما كان لديه عنوان IP من النوع عام Public , هناك احتمالين اما ال router متصل بخدمة الانترنت والحالة الثانية انه يكون غير متصل بالأنترنت
- في حالة اتصال ال router بخدمة الانترنت سوف يقوم بالاتصال بمزود الخدمة ISP
- يقوم مزود خدمة الانترنت ISP بفحص قواعد بيانات DNS الموجودة علي خوادمه الخاصة
- يقوم DNS بتحويل .عنوان النطاق Domain name الموجود بداخل الرابط الذي كتبه علي المتصفح الي Public IP الخاص بخادم الويب web server الموجود عليه ملفات وبيانات صفحة الويب المطلوبة من المستخدم
- الخادم يقوم بمعالجة الأوامر الموجودة بداخل صفحة الويب المطلوبة من المستخدم - وهذه هي اخر خطوة من خطوات عملية ال 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
- يقوم المستخدم بكتابة رابط الموقع في المتصفح browser ويضغط زر إدخال “Enter”.
- المتصفح يقوم بالاتصال بنظام التشغيل operating system الخاص بجهاز المستخدم
- يفحص نظام التشغيل اعدادات ونوع الاتصال حتي يصل الي بوابة الانترنت الافتراضية default getaway ثم يذهب الي جهاز ال router عن طريق local IP عنوان IP محلي تم تعيينه من قبل جهاز ال router حتي يقوم جهاز المستخدم بالاتصال بجهاز ال router عن طريقه وجميع الأجهزة المتصلة علي هذه الشبكة
- يتحقق الrouter اتصاله بخدمة الانترنت عن طريق فحص اذا ما كان لديه عنوان IP من النوع عام Public , هناك احتمالين اما ال router متصل بخدمة الانترنت والحالة الثانية انه يكون غير متصل بالأنترنت
- في حالة اتصال ال router بخدمة الانترنت سوف يقوم بالاتصال بمزود الخدمة ISP
- يقوم مزود خدمة الانترنت ISP بفحص قواعد بيانات DNS الموجودة علي خوادمه الخاصة
- يقوم DNS بتحويل .عنوان النطاق Domain name الموجود بداخل الرابط الذي كتبه علي المتصفح الي Public IP الخاص بخادم الويب web server الموجود عليه ملفات وبيانات صفحة الويب المطلوبة من المستخدم
- الخادم يقوم بمعالجة الأوامر الموجودة بداخل صفحة الويب المطلوبة من المستخدم - وهذه هي اخر خطوة من خطوات عملية ال Request
العملية الثانية وهي ال Response
- يقوم الخادم بأرسال البيانات الي ISP عن طريق الشبكة العالمية internet علي هيئة حزم مقسمة الي بيانات صغيره
- يقوم ال ISP باستلام هذه الحزم وفحصها ثم ارسالها الي جهاز ال router
- يقوم ال Router باستلام هذه البيانات ثم ارسالها الي نظام التشغيل operating system الخاص بك
- يقوم ال operating system باستلام هذه الحزم ثم تحويلها الي معلومات عن طريق بروتوكول معين وارسالها الي المتصفح
- يقوم المتصفح بعد ذلك بأخذ هذه المعلومات والتي هي عبارة عن رموز وشفرات برمجية وتحويلها الي معلومات يستطيع المستخدم فهمها داخل صفحة ويب
هذه العملية تتم بسرعة كبيرة جدًا وفقا لإمكانيات الخادم وسرعة اتصال كلاً من الخادم والمُستخدم بالإنترنت والأهم هو الخادم لأنه قد يتعامل مع الآلاف من المُستخدمين في نفس اللحظة