BROWSERHTTP/3SERVERover QUIC over UDP/4431-RTT handshake, multiplexed streams

HTTP/3

10 دقيقة قراءةتكنولوجيا الويب

HTTP/3 هو الإصدار الرئيسي الثالث من البروتوكول الذي يشغل الويب. حيث كان HTTP/2 تطورًا - نفس HTTP، تسليم أسرع - HTTP/3 هو إعادة تصميم للنقل، يعمل عبر QUIC بدلاً من TCP+TLS. لقد أصبح هذا هو الإعداد الافتراضي للمواقع الرئيسية منذ عام 2022، ويعمل بهدوء على تشغيل معظم حركة المرور التي يعتبرها المستخدمون الآن "سريعة".

يتم توفير نص المقالة الكامل باللغة الإنجليزية أدناه.

HTTP/3 هو HTTP عبر QUIC - بروتوكول الويب من الجيل التالي الذي يحل محل مكدس TCP+TLS+HTTP/2 بتصميم واحد متكامل قائم على UDP. تم توحيده في RFC 9114 في عام 2022 وهو الآن البروتوكول الافتراضي لمعظم المواقع الرئيسية، بما في ذلك خصائص Google وCloudflare وMeta وMicrosoft.

مرجع إصدار HTTP التاريخي

A مرجع سريع:

  • HTTP/0.9 (1991): طلبات من سطر واحد، بدون رؤوس، لا البيانات الوصفية. الفائدة التاريخية فقط.
  • HTTP/1.0 (1996): الرؤوس، والأساليب المتعددة، وأنواع MIME. يطلب كل منهم اتصال TCP جديد.
  • HTTP/1.1 (1997، تمت مراجعته في 2014): الاتصالات المستمرة، وخطوط الأنابيب، ورؤوس المضيف. العمود الفقري للويب لمدة عقدين من الزمن.
  • HTTP/2 (2015): البروتوكول الثنائي، وضغط الرأس (HPACK)، وتعدد الإرسال، ودفع الخادم. يتم تشغيله عبر TLS عبر TCP.
  • HTTP/3 (2022): يتم تشغيله عبر QUIC عبر UDP. يزيل حظر رأس الخط TCP، المصافحة بشكل أسرع، ويدعم ترحيل الاتصال.

ما تم إصلاحه عبر HTTP/3

ثلاث مشكلات محددة في HTTP/2 أدت إلى إعادة التصميم:

  • حجب رأس الخط بطبقة النقل. HTTP/2 يضاعف العديد من التدفقات عبر واحد اتصال TCP. عند فقدان حزمة ما، يقوم TCP بإيقاف الاتصال بالكامل حتى تتم إعادة إرسال الحزمة المفقودة - على الرغم من أن هناك تدفقًا واحدًا فقط يحتاج إلى تلك الحزمة. تعمل موثوقية QUIC لكل تيار على التخلص من هذا.
  • إعداد رحلة ذهابًا وإيابًا متعددة. TCP مصافحة + TLS = 3 رحلات ذهابًا وإيابًا قبل أن يتمكن HTTP من التدفق. تقوم QUIC بدمجها في رحلة واحدة ذهابًا وإيابًا (0 في بعض حالات 0-RTT). على اتصال بزمن انتقال يبلغ 100 مللي ثانية، يمثل ذلك 200-300 مللي ثانية من تحسين تحميل الصفحة.
  • يموت الاتصال عند تغيير الشبكة. يؤدي التبديل من Wi-Fi إلى الشبكة الخلوية إلى قتل كل اتصال TCP. يستمر ترحيل اتصال QUIC في التبديل عن طريق تحديد الاتصال بمعرف اتصال بدلاً من 5-tuple.

ما يظل كما هو HTTP/2

من منظور التطبيق، يبدو HTTP/3 مشابهًا جدًا لـ HTTP/2:

  • إطار ثنائي
  • Multiplexed التدفقات (الآن بدون حظر TCP HOL) ضغط
  • Header (الآن QPACK بدلاً من HPACK، أعيد تصميمه للعمل مع نموذج دفق QUIC)
  • دلالات HTTP نفسها - الأساليب ورموز الحالة والرؤوس

يعمل رمز التطبيق الذي يعمل على HTTP/2 على HTTP/3 بدون أي تغييرات؛ الاختلافات موجودة بالكامل في النقل.

كيف يستخدم المتصفح HTTP/3

Servers تشير إلى توفر HTTP/3 عبر رأس استجابة alt-svc على استجابات HTTP/2. يتذكر المتصفح أن "هذا الأصل يدعم أيضًا h3 على UDP/443" ويستخدم HTTP/3 للاتصالات اللاحقة. إذا فشل QUIC (يحظر جدار الحماية UDP، وما إلى ذلك)، يعود المتصفح إلى HTTP/2 عبر TCP.

تستخدم العديد من المتصفحات أيضًا سجلات DNS HTTPS للتعرف على مدى توفر HTTP/3 قبل الاتصال - مما يوفر رحلة ذهاب وإياب HTTP/2 الأولية عند أول اتصال.

الأداء عمليًا

الانتصارات هي الأكبر حيث عانى TCP أكثر من غيره:

  • شبكات الهاتف المحمول مع فقدان كبير للحزم وتغييرات متكررة في الشبكة
  • اتصالات عالية زمن الاستجابة حيث تكون المصافحة المحفوظة ذهابًا وإيابًا مهمة بشكل متناسب
  • الصفحات التي تحتوي على العديد من الموارد حيث فوائد تعدد الإرسال مركب

في الاتصالات السلكية النظيفة بحافة CDN، يعمل HTTP/3 وHTTP/2 بشكل مشابه. تتسع الفجوة مع تدهور الظروف - بالضبط عندما يلاحظ المستخدمون البطء. تخدم AWS CloudFront وMicrosoft وMeta HTTP/3.

  • ما يقرب من 30-40% من جميع طلبات الويب من حيث الحجم تستخدم HTTP/3.
  • تقوم العديد من شبكات المؤسسات بحظر QUIC في جدار الحماية، مما يفرض الرجوع إلى HTTP/2. يعد هذا أكبر مانع لاعتماد أعلى.
  • ما لا يتغير HTTP/3

    HTTP لم تتغير دلالاته. تعمل نفس عمليات التخزين المؤقت والتفاوض على المحتوى والطلبات المشروطة وأنماط المصادقة. نادرًا ما يحتاج مطورو الويب الذين ينشئون التطبيقات إلى التفكير في إصدار HTTP المستخدم؛ المنصة تتعامل معها. تعود الفوائد تلقائيًا لأي شخص يدعم خادمه الأصلي وشبكة توصيل المحتوى (CDN) HTTP/3.

    الأسئلة المتداولة

    هل يحتاج موقعي إلى تطبيق HTTP/3 منفصل؟
    إذا كنت تجلس خلف شبكة CDN تدعم HTTP/3 (Cloudflare، Fastly، Akamai، CloudFront)، فهي موجودة بالفعل. إذا قمت بتشغيل خادم Origin مباشرة، فأنت بحاجة إلى خادم يدعم HTTP/3 (nginx 1.25+، Caddy، LiteSpeed، h2o). يحصل معظم المستخدمين على HTTP/3 من خلال النشر خلف شبكة CDN.
    كيف يمكنني معرفة ما إذا كان الموقع يستخدم HTTP/3؟
    تعرض علامة التبويب "الشبكة" في متصفح DevTools البروتوكول لكل طلب - يشير "h3" أو "http/3" إلى HTTP/3. أدوات الإنترنت مثل http3check.net تقوم أيضًا باختبار المواقع العشوائية. لا يظهر شريط عنوان المتصفح هذا؛ إنه شيء يتعلق بأدوات المطور.
    هل HTTP/3 أسرع دائمًا؟
    بالنسبة للاتصالات المفقودة أو ذات زمن الوصول العالي، نعم. في شبكة LAN النظيفة ذات زمن الوصول المنخفض، غالبًا ما يكون الاختلاف هو الضوضاء. في الشبكات التي تحظر UDP، يفشل HTTP/3 تمامًا ويعود إلى HTTP/2 مع زمن انتقال إضافي للإعداد، وهو أبطأ من تخطي QUIC تمامًا.
    ماذا يعني HTTP/3 لشبكات VPN؟
    شبكات VPN الحديثة (WireGuard، OpenVPN) تعمل على نفق UDP وHTTP/3 بشكل جيد. بعض إعدادات VPN القديمة أو المقيدة تقوم فقط بنفق TCP، وفي هذه الحالة يعود HTTP/3 بصمت إلى HTTP/2. تحقق من دعم UDP الخاص بشبكة VPN الخاصة بك إذا لاحظت بطءًا غير معتاد في مواقع HTTP/3.
    هل سيكون HTTP/4 موجودًا؟
    ربما في نهاية المطاف، ولكن ليس قريبا. تم شحن HTTP/3 فقط في عام 2022 وما زال معدل الاعتماد في ازدياد. من المحتمل أن يعتمد إصدار HTTP المستقبلي بشكل أكبر على QUIC بدلاً من استبداله؛ QUIC نفسها هي نقطة التطور الأكثر إثارة للاهتمام.
    شرح HTTP/3: بروتوكول الويب المستند إلى QUIC الذي يعمل على تشغيل المتصفحات الحديثة