ماهو HTTP وكيف يعمل هذا البروتوكول؟

ماهو HTTP

تعتمد الشبكات عمومًا فى نقل البيانات على مجموعة من البرتوكولات (وهى مجموعة من الخطوات والاوامر المتفق عليها).

ومن البرتوتوكلات الاساسية لتبادل البيانات بروتوكول يسمى HTTP.

ماهو HTTP

بروتوكول نقل النص التشعبي (HTTP) او Hypertext Transfer Protocol هو مجموعة قواعد نقل الملفات (النصوص والصور الرسومية والصوت والفيديو وملفات الوسائط المتعددة الأخرى) على شبكة الويب.

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

حيث عند انشاء اي طلب من العميل فى صورة رسالة يتم تضمين بعض الاشياء الضرورية عن الطلب ويتم انشاء وصلة او Connection بين العميل والسيرفر ويستجيب السيرفر للطلب مع بعض البيانات عن حالة الاستجابة من حيث النجاح او الفشل.

ماهو Client Server

بعض الحقائق عن برتوكول HTTP

  •  تم صياغة المصطلح HTTP من قبل تيد نيلسون.
  • البروتوكول HTTP مبنى على رأس بروتوكولات TCP/IP وهى اساس الاتصال فى الانترنت.
  • برتوكول HTTP ليس الوحيد المستخدم فى الويب فهناك بروتوكولات كثير منها بروتوكول نقل الملف FTP.
  • المنفذ القياسي المستخدم فى برتوكول HTTP هو المنفذ 80.
  • HTTP/ 0.9 كان الإصدار الأول من HTTP، وقدم في عام 1991.
  • صدر HTTP / 1.0  في عام 1996.
  • صدر HTTP / 1.1 رسميا في يناير 1997.

مراحل عمل بروتوكول HTTP

يمكننا تقسيم عمل بروتوكول HTTP إلى أربع مراحل كالتالى:

  •  إنشاء الوصلة او Connection مع الخادم او Server.
  •  إرسال الطلب إلى الخادم.
  •  استلام الاستجابة من الخادم.
  •  إغلاق الوصلة.

طرق HTTP او HTTP methods

  • GET: طلب البيانات من مصدر معين.
  • HEAD: مثل GET تمامًا ولكن الفرق انها ترجع بمعلومات عن الطلب وليس كامل الطلب.
  • POST: لإرسال البيانات المطلوب معالجتها إلى خادم محدد حيث يتم ارسالها عبر جسم الرسالة.
  • PUT: لتحميل المعطيات إلى الخادم.
  • DELETE: تطلب من الخادم حذف المصدر المحدد.
  • TRACE: تسمح للعميل بإمكانية معرفة عدد المرات التي طلبت فيها هذه الرسالة من قبل الخادم.
  • OPTION: تستخدم لمعرفة الميزات التي يتمتع بها خادم الشبكة.

اشهر الطرق المستخدمة لتبادل البيانات بين السيرفر والعميل هما GET و POST.

استخدام GET

مثال على استخدام GET 

/test/demo_form.php?name1=value1&name2=value2

فى المثال السابق يتم ارسال قيم GET قى الURL الخاص بالمتصفح.

حيث name , value هما اسم المتغير والقيمة على الترتيب.

ملاحظات على GET :

  • يمكن تخزين طلبات GET مؤقتا او وضعها فى الكاش.
  • يمكن للمتصفح ان يحفظ هذه الطلبات فى السجل او History الخاص به.
  • يمكن وضع طلبات من النوع GET فى الاشارات المرجعية او Bookmarks للمتصفح.
  • يجب عدم استخدام طلبات GET عند التعامل مع البيانات الحساسة -لانها كما قلنا يتم حفظها فى سجل المتصفح وتكون
  • مرئية فى عنوان URL.
  • طلبات GET لها قيود فى طول البيانات المرسلة فيها.
  • يجب استخدام طلبات GET فقط لاسترداد البيانات.

استخدام POST

  • لم يتم تخزين طلبات POST ابدًا.
  • لا تبقى طلبات POST في سجل المتصفح.
  • لا يمكن وضع إشارة مرجعية للطلبات من نوع POST فى المتصفح.
  • طلبات بوست ليس لها قيود على طول البيانات.

ولمعرفتة المزيد عن GET و POST وكيفية استخدامها فى لغة PHP تابع هذا المقال

كل طرق HTTP

ويوجد المزيد من طرق الطلبات فى HTTP وهذه هى القائمة الكاملة :

طريقة HTTPالعملية التى يقوم بها
GETالقراءة
POSTالكتابة
DELETEالحذف
PUTتعديل / استبدال
جدول يوضح كل طرق HTTP مع العملية التى يقوم بها

بروتوكول HTTP لا يحافظ على الحالة Stateless

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

هذا خلق مشكلة فى المواقع التى تتطلب تعرف على المستخدم او العميل فى الطلبات اللاحق , فعلى سبيل المثال مواقع التسوق الإلكترونى فى الطلب اللاحق تريد ان تعرف ما فى سلة المستخدم للموقع.

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

ماهو رأس الطلب HTTP Request Header

تحتوي رؤوس HTTP على معلومات نصية مخزنة في أزواج من المفاتيح والقيم، وتتضمن في كل طلب HTTP. تنقل هذه الرؤوس المعلومات الأساسية، مثل ما هو متصفح العميل المستخدم وما هي البيانات التي يتم طلبها.

GET /example HTTP/1.1
Host: example.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

في هذا المثال السابق، يكون طريقة الطلب GET والمورد المطلوب هو /example. تحدد رأس Host اسم المجال للخادم المطلوب. يحدد رأس User-Agent متصفح العميل ونظام التشغيل الخاص به. يحدد Accept أنواع المحتوى التي يمكن للمتصفح إستقبالها. وهناك رؤوس أخرى مثل Connection و Cache-Control و Accept-Encoding و Accept-Language التي تقدم معلومات إضافية حول الطلب.

ماهو جسم الطلب HTTP Request Body

جسم الطلب هى البيانات الفعلية التى يتم إرسالها عن طريق طلب HTTP إلى الخادم, قد يحتوى الطلب على جسم او قد لا يحتوى على حالات اخرى.

يحتوى جسم الطلب على البيانات على سبيل المثال عند تسجيل الدخول يحتاج المتصفح فى العادة إلى إرسال بييانات الدخول مثل الاسم وكلمة المرور إلى الخادم ويتم إرسال هذه البيانات فى جسم الطلب.

يوجد اشكال متعددة للبيانات المرسلة فى جسم الطلب فقد تكون على شكل نص Plain text او على شكل JSON او XML او غيرها من الصيغ الأخرى.

ماهو ردود HTTP (Response)

بعد إرسال الطلب من العميل (غالبًا متصفح الويب – فى حالات اخرى تطبيق او برنامج) يقوم الخادم بمعالجة الطلب وإرسال الرد او Response مرة أخرى إلى العميل.

ويتكون الرد من ثلاثة أجزء:

  • رقم الحالة الرد Status Code
  • رأس الرد Response header
  • قد يحتوى على الرد على جسم Body

رقم الحالة للرد

هى مجموعة من الأرقام المتفق عليها يمثل كل رقم حالة معينة من حالات معالجة الطلب على سبيل المثال 200 تعنى تم بنجاح.

وتنقسم أرقام الردود إلى 5 فئات رئيسية، وفقًا للغرض العام للرد كما يلى:

  • 1xx: Informational – تعني أن الطلب تم استلامه وأن الخادم يعمل على المزيد من المعلومات.
  • 2xx: Successful – تعني أن الطلب تم استلامه وتم معالجته بنجاح.
  • 3xx: Redirection – تعني أنه يتعين على العميل إجراء إعادة توجيه لإكمال الطلب.
  • 4xx: Client Error – تعني أن الخادم لم يتمكن من معالجة الطلب بسبب خطأ في الطلب المرسل من العميل.
  • 5xx: Server Error – تعني أن الخادم لم يتمكن من معالجة الطلب بسبب خطأ داخلي في الخادم.

وهذه قائمة بأشهر رموز الردود:

  • 200 – تم بنجاح (OK)
  • 301 – أنتقل بشكل كامل (Moved Permanently)
  • 404 – غير موجود (No Found)
  • 500 – مشكلة داخلية بالخادم (Internal Server error)

ماهو الفرق بين HTTP و HTTPS

فى HTTP تكون البيانات المنقولة غير مشفرة ويمكن الوصول إليها بسهولة.

أما HTTPS فهو اختصار لـ “Hypertext Transfer Protocol Secure” وهو نفس البروتوكول الذي يستخدمه HTTP ولكنه يستخدم طبقة تشفير SSL أو TLS لحماية الاتصال بين المتصفح والخادم.

يتم استخدام شهادات SSL/TLS للتأكد من هوية الخادم وتشفير البيانات التي يتم إرسالها بين المتصفح والخادم، مما يجعل من الصعب جدًا لأي شخص آخر الوصول إلى البيانات المرسلة.

بشكل عام، يعتبر HTTPS أكثر أمانًا من HTTP، حيث يحمي البيانات المرسلة من التجسس والتلاعب والسرقة. ولهذا السبب، يستخدم HTTPS بشكل شائع في المواقع التي تتضمن بيانات حساسة مثل تفاصيل الدفع والمعلومات الشخصية ومؤخرًا بدأت المتصفحات منع الوصول إلى تلك المواقع التى لاتستخدم HTTPS إلا بعد الموافقة على إستخدام الموقع بدون SSL.

المنافذ (Ports) فى HTTP

تستخدم HTTP منافذ محددة لإرسال واستقبال البيانات عبر شبكة الإنترنت. وتعد المنافذ هي الطريقة التي تتعرف عليها أجهزة الكمبيوتر المختلفة على البروتوكولات التي يتم استخدامها لنقل البيانات.

تستخدم HTTP منفذ TCP/IP المعتاد، حيث يعد المنفذ 80 هو المنفذ القياسي المستخدم لـ HTTP، وبالتالي يمكن الوصول إلى أي موقع يستخدم HTTP عبر المنفذ 80
ومن الممكن أن يتم استخدام منافذ أخرى أيضًا، مثل منفذ 8080 الذي يستخدمه بعض الخوادم كمنفذ بديل للمنفذ القياسي.

أما في حالة استخدام HTTPS، يتم إستخدام منفذ 443 كمنفذ افتراضي.

اشترك فى القائمة البريدية

شارك على وسائل التواصل

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

ستة عشر + خمسة عشر =