إذا كنت دقيق الملاحظة فلا شك أنك انتبهت لكلمة HTTP أو HTTPS المذكورة في بداية كل رابط أو موقع تتصفحه على شبكة الإنترنت. ولكن إلى ماذا يرمز HTTP وما هي فائدته ولماذا يستخدم؟ وما هو الفرق بينه وبين HTTPS؟ هذا ما سنجيب عنه في هذا المقال.
إلى ماذا يرمز HTTP؟
هو اختصار لـhypertext transfer protocol، ويعني ذلك بروتوكول نقل النص التشعبي. ماذا يعني ذلك؟ دعونا نشرح كل كلمة على حدة.
بدايةً مع كلمة “بروتوكول protocol”؛ ففي عالم التقنية يُطلق اسم بروتوكول على مجموعة القواعد التي يجب على كل طرفين الالتزام بها ليتمكنا من التحدث (أو التواصل) مع بعضهما البعض. وفي الإنترنت فإن بروتوكول HTTP يحدد قواعد وآلية التواصل بين مختلف الأجهزة التي تشكّل بمجموعها شبكة الإنترنت.
ومن دون أي مبالغة فإنه ومن دون الـHTTP لن يحصل أي تواصل ضمن شبكة الإنترنت، وبالتالي لن تكون هذه الشبكة العالمية موجودة من الأساس. وهذا لأن بروتوكول HTTP يشرف ويضبط كل عمليات التواصل (أو النقل transfer) بين المخدم Server والعميل Client.
يمثل المخدّم أو السيرفر المكوّن الذي تتواصل معه عندما ترغب بالولوج إلى موقع ما على الإنترنت. فعلى سبيل المثال أنت حالياً في تواصل مع السيرفر الخاص بموقع mutaz-blog.net، وهو ما يمكّنك من قراءة المقال هذا.
للتواصل مع أي مخدّم يجب أن يتم ذلك عن طريق عميل Client، وفي معظم الأحيان فإن العميل هو متصفّح الإنترنت الذي تستخدمه، ولكنه يمكن أن يكون أي تطبيق. فمثلاً إذا وصلت إلى هذا المقال عن طريق منشور الفيسبوك ونقرت مباشرة على الرابط من تطبيق الفيسبوك للموبايل، فغالباً أنت تستخدم المتصفح المدمج بهذا التطبيق.
تتكوّن شبكة الإنترنت عملياً من مجموعة عمليات التواصل هذه بين المخدّمات والعملاء. وبما أن بروتوكول HTTP يضبط هذه العمليات فإنه يتحكّم بشبكة الإنترنت ككل، ومن دونه لن تتم أي عملية تواصل ولن تكون شبكة الإنترنت بشكلها الحالي.
الجزء الأخير من مصطلح HTTP هو كلمة “النص التشعبي hypertext” وهو يمثّل نوع الملفات التي يتم نقلها، وهي بشكل دائم تقريباً ملفات HTML، وهذا النوع من الملفات هو اللبنة الأساسية المكوّنة للويب. تتميّز هذه الملفات بأنها لا تمثّل كلمات وتعليمات فحسب، وإنما يمكن ربطها ببعضها interlinked، وهذا ما يفرّقها عن الملفات الموجودة على جهازك التي لا تستطيع غالباً القيام بذلك.
ما هي آلية عمل بروتوكول HTTP؟ (باختصار)
يعمل بروتوكول HTTP على مستوى ما يُدعى بطبقة التطبيق، وهي تقع في مستوى أعلى من طبقة الإنترنت، وهي تتضمن مجموعة التطبيقات والمتصفحات التي نستخدمها بشكل يومي، وبروتوكول HTTP هو جزء منها.
لنفترض أنك تريد زيارة موقع معيّن باستخدام المتصفّح، الذي يحدث حقيقةً هو أن المتصفح (العميل) يرسل طلب HTTP عبر الشبكة إلى المخدّم server الخاص بالموقع الذي تريد زيارته. ومن ثم يقوم المخدّم بإرسال استجابة HTTP، والتي تتضمن (إن مضى كل شيء على ما يرام) الصفحة التي طلبت زيارتها. وأخيراً يعرض المتصفّح هذه الصفحة.
طلبات HTTP
الأمر أعقد من هذا بقليل، فطلبات HTTP تتألف حقيقةً من عدة مكونات، وكل منها يلعب دوراً أساسياً في كيفية عرض الصفحة. وأهم أجزاء هذا الطلب هي:
- طرق الطلب (HTTP method)
- رأس الطلب Header
- جسم الطلب Body
أما طرق HTTP فهو نوع الطلب الذي أرسلته، وهو غالباً إما للحصول على معلومات أو لإعطاء معلومات (ويُستخدم لذلك الأمران GET وPOST بالترتيب، علماً أن هناك الكثير من الأوامر الأخرى).
بالنسبة لرأس الطلب فهو أشبه بالمعلومات التي تدوّنها على ظرف الرسالة أو الطرد عند إرساله بالبريد. أي أنه يتضمن معلومات مثل عنوان المُرسِل والمُرسَل إليه بالإضافة لمجموعة متنوعة من المعلومات كنوع صندوق البريد (المتصفح) ومعلومات أخرى عن التشفير.
وأخيراً فإن جسم الطلب يمثّل محتوى الظرف أو الطرد، مثل معلومات تسجيل الدخول أو أي معلومات أخرى يحتاجها الخادم ليعرض الصفحة التي طلبتها. وفي بعض الأحيان يكون جسم الطلب فارغاً ويكفي لإرسال الطلب المعلومات الموجودة في رأسه.
استجابات HTTP
يقوم الخادم بعد استلام الطلب بالعمل على استجابة HTTP التي سيرسلها، والتي تتألف أيضاً من 3 مكونات رئيسية:
- رمز حالة الرد HTTP status code
- رأس الاستجابة
- جسم الاستجابة
يعد رأس الاستجابة وجسمها مشابهان للغاية لنظيريهما في الطلب، إلّا أن جسم الاستجابة يتضمن كماً أكبر من المعلومات عادةً، وهي تؤلف مجموعة الملفات اللازمة لعرض صفحة الويب المطلوبة.
أما بالنسبة لرمز حالة الرد فجميعنا صادفها يوماً ما من دون أن يعرف أنها تمثّل رمز استجابة HTTP. يتألف الرمز من 3 خانات من الأرقام التي تتراوح بين الرقم 1 و5، ولكل خانة ورقم معنىً معين. فمثلاً يعني أي رمز يبدأ بالرقم 2 من الأيسر أن الاستجابة ناجحة وأن صفحة الويب يمكن عرضها من دون أي مشاكل. أما أي رمز يبدأ بالرقم 4 فهو يعني خطأً ما، ومن الأمثلة عليه الخطأ 404 الذي صادفناه جميعاً يوماً ما ويدل على أن الصفحة المطلوبة غير موجودة.
يعد هذا النظام (أو البروتوكول) الذي يحكم كل طلبات واستجابات HTTP الأساس لكل ما نقوم به على شبكة الإنترنت. إلّا أن الأمر يتضمن الكثير من التفاصيل، ومن أهم النقاط التي يجيب أن نتحدث عنها هي مسألة الأمان.
الأمان في HTTP والفرق بينه وبين HTTPS
المشكلة في HTTP تكمن في عدم وجود تشفير (أو أي نوع من أنواع الحماية) للمعلومات المتناقلة بين العميل والخادم. ماذا يعني ذلك؟
هذا يعني أن أي شخص تمكّن من اعتراض نظام المراسلة هذا سيتمكّن من الاطلاع على المعلومات المتناقلة بين الأطراف المختلفة. قد تحتوي هذه المعلومات على بيانات تسجيل الدخول لحسابات هامّة أو حتى معلومات بطاقات الائتمان والحسابات المصرفية.
الأمر أشبه بالخروج إلى الشرفة والتحدث مع جارك بصوتٍ عالٍ، فعلى الرغم من أن كلاً منكما متواجد في منطقته الخاصة والآمنة، إلّا أن أي شخص قريب يمكنه الاستماع لحديثكما.
لحل هذه المشكلة تم تقديم بروتوكول جديد للتواصل بين الخوادم والعملاء وهو HTTPS، ويمثل حرف s الأخير كلمة secure. وفي هذا البروتوكول يتم تشفير المعلومات المتناقلة وهذا يجعل من الصعب اعتراضها ومراقبتها وتسجيلها .
ومع الوقت -وبفضل جوجل- أصبح بروتوكول HTTPS هو البروتوكول المستخدم في معظم المواقع اليوم، ومن النادر حقاً أن تجد موقعاً لا يزال يستخدم نظام HTTP. خصوصاً وأن جوجل جعلت تطبيق HTTPS من أساسيات تحسين المواقع لمحركات البحث SEO.
لذا عليك الحذر عند الدخول لمواقع لا تستخدم HTTPS وهذا ما يفعله معظم المتصفحات اليوم بتنبيهك كما في الصورة.
وإذا كان من الضروري الدخول لهذا الموقع فننصحك أولاً بتجريب التالي:
- حاول إدخال HTTPS بدل HTTP بشكل يدوي ضمن رابط الموقع، فبعض المواقع تستخدم HTTPS ولكن ليس بشكل افتراضي أو قد تكون هناك بعض المشاكل في عمليات إعادة التوجيه Redirect ضمن الموقع.
- استخدم VPN فهذا يحمي من بعض المشاكل التي قد تحدث عند زيارة موقع لا يستخدم HTTPS.
- تواصل مع أصحاب الموقع لحل هذه المشكلة أو لا تقم بزيارة الموقع إن كنت تخشى على بياناتك أو إذا لم تكن تريد أن يتم مراقبة حركاتك ونشاطاتك على الإنترنت.
وهكذا فإن HTTPS هو عبارة عن النسخة الجديدة من بروتوكول HTTP، إلّا أن الأساس هو HTTP الذي لا يمكن لأي علاقة بين خادم وعميل أن تتم بدونه.
هل لديك أي سؤال عن كيفية عمل الإنترنت؟ لا تتردد بطرحه لنجيب عنه في المقالات السابقة.