JavaRush /مدونة جافا /Random-AR /الجزء 3. بروتوكولات HTTP/HTTPS

الجزء 3. بروتوكولات HTTP/HTTPS

نشرت في المجموعة
هذه المادة جزء من سلسلة "مقدمة لتطوير المشاريع". المقالات السابقة: مرحبًا! اليوم سوف نفهم بروتوكولات HTTP و HTTPS. لكن أولاً، دعونا نوضح نقطة واحدة: نحن نتحدث عن بروتوكولات نقل البيانات عبر الشبكة في طبقة التطبيق لنموذج OSI. كما تتذكر، ناقشنا نموذج OSI في إحدى المقالات السابقة. وإذا كنت لا تتذكر، وهنا هو . الجزء 3. بروتوكولات HTTP/HTTPS - 1

ما هو بروتوكول نقل البيانات

هذا هو الاسم الذي يطلق على الاتفاقية المقبولة عمومًا، والتي بفضلها يرسل مطورو الخدمات المختلفة المعلومات في نموذج واحد. على سبيل المثال، باستخدام Google Chrome، يمكنك الحصول على معلومات من كل من Facebook وTwitter، لأن المطورين ينقلونها باستخدام بروتوكول HTTP القياسي، ويمكن لمتصفحك التعامل معها. تعد القواعد الموحدة أيضًا ملائمة جدًا للمطورين من جانب الخادم أنفسهم: هناك العديد من المكتبات التي يمكنها تحويل المعلومات لك وإرسالها باستخدام البروتوكول المطلوب. تم تصميم HTTP في الأصل كبروتوكول لنقل صفحات HTML. كان هذا هو الحال لفترة طويلة، ولكن الآن يقوم المبرمجون بنقل كل من السلاسل وملفات الوسائط عبره. بشكل عام، هذا البروتوكول متعدد الاستخدامات ومرن، كما أنه سهل الاستخدام حقًا. الآن دعونا معرفة كيفية القيام بذلك.

هيكل HTTP

تجدر الإشارة على الفور إلى أن بروتوكول HTTP يتكون من نص فقط. حسنًا، نحن مهتمون أكثر بالبنية التي يوجد بها هذا النص. تتكون كل رسالة من ثلاثة أجزاء:
  1. خط البداية—يحدد بيانات الخدمة.
  2. الرؤوس - وصف معلمات الرسالة.
  3. نص الرسالة (النص) - بيانات الرسالة. يجب فصلها عن العناوين بخط فارغ.
باستخدام بروتوكول HTTP، يمكنك إرسال طلب إلى الخادم (طلب) وتلقي استجابة من الخادم (استجابة). الطلبات والاستجابات لها معايير مختلفة قليلاً.

كيف يبدو طلب HTTP البسيط

GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
يحتوي خط البداية على:
  • الحصول على - طريقة الطلب؛
  • / - مسار الطلب (المسار)؛
  • HTTP/1.1 - إصدار بروتوكول نقل البيانات.
ثم تأتي العناوين:
  • المضيف - المضيف الذي يتم توجيه الطلب إليه؛
  • وكيل المستخدم هو العميل الذي يرسل الطلب.
لا يوجد نص الرسالة. في طلب HTTP، يلزم فقط سطر البداية ورأس المضيف. الآن دعونا نلقي نظرة على كل شيء بالترتيب. يجب أن يحتوي طلب HTTP على بعض الطرق. هناك تسعة منها في المجموع: GET، POST، PUT، OPTIONS، HEAD، PATCH، DELETE، TRACE، CONNECT. الأكثر شيوعًا هي GET و POST. ستكون هاتان الطريقتان كافيتين في البداية. GET - يطلب المحتوى من الخادم. لذلك، لا تحتوي الطلبات التي تستخدم الأسلوب GET على نص رسالة. ولكن إذا لزم الأمر، يمكنك إرسال المعلمات عبر المسار بهذا التنسيق: https://cdn.javarush.com/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2 هنا: javarush .com - المضيف، / إرسال - مسار الطلب ،؟ - فاصل يشير إلى أن معلمات الطلب تتبع. في النهاية، يتم سرد المعلمات بتنسيق المفتاح=القيمة، مفصولة بعلامة العطف. POST - ينشر المعلومات على الخادم. يمكن لطلب POST نقل معلومات متنوعة: المعلمات بتنسيق key=value، أو JSON، أو كود HTML، أو حتى الملفات. يتم نقل جميع المعلومات في نص الرسالة. على سبيل المثال:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com

{
  "Id": 12345,
  "User": "John"
}
يتم إرسال الطلب إلى javarush.com/user/create/json، إصدار البروتوكول هو HTTP/1.1. يحدد القبول تنسيق الاستجابة الذي يتوقع العميل تلقيه، ويحدد نوع المحتوى التنسيق الذي سيتم إرسال نص الرسالة به. طول المحتوى - عدد الأحرف في الجسم. يمكن أن يحتوي طلب HTTP على العديد من الرؤوس المختلفة. يمكن العثور على مزيد من التفاصيل في مواصفات البروتوكول .

استجابات HTTP

بعد تلقي الطلب، يقوم الخادم بمعالجته وإرسال الرد إلى العميل:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98

<html>
  <head>
    <title>An Example Page</title>
  </head>
  <body>
    <p>Hello World</p>
  </body>
</html>
يحتوي سطر البداية في الاستجابة على إصدار البروتوكول (HTTP/1.1)، ورمز الحالة (200)، ووصف الحالة (OK). تشير العناوين إلى نوع المحتوى وطوله. يحتوي نص الاستجابة على كود HTML الذي سيرسمه المتصفح في صفحة HTML.

رموز حالة الاستجابة

كل شيء واضح فيما يتعلق بنص الرسالة ورؤوسها، ولكن من المفيد قول بضع كلمات حول رموز الحالة. تتكون رموز حالة الاستجابة دائمًا من ثلاثة أرقام، ويشير الرقم الأول من الرمز إلى فئة الاستجابة:
  • 1xx - معلوماتية. تم استلام الطلب، الخادم جاهز للمتابعة؛
  • 2xx - ناجح. تم استلام الطلب وفهمه ومعالجته؛
  • 3xx - إعادة التوجيه. ويجب تنفيذ الخطوات التالية لمعالجة الطلب؛
  • 4xx - خطأ العميل. يحتوي الطلب على أخطاء أو لا يتوافق مع البروتوكول؛
  • 5xx - خطأ في الخادم. لم يتمكن الخادم من معالجة الطلب، على الرغم من أنه تم كتابته بشكل صحيح؛
الرقمان الثاني والثالث في الكود يوضحان الإجابة. على سبيل المثال:
  • 200 موافق — تم استلام الطلب ومعالجته بنجاح؛
  • 201 تم الإنشاء — تم استلام الطلب ومعالجته بنجاح، مما أدى إلى إنشاء مورد جديد أو مثيله؛
  • 301 تم النقل بشكل دائم - تم نقل المورد المطلوب بشكل دائم، ويجب أن تتم الطلبات اللاحقة إليه على العنوان الجديد؛
  • 307 إعادة التوجيه المؤقتة - تم نقل المورد مؤقتًا. في الوقت الحالي، يمكنك الوصول إليه باستخدام إعادة التوجيه التلقائي؛
  • 403 محظور - الطلب واضح، لكن التفويض مطلوب؛
  • 404 لم يتم العثور عليه - لم يعثر الخادم على المورد على هذا العنوان؛
  • 501 لم يتم تنفيذه - لا يدعم الخادم وظيفة الاستجابة لهذا الطلب؛
  • 505 إصدار HTTP غير مدعوم - لا يدعم الخادم الإصدار المحدد من بروتوكول HTTP.
بالإضافة إلى رمز حالة الاستجابة، يتم أيضًا إرسال وصف الحالة، مما يجعل من السهل فهم ما تعنيه حالة معينة. يعد بروتوكول HTTP عمليًا للغاية: فهو يوفر عددًا كبيرًا من الرؤوس، والتي يمكنك من خلالها إعداد اتصال مرن بين العميل والخادم. لا يمكن النظر في جميع رؤوس الطلبات والاستجابة وطرق الطلب وأكواد حالة الاستجابة في مقال واحد. إذا لزم الأمر، يمكنك قراءة مواصفات البروتوكول الرسمية ، والتي تصف جميع الفروق الدقيقة. يُستخدم بروتوكول HTTP عادةً على المنفذ 80، لذلك عندما ترى عنوانًا ينتهي على المنفذ 80، يمكنك التأكد من أنه يجب الوصول إليه عبر HTTP. مع تطور التكنولوجيا والحركة النشطة للبيانات الشخصية على الإنترنت، كان علينا أن نفكر في كيفية توفير حماية إضافية للمعلومات التي ينقلها العميل إلى الخادم. وكانت النتيجة بروتوكول HTTPS.

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

يتطابق HTTPS من الناحية النحوية مع بروتوكول HTTP، أي أنه يستخدم نفس خطوط البداية والرؤوس. الاختلافات الوحيدة هي التشفير الإضافي والمنفذ الافتراضي (443) . يتم تشفير HTTPS بين HTTP وTCP، أي بين طبقات التطبيق والنقل. إذا نسيت ما هو عليه، قم بإلقاء نظرة على المقالة حول نموذج OSI . معيار التشفير الحديث هو TLS. لن نتعمق كثيرًا في هذا الموضوع، لكن تذكر أن التشفير يحدث قبل وصول المعلومات إلى طبقة النقل . يقوم HTTPS بتشفير كافة المعلومات باستثناء المضيف والمنفذ الذي يتم إرسال الطلب إليه. لتبديل الخادم لاستخدام بروتوكول HTTPS بدلاً من HTTP، لا نحتاج إلى تغيير رمز الخادم. يتم تفعيل هذه الميزة في حاويات servlet، والتي سنتحدث عنها في المقالات التالية. هذا كل شيء لهذا اليوم. لكن انتظر لحظة. لاستشعار طلبات HTTP، افتح Google Chrome، واضغط على F12، وحدد علامة التبويب "الشبكة". سيتم عرض جميع الطلبات والردود المرسلة/المستلمة بواسطة متصفحك هنا. الجزء 4. أساسيات Maven الجزء 5. Servlets. كتابة تطبيق ويب بسيط الجزء 6. حاويات Servlet الجزء 7. تقديم نمط MVC (Model-View-Controller) الجزء 8. كتابة تطبيق صغير للتمهيد الربيعي
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION