اليوم باش نقارنو بين نسخ الـ HTTP (HTTP Versions) اللي هي الأساس في كيفاش الويب يوصلنا بالطريقة اللي نعرفوها توا، وبأسهل أسلوب تلقاه على الانترنت. باش نشوفو كل Version بمثال من الواقع، كيفاش يخدم، وشنيا مميزاتو وعيوبو.
اليوم باش نقارنو بين نسخ الـ HTTP اللي يسهّلو علينا التواصل مع الويب، حضّر قهيوتك ويلا بينا ^^
تشبيه من العالم الحقيقي
تخيّلنا شركات توصيل وبريد:
Network: الطرقات والكباري وكراهب التوصيل
Client (المتصفح): العبد اللي يطلب أو يبعت طرد
Server (الخادم): الشركة أو المخزن اللي يستقبل ويخدم الطلب
HTTP Protocol: القوانين اللي تنظّم كتابة العنوان، نوع الطرد، وطريقة الرد
TCP/UDP: وسيلة النقل اللي توصل الطرود
Data Packets: الطرود اللي فيها أجزاء البيانات
Router / Switch: مراكز البريد اللي تحرّك الطرود من بلاصة لبلاصة
💡 وقت نحكيو على HTTP، هو قانون ينظّم كيفاش تبعث وتستقبل الطرود. والنسخ المختلفة ما هي إلا تحسينات باش يكون كل شيء أسرع وأسهل.
توا عنا 3 Versions مستعملين:
الإصدار
السنة
البروتوكول الأساسي
الميزة الكبرى
HTTP/1.1
1997
TCP
Keep-Alive + Pipelining
HTTP/2
2015
TCP
Multiplexing + Binary Framing
HTTP/3
2022
QUIC (UDP)
أسرع + Latency أقل + مقاوم لانقطاع
HTTP/1.1 – “ساعي البريد التقليدي”
تخيّل شركة توصيل عندها Connection واحد برك. كل مرّة تبعث طرد لازم يعمل مشوار وحدو، وما ينجمش يشيل أكثر من طرد في نفس الرحلة. معناها: إذا عندك 10 Requests → يلزمك 10 رحلات، وحدة بوحدة، ولا تجيب Connections برشا.
المميزات
سهل وبسيط
مدعوم في كل المتصفحات
مناسب لحاجات صغيرة أو legacy
العيوب
Head-of-Line Blocking: طلب يتأخر → الباقي يستنّى
No Multiplexing: اتصال واحد = طلب واحد
Headers كبيرة وتعاود تتبعث
بطيء لو الصفحة فيها برشا ملفات
HTTP/2 – “شاحنة التوصيل (Multiplexing)”
الشركة حسّنت النظام ولات تستعمل Connection واحد، أما فيه برشا Streams (أرفف).
تنجم تبعث:
/index.html
/styles.css
/script.js
الكل في نفس Connection، كل واحد في رفّ وحدو.
أمّا: لو Packet تضيع → الباقي يتأخر (مشكل TCP Head-of-Line).
المميزات
Multiplexing: تبعث برشا Requests في نفس Connection
Header Compression (HPACK): headers مضغوطين وسرعة أعلى
Server Push: Server ينجم يبعت حاجة قبل ما تطلبها
Binary Framing: تحكّم أسرع
Prioritization للملفات
💡 60% من الويب يخدم بـ HTTP/2 لأنه أسرع من 1.1 بفرق كبير.
العيوب
مازال فيه TCP Head-of-Line
الإعداد أعقد (أغلب الوقت لازم TLS)
Debugging أصعب
HTTP/3 (QUIC) – “الدرون السريع”
الشركة عملت Upgrade كبير: ولات تبعث الطرود بـ Drones عوض الشاحنات. هوني نستعملو UDP اللي أسرع، ومع QUIC نرجّعو مميزات TCP:
Reliability
Flow control
Ordered delivery
Congestion control
المميزات
لا يوجد Head-of-Line Blocking
Handshake واحد (0-RTT)
Encryption built-in
ممتاز للموبايل (IP يتبدّل → الاتصال يكمل)
أداء قوي في الشبكات الضعيفة
مدعوم في Chrome, Edge, Firefox… و شركات كبار (Google, Cloudflare, YouTube, Meta) يستعملوه.
العيوب
مش مدعوم في كل الـ Infrastructure
أعقد في الـ Server
Debugging أصعب
في الختام
شفنا اليوم نسخ الـ HTTP وشنوة يهمّنا منهم كمبرمجين:
HTTP/1.1: مناسب لو System قديم ولا شيء بسيط
HTTP/2: أفضل اختيار حاليًا لو تحب دعم كامل وسرعة باهية