حد سأل نفسه ايه اللي بيحصل لما اطلب من المتصفح صفحة انترنت ويجيبهالي ؟
فيه بروتوكول مسئول عن الكلام دا اسمه HTTP

طب يعني ايه بروتوكول ؟

البروتوكول هو عبارة عن مجموعة لشوية قواعد متفق عليها للتواصل بين طرفين أو أكتر
يعني مثلاً ممكن ست كبيرة تكون متفقة مع البقال اللي تحتها انها تنزله سبت فيه ورقة مكتوب عليها لستة طلبات + الثمن
وبالتالي البقال عارف ان لما ينزله السبت دا فهايجيب الطلبات دي ويحطها في السبت ويحط معاها الفاتورة
أي خطأ في البروتوكول دا هايؤدي لفشل التواصل بين الطرفين, زي ان الست تنسى تحط فلوس او تنسى تحط لستة الطلبات فبالتالي البقال مش هايعرف يعمل حاجة والعملية هاتبوظ

 

نرجع تاني لبروتوكول HTTP

Hyper Text Transfere Protocol
وهو البروتوكول المسئول عن نقل صفحات الويب HTML وأي ملفات تابعة ليها زي CSS, JavaScript, …

البروتوكول بيتكون من حاجتين أساسيتين
حد اسمه Client بيبعت طلب Request لحد تاني اسمه Server بيطلب فيه حاجة بتتعرف بـ URL
والحد اللي اسمه Server بيشوف الطلب وبيبعت رد مناسب Response

فأنا لو عاوز اعرف الأخبار السياسية من موقع جريدة الشروق مثلاً
فال Client في الحالة دي هايكون ال Browser زي Chrome, Firefox
فبابعت للسرفر www.shorouknews.com اني عاوز Politics
فال URL بيبقى كله http://www.shorouknews.com/Politics

 

نرجع للست اللي عاوزة حاجة من البقال

البقال لو لقى الست كاتبة في اللستة حاجة عنده بيبعتهالها وبيقولها تمام
السرفر لو لقى اللي انت طالبه عنده بيبعت الصفحة الطلوبة وبيقول OK
تمام بتاعة الResponse بتبقى رقم 200 ودا بيبقى اسمه Status code

البقال لو مالقاش الحاجة عنده بيقول مش عندي
برضه السرفر لو مالقاش اللي انت طالبه بيقول Resource not found = 404

البقال ممكن وهو بيحضر الحاجة تبوظ منه فبيبعت الحاجة بايظة
برضه السرفر لو ضربException وهو بيجيب الحاجة المطلوبة فبيبعت Internal server error = 500

أما لو الست طلبت من البقال حاجة مش عنده فبيبعتلها انها عند المحل اللي جنبه ولما السبت يطلع عند الست بتبعت نفس الطلب تاني بس للبقال اللي جنبه
الموضوع دا اسمه Redirection
لو الطلب اللي انت طالبه مش عندي دلوقتي فباقولك 302 Found/Moved Temporairly
أما لو الطلب دا حاجة مش عندي وعمرها ماهاتكون عندي فبابعت 301 Moved Permanently

لو الست نزلت السبت من غير الفلوس فدا اسمه Bad request = 400 علشان الطلب فيه حاجة ناقصة
أما لو البقال نزله سبت غريب فهايرفض التعامل معاه 401 Unauthorized
ولو نزله سبت ست هو عارفها بس مش عاوز يتعامل معاها فهايرد ب 403 Forbidden

لستة بكل ال HTTP Status codes

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

 

 

ال Request عاوز ايه؟

ال Request فيه حاجة مهمة اسمها ال Request method ودي بتحدد انت عاوز ايه بالظبط
GET يعني انا عاوز حاجة
POST يعني انا بابعت حاجة
لو انا باطلب صفحة نت فهاتكون بالطريقة GET
ولو انا بملى فورم في موقع وبعدين بابعتها فعادة هاتكون الطريقة POST

لستة بكل ال HTTP Methods ومعلومات عن البروتوكول
https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

 

ال Request معاه ايه؟

ال Request أو ال Response بيبقى فيهم شوية معلومات اضافية اسمها headers
ال Request headers بتساعد السرفر انه يبعتلك Response مناسب


زي مثلاً ان ال Browser يقوله
على نوعية الملفات اللي ممكن يعرف يقراها accept:text/html
أو طرق الضغط اللي ممكن يتعامل معاها accept-encoding:gzip, deflate, sdch
وبالتالي السرفر هايشوف المعلومات دي وعلى اساسها هايبعتلك ملف html وممكن يضغطه بوسيلة الضغط gzip

ال Response headers مثال ليها

content-encoding:gzip
content-language:en
content-length:20202
content-type:text/html; charset=UTF-8

ال Browser بيعرف منها نوع الداتا اللي راجعة وطريقة ضغطها وتكويدها وحجمها علشان يعرف يقراها ويعرضها كويس

لستة بكل ال HTTP Headers
https://en.wikipedia.org/wiki/List_of_HTTP_header_fields

 

في المثال بتاعنا كانت الست هي ال Browser والبقال كان ال Server
اللستة والفلوس كانت ال Request والطلبات كانت ال Response
السبت وكيفية صعوده ونزوله ووضع الحاجات جواه دي تخضع لبروتوكول تاني اسمه TCP ودا البروتوكول اللي مبني عليه ال HTTP ومعظم بروتوكولات الانترنت وفيه تفاصيل النقل الفعلي للبيانات

 

حد سأل نفسه ايه اللي بيحصل لما اطلب من المتصفح صفحة انترنت ويجيبهالي ؟فيه بروتوكول مسئول عن الكلام دا اسمه HTTPطب يعن…

Posted by Hany Ahmed on Friday, November 18, 2016