-->
google-playkhamsatmostaqltradentmessengerblogger
ما هو بروتوكول http وكيف يعمل و كيف وما هي مكوناته

ما هو بروتوكول http وكيف يعمل و كيف وما هي مكوناته

في البداية اسم  بروتوكول  في عالم  الاتصالات  , يطلق على مجموعة القواعد التي من الضروري الالتزام بها من قبل طرفين لإتمام اتصال صالح. …

    في البداية اسم بروتوكول في عالم الاتصالات , يطلق على مجموعة القواعد التي من الضروري الالتزام بها من قبل طرفين لإتمام اتصال صالح.
    Http هو اختصار لـ hypertext transfer protocol او بروتوكول نقل النص التشعبي , أو بمعنى اكثر وضوحا : هي مجموعة القواعد اللازمة لصنع قناة تواصل بين وجهة المستخدم (المتصفح ) و سيرفر http لعرض محتوى تشعبي (صفحة html ).


    ما هو بروتوكول http وكيف يعمل و كيف وما هي مكوناته و خصائصة 



    Tim Berners-Lee
    تاريخ البروتوكول : 
    في منتصف الثمانينات كان البروتوكول المستخدم للتواصل بين العلماء والمراكز العلمية هو بروتوكول File Transfer Protocol , رغم قوة البروتوكول في حمل كميات ضخمة من المعلومات (مقارنة بالعصر المذكور ) , الا أن العلماء كانوا بحاجة إلى بروتوكول اسرع  لمشاركة النتائج مع المجتمع.
    في نهاية الثمانينات  قام العالم الإنجليزي تيم بيرنس لي (Tim Berners-Lee) بابتكار بروتوكول النصوص التشعبية المعروف حاليا ب برتوكول HTTP.
    الاختلاف بين بروتوكول http و بروتوكول ftp هو أنه باستخدام بروتوكول  http اصبح بإمكان العلماء مشاركة الوثائق المكتوبة باللغة التشعبية html ,و اللذي بها مميزات لم تكن موجودة في ذاك الوقت , على سبيل المثال الروابط , والصور .


    كيف يعمل بروتوكول http ؟

    HTTP REQUEST AND RESPONSE 


    بروتوكول http يعمل بشكل أساسي علي مفهوم الطلب والرد , بنفس منطق التواصل البشري.
    ل انشاء اتصال ما , تقوم  وجهة المستخدم , او المتصفح ب ارسال طلب للسيرفر المطلوب علي البورت المجهز لاستقبال طلبات http , في كثير من الاحيان يكون البورت هو 80 او 443.


    ينقسم الطب المرسل الى جزئين : 
    الجزء الأول  هو الرأس أو header , ويحتوي بداخلة على جميع المعلومات الأساسية اللازمة لإنشاء الاتصال , مثال : الاسم خوارزمية ضغط البيانات (ك gzip) بالاضافة الى معلومات اخرى ك الكوكيز [عناصر رأس الطلب]


    الجزء الثاني و هو الجسم او body : وتحتوي على المعلومات الذي سيتم معالجته من قبل الخادم , ويمكن أن يحتوي علي html form أو json object. وجسم الطلب يتواجد فقط في بعض أنواع الطلبات ك post و و put , وهو غير موجود في النوع get علي سبيل المثال. [اطلع علي أنواع الطلبات]


    من ثم يقوم الخادم ب استقبال الطلب ومعالجته, استنادا إلى المعلومات المرفقة مع الطلب, ويقوم بإرسال الرد من جديد الى جهازك علي  البورت الخاص ب واجهة المستخدم (ويتم إرسالها مع الهيدر الخاص بالطلب)


    ينقسم الرد الي جزئين : 
    الجزء الأول هو رأس الرد او  response header : ويحتوي بداخلة على المعلومات الاساسية الخاصة بالرد ك نتيجة الرد , والذي تحتوي علي رقم من 100 الي 599  وكل رقم يعبر عن ناتج الرد , علي سبيل المثال : اذا كان الكود هو 404 هذا يعني ان السيرفر لم يستطع إيجاد المحتوى المطلوب.


    الجزء الثاني هو جسم الرد او response body ويحتوي على محتوى الرد , علي سبيل المثال صفحة html أو صورة.


    عناصر رأس الطلب :






    Accept :

     يقوم هذا العنصر ب اخبار السيرفر عن انواع البيانات المدعومة من وجهة المستخدم , علي سبيل المثال text/html,application/xhtml+xml
    ويتم الفصل بين كل نوع و اخر ب فصلة 


    Accept-Charset : 

    يقوم هذا العنصر ب اخبار السيرفر ب أنواع الحروف التي تستطيع واجهة المستخدم التعامل معها , على سبيل المثال utf-8 او utf-6



    Accept-Encoding : 

    يقوم هذا العنصر ب اخبار السيفر عن خوارزمية الضغط المستخدمة في الاتصال , على سبيل المثال gzip 

    Accept-Language : 

    يقوم هذا العنصر ب اخبار السيرفر عن اللغة الخاصة بالواجهة علي سبيل المثال , ar_eg او en. وهو حقل غير ضروري 


    Access-Control-Request-Method :

     يحتوي هذا الحقل على نوع الطلب المرسل , على سبيل المثال post او get [أنواع الطلبات]


    Authorization : 

    هذا الحقل يستخدم في حالة ان كان الدخول للسيرفر يحتاج الى صلاحيات دخول , وهو عبارة عن اسم مستخدم وكلمة مرور مشفرين بخوارزمية base64 , ويفصل بين اسم المستخدم و كلمة المرور ب ":".


    Cache-Control :

     هذا العنصر يقوم ب اعطاء الخدمات ,التي سيمر عليها الطلب , الامر الخاصة بارشفة الطلب , على سبيل المثال Cache-Control: no-cache 


    Content-length :

     هذا العنصر يحتوي علي طول جسم الطلب بالبايت , على سبيل المثال 1024 


    Cookie : 

    هذا العنصر يحتوي على الكوكيز المشاركة بين السيرفر والعميل , علي سبيل المثال : Cookie:name:ahmed;age=22 




    Range : 

    يستخدم هذا العنصر ل مطالبة السيرفر بإرسال جزء من الرد , هذا هو الهيدر اللذي يمكننا من مشاهدة الفيديوهات و تحميل الملفات القابلة للايقاف و الاستعادة 


    Upgrade :

     هذا العنصر يحتوي علي طلب من جانب العميل او وجهة المستخدم من أجل تحديث البروتوكول المستخدم للاتصال , مثال Upgrade: h2c, HTTPS/1.3, IRC/6.9, RTA/x11, websocket

    Date : 

    يحتوي على التاريخ الذي تم إنشاء الطلب به , على سبيل المثال Tue, 28 Apr 2020 15:21:32 GMT


    Proxy-Authorization :

     يحتوي على صلاحيات الدخول لسيرفر البروكسي ان وجد 

    If-Modified-Since : 

    هذا العنصر يقول للسيرفر إن كان المحتوى المطلوب قد تم تعديله منذ تاريخ معين أم لا , يستخدم كي لا.
    في حالة تحققت الحالة يقوم السيرفر بالرد بالكود 304 ل يبلغ واجهة المستخدم أنه لم يتغير اي شئ في المحتوى


    Host : 

    هذا العنصر يحتوي على اسم الهوست, على سبيل المثال coderslive.com:2000


    Referrer : 

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


    User-Agent :

     هذا العنصر يحتوي علي اسم المتصفح و رقم اصدارة و نظام التشغيل والبنية الخاصة بالمعالج . علي سبيل المثال : User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36


    عناصر رأس الرد : 



    Access-Control-Allow-Origin : 

    هذا العنصر يحتوي على المواقع المصرح لها بالدخول لهذا المحتوى , على سبيل المثال "*", ومعنى هذا أنه مصرح لجميع الموقع الدخول لهذا المحتوى. هذا العنصر يتم استخدامه في عمليات مشاركة المحتوى بين المصادر و في اغلب الاحيان ستجد معه بعض هذه العناصر Access-Control-Allow-Credentials, Access-Control-Expose-Headers, Access-Control-Max-Age, Access-Control-Allow-Methods, Access-Control-Allow-Headers


    Content-Encoding :

     يحتوي علي نوع خوارزمية التشفير المستخدمة في ضغط البيانات من قبل السيرفر ,على سبيل المثال gzip 


    Content-length :

     هذا العنصر يحتوي علي طول جسم الرد بالبايت , على سبيل المثال 12948


    Content-Type:

     يحتوي على نوع البيانات الموجودة في الرد , بالاضافة لنوع التشفير , على سبيل المثال Content-Type: text/html; charset=UTF-8


    Date : 

    يحتوي على التاريخ الذي تم إنشاء الرد به , على سبيل المثال Tue, 28 Apr 2020 15:21:32 GMT


    Upgrade :

     هذا العنصر يحتوي علي طلب من جانب السيرفر من أجل تحديث البروتوكول المستخدم للاتصال , مثال Upgrade: h2c, HTTPS/1.3, IRC/6.9, RTA/x11, websocket


    Server :

    يحتوي على اسم السيرفر الذي قام بمعالجة الطلب , علي سبيل المثال nginx او apache 


    Expires : 

    يحتوي على التاريخ , الذي بعده يصبح المحتوى غير صالح 


    Set-Cookie :

     يحتوي على الكوكيز الجديدة الذي على واجهة المستخدم اضافتها على سبيل المثال بعد تسجيل الدخول يطلب السيرفر من المتصفح بان يقوم بإنشاء كوكيز جديدة ب اسم المستخدم  Set-Cookie: UserID=midoelhawy; Max-Age=3600; Version=1





    انواع الطلبات في بروتوكول http : 



    GET :

    هو نوع الطلب المخصص لجلب البيانات  وهو نوع الطلب المستخدم من المتصفح بشكل افتراضي.


    POST : 

    هو نوع الطلب المستخدم ل اضافة محتوي ما الي السيرفر , على سبيل المثال محتويات html form و يحتوي جسم الطلب هنا علي المحتوي المطلوب معالجته .


    DELETE :

     يستخدم هذا النوع لحذف محتوى ما من السيرفر 


    HEAD :

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


    PUT :

     يستخدم لتحديث محتوى موجود بالفعل على السيرفر 


    TRACE :

     هذا النوع لا يتم استخدامه الي لأغراض التحقق , فهو ببساطة يقوم برد نفس الطلب المرسل من قبل الوجهة دون أي تعديلات , و يتم استخدامه لكي تتحقق الوجهة من أن كان الطلب يتم تعديله من قبل الخوادم الرابطة بين السيرفر و الكلاينت.


    PATCH :

    يتم استخدامه لعمل تعديلات بسيطة علي المحتوي 


    اكواد الرد الخاصة ببروتوكول http او http response codes : 



    في بروتوكول http حالة معالجة الطلب يتم التعبير عنها ب كود مكون من 3  أرقام , مثال 500 


    الرقم الاول يعبر عن طبيعة الحالة , فالخطأ 501 على سبيل المثال يعني ان السيرفر لا يستطيع معالجة نوع الطلب المرسل ,بعض السيرفرات لا يمكنها قبول نوع الطلب delete , بالتالي يقوم السيرفر بالرد برقم 501 ليقول لوجهة المستخدم أن هذا النوع غير مقبول.


    قائمة  الاكواد : 


    1XX: الأخطاء اللذي تبدأ بالرقم 1 تعني انه تم قبول الطلب لكنك بحاجة لتنفيذ مهمة اضافية 



    100 Continue
    تم استلام رأس الطلب , و السيرفر في انتظار إرسال جسم الطلب , يحدث في العادة مع أنواع الطلبات POST
    101 Switching Protocols
    مرسل الطلب قرر عمل تحديث للبروتوكول المستخدم ,عن طريق العنصر [upgrade], والان السيرفر يعرف ماذا يجب ان يفعل.
    102 Processing
    جاري المعالجة, لكن الطلب حتى الان لا يمتلك نتيجة , ويحدث لمنع المستخدم من الدخول في timeout , وهي اضافة تنتمي لمجموعة أوامر WebDAV [سنتطرق اليها في مقال خاص ]

    2XX : هو كود يوضح نجاح الطلب 








    OK 200 
    تم معالجة الطلب بنجاح , هذا هو الرد الافتراضي مع الطلبات الناجحة 
    201 Created 
    تم إنشاء العنصر المطلوب ,وقام السيرفر بإعادة الرد .
    202 Accepted
    تم قبول الطلب , لكن لم تنتهي عملية المعالجة 
    203 Non-Authoritative Information
    هذا الكود يظهر في حالة وجود سيرفر وسيط بين المستخدم و السيرفر , ويعني ان الطلب نجح , لكن قام السيرفر الوسيط بعمل تعديلات على الرد.
    204 No Content
    السيرفر قام بمعالجة الطلب بنجاح , لكنه لن يعيد أي رد 
    205 Reset Content
    يتطابق مع الرد 204, لكن هنا يطلب السيرفر عمل اعادة تهيئة للوجهة 
    206 Partial Content
    هذا الرد يظهر بشكل كبير في عمليات مشاهدة الفيديو streaming, عمليات تحميل الملفات القابلة للايقاف و الاستعادة , ويعني ان السيرفر قام بإرسال جزء فقط من البيانات استنادا إلى العنصر Range في رأس الطلب .
    207 Multi-Status
    هذا ايضا ينتمي لمجموعة أوامر webDav, ويستخدم عنما يكون السيرفر يمتلك اكثر من رد علي العمليات المطلوب تنفيذها , فيقوم السيرفر ب ارسال الردود داخل جسم الرد response body 

    3XX : هذا الكود يعبر عن ان السيرفر قام بتحويل الطلب 



    300 Multiple Choices
    هذا الكود يعبر عن ان السيرفر يقوم بعرض أكثر من خيار للتحويل , يستخدم عادتا في حالات  عرض الفيديوهات متعددة الجودة 
    301 Moved Permanently
    هذا الكود يعني ان الصفحة المطلوبة تم نقلها إلى عنوان آخر , ويتم ارسال العنوان في رأس الرد في العنصر LOCATION
    302 Found
    هذا الكود يعبر عن أن المحتوى تم نقلة بشكل مؤقت إلى عنوان آخر , وهو مشابه للكود 303 , والذي ينطبق فقط علي الاصدارات من الاكبر من او يساوي 1.1 
    303 See Other
    تم اضافته في الاصدار 1.1 مع الكود 307 لحل مشكل الخلط في الاستخدام 
    304 Not Modified
    يعني هذا الرد ان  المحتوي لم يتم تعديلة , ويتم الرد بهذا الكود عندما تقوم وجهة المستخدم بوضع حالة تحقق عن في رأس الطلب عن طريق العنصرين If-Modified-Since
    If-None-Match
    305 Use Proxy
    المحتوي متاح فقط من خلال استخدام http proxy , وهي اضافة متاحة في الاصدارات 1.1 ف ما فوق 
    307 Temporary Redirect
    يعني هذا الكود ان الطلب يجب ان يتم اعادة ارسال إلى عنوان uri مختلف , يشبة الرد 303 , بخلاف ان الرد هنا يتم عن طريق النوع POST

    4XX : هذا الكود يعبر عن ان السيرفر لن يستطيع معالجة الطلب ل مشكلة من جانب المستخدم 



    400 Bad Request
    هذا الكود يعني ان السيرفر لن يستطيع معالجة الطلب بسبب مشكلة في  صيغة الطلب من قبل المستخدم 
    401 Unauthorized
    المستخدم لا يملك صلاحية دخول لهذا المحتوى , شبيه بالكود 403. لكن الكود 401 مخصص للحالات الذي من الممكن بها للعميل الحصول على الصلاحيات لكنه لا يمتلكها , يستخدم في  الانظمة المصدقة
    402 Payment Required
    احد الاكواد اللذي لا يتم استخدامها بشكل كبير , هدف اضافتها هو صناعة انظمة دفع مبنية بشكل أساسي على أنظمة الدفع السريع 
    403 Forbidden
    هذه الحالة تعني ان السيرفر لا يريد اكمال الطلب , ستشاهد هذا الخطأ بشكل كبير في حالة اردت اظهار قوائم الملفات في مجلد ما , على عكس الخطأ 401 هنا لا وجود للصلاحيات
    404 Not Found
    الكود الأشهر بين اكواد الرد الخاصة بالبروتوكول , يعني ان السيرفر لم يستطيع ايجاد المحتوى المطلوب 
    405 Method Not Allowed
    هذا الخطأ يعني أن نوع الطلب المستخدم غير مسموح به [أنواع الطلبات]
    406 Not Acceptable
    هذا الخطأ يعني أن نوع  البيانات المولد من هذا الطلب , لا يتوافق مع الأنواع المقبولة من وجهة المستخدم , والذي يتم إرسالها في العنصر [ Accept]
    407 Proxy Authentication Required
    هذا الخطأ يظهر في حالة استخدام بروكسي وسيط ,ويعني هذا أن المستخدم بحاجة ل صلاحيات استخدام البروكسي , ويتم ارسالها مع العنصر [Proxy-Authorization]
    408 Request Timeout
    هذا الخطأ يعني ان السيرفر لم يستطيع معالجة الطلب خلال المدة المحددة 
    409 Conflict
    هذا الكود لا يظهر بشكل كبير , ويعني أنه حدث صراع ما على أحد الموارد , يحتوي جسم الطلب على سبب المشكلة 
    410 Gone
    العنصر المطلوب لم يعود متاح .
    411 Length Required
    الحجم المذكور في الطلب لا يمكن أن يكفي البيانات المطلوبة 
    412 Precondition Failed
    يمكن ارسال بعض حالات التحقق مع الطلب , في حالة لم يتحقق احدهم, يقوم السيرفر بالرد بهذا الكود 
    413 Request Entity Too Large
    حجم الطلب أكبر من الحجم الممكن إدارته من السرفر 
    414 Request-URI Too Long
    معرف الطلب كبير و لا يمكن للسيرفر معالجته 
    معرف الطلب هو الاسم الذي يرفق اسم الهوست والدومين 
    415 Unsupported Media Type
    نوع العنصر المطلوب غير مدعوم من السيرفر 
    416 Requested Range Not Satisfiable
    يحدث هذا الخطأ مع الملفات , ويعني ان وجهة المستخدم قامت بطلب جزء من الملف (عن طريق العنصر[Range]) غير موجود.
    426 Upgrade Required
    يعني هذا الخطأ أنه على المستخدم تحديث البروتوكول المستخدم في الاتصال , على سبيل المثال tls 1


    5XX : هذا الخطأ يعني ان السيرفر لا يستطيع معالجة الطلب بسبب مشكلة لديه (لا دخل للمستخدم ب ذلك )



    500 Internal Server Error
    خطأ داخلي في السيرفر 
    501 Not Implemented
    السيرفر لا يستطيع معالجة نوع الطلب المطلوب 
    502 Bad Gateway
    هذا الخطأ يعني انه وجهة مشكلة في الاتصال , على سبيل المثال بين سيرفر البروكسي و سيرفر http 
    503 Service Unavailable
    السيرفر غير متاح , هذا الخطأ يعني ان سيرفر ال  http غير ممكن ل استقبال الطلبات 
    504 Gateway Timeout
    هذا الخطأ يشبة الخطأ 502 , لكن في هذه الحالة يعني الرد ان السيرفر لم يحصل على رد من gateway خلال المدة المقدرة 
    505 HTTP Version Not Supported
    اصدار http المستخدم غير مدعوم من السيرفر 
    509 Bandwidth Limit Exceeded
    خطأ يظهر على السيرفرات المدودة او السيرفرات المشتركة , ويعني ان الباندوث المحدد لهذا السيرفر لم يعد كافي ل معالجة الطلبات 

    في البداية اسم  بروتوكول  في عالم  الاتصالات  , يطلق على مجموعة القواعد التي من الضروري الالتزام بها من قبل طرفين لإتمام اتصال صالح. …

    author-img

    mido elhawy

    تعليقات
    ليست هناك تعليقات

    إرسال تعليق

    add_comment

    إرسال تعليق

    مرحبا بكم في مدونتنا