تخطَّ إلى المحتوى

🌐 شرح أساسيات الشبكات

HTTP/2 و HTTP/3: تطوّر بروتوكول الويب

الدرس 24 من 27· ⏱ 2 دقائق قراءة· 🗓 آخر تحديث: ٢١ يوليو ٢٠٢٦

مشكلة HTTP/1.1

HTTP/1.1 (الذي رأيته في درس HTTP و HTTPS) نصّي وتسلسلي: كل طلب ينتظر رد الطلب الذي قبله على نفس الاتصال، فيلجأ المتصفّح لفتح عدّة اتصالات TCP موازية لتحميل صفحة فيها عشرات الملفّات — بطيء ومكلف.

HTTP/2 — تعدّد الإرسال

  • ثنائي (Binary Framing): يقسّم البيانات لإطارات ثنائية بدل نص خام، أسهل معالجة وأخفّ.
  • تعدّد الإرسال (Multiplexing): عدّة طلبات واستجابات في آن واحد على اتصال TCP واحد، فلا حاجة لاتصالات موازية.
  • ضغط الرؤوس (HPACK): يضغط رؤوس HTTP المتكرّرة بين الطلبات فيقلّل حجم البيانات المنقولة.
  • أولويّة الطلبات: يمكن للعميل تحديد أي الموارد أهمّ فيصل أولًا.
  • Server Push: ميزة قديمة كانت تتيح للخادم إرسال موارد قبل أن يطلبها العميل — ثبت أنها صعبة الاستفادة منها عمليًّا، والمتصفّحات الحديثة تعتمد بدلها على rel="preload" وحالة 103 Early Hints.

💡 عمليًّا، كل المتصفحات الكبرى تفعّل HTTP/2 فقط فوق TLS (يُسمّى h2) — لا يوجد دعم فعلي لنسخته غير المشفّرة (h2c) في المتصفّح، فتفعيل HTTPS شرط ضمني لتستفيد منه.

HTTP/3 — فوق QUIC بدل TCP

المشكلة المتبقّية في HTTP/2: TCP نفسه بروتوكول تسلسلي — لو ضاعت حزمة واحدة، كل التدفّقات (streams) تنتظر حتى تصل الحزمة المفقودة من جديد (Head-of-Line Blocking على مستوى النقل).

HTTP/3 يحلّ هذا باستبدال TCP بـ QUIC، بروتوكول نقل جديد مبني فوق UDP:

  • بلا حجب على مستوى النقل: كل تدفّق في QUIC مستقلّ، فحزمة مفقودة تُبطئ تدفّقها فقط، لا باقي الطلبات.
  • اتصال أسرع: يدمج مصافحة النقل والتشفير في خطوة واحدة تقريبًا (0-RTT أو 1-RTT) بدل مصافحة TCP ثم مصافحة TLS منفصلتين.
  • هجرة الاتصال (Connection Migration): يُعرَّف الاتصال بمعرّف (Connection ID) لا بعنوان IP والمنفذ، فينتقل جهازك من Wi-Fi لبيانات الجوّال دون قطع الاتصال.
  • QPACK بدل HPACK: ضغط رؤوس مصمّم خصّيصًا ليتوافق مع طبيعة QUIC ولا يعيد نفس مشكلة الانتظار التي في HPACK.

مقارنة سريعة

HTTP/1.1HTTP/2HTTP/3
بروتوكول النقلTCPTCPQUIC (فوق UDP)
تعدّد الإرساللا (يحتاج اتصالات موازية)نعمنعم
ضغط الرؤوسلاHPACKQPACK
حجب فقدان حزمةيوقف الاتصال كلّهيوقف كل التدفّقاتيوقف تدفّقًا واحدًا فقط
هجرة الشبكةتنقطعتنقطعتستمرّ

هل يهمّك كمطوّر؟

في الغالب لا تكتب كودًا مختلفًا لكل إصدار — المتصفّح والخادم يتّفقان تلقائيًّا على أحدث إصدار مدعوم (عبر ALPN أثناء مصافحة TLS). دورك عادة إعداد الخادم أو استخدام CDN يدعم HTTP/2 و HTTP/3 (معظم مزوّدي الاستضافة الحديثين يفعّلونها افتراضيًّا فوق TLS).

💡 لن ترى فرقًا واضحًا لموقع بسيط بملف واحد، لكن الفرق كبير لمواقع فيها عشرات الملفّات (JS/CSS/صور) تُحمَّل معًا.

🎯 التالي: WebSocket والتواصل اللحظي.

شرح HTTP/2 و HTTP/3: تطوّر بروتوكول الويب — أساسيات الشبكات بالعربي
HTTP/2 و HTTP/3: تطوّر بروتوكول الويبأساسيات الشبكات بالعربي · The Code Fix

📚 لمزيد من التعمّق في أساسيات الشبكات، راجِع توثيق HTTP والشبكات على MDN.

هل كان هذا الدرس مفيدًا؟