ما هو HTTP/3؟
HTTP/3 الإصدار الرئيسي الثالث من HTTP، ويستخدم QUIC بروتوكول نقل بدلاً من TCP. ويمنع ذلك حجب الانتظار عند رأس الخط، ويقلل زمن إنشاء الاتصال، ويحسن الأداء عبر الشبكات غير الموثوقة، ولا سيما عندما تتعرض الاتصالات لفقد الحزم أو يتغير عنوان الجهاز.HTTP/3 مقابل HTTP/2
| الميزة | HTTP/2 | HTTP/3 |
|---|---|---|
| النقل | TCP (بروتوكول التحكم في النقل) | QUIC (عبر UDP) |
| TLS | طبقة منفصلة | مدمج في QUIC |
| المصافحة | TCP + TLS (2-3 RTT) | 0-1 RTT |
| حجب الانتظار عند رأس الخط | على مستوى TCP | ملغى في التدفقات |
| ترحيل الاتصال | غير مدعوم | مدعوم عند تغير الشبكة |
| أثر فقد الحزم | يحجب جميع التدفقات | يقتصر على التدفق المتأثر |
كيف يعمل HTTP/3؟
HTTP/2 over TCP:
Client Server
│─────────── SYN ────────────►│
│◄────────── SYN-ACK ─────────│
│─────────── ACK ────────────►│ TCP Handshake
│─────────── ClientHello ────►│
│◄────────── ServerHello ─────│ TLS Handshake
│─────────── Finished ───────►│
│◄────────── Finished ────────│
│─────────── HTTP Request ───►│ (3 RTT minimum)
HTTP/3 over QUIC:
Client Server
│─────── Initial + ClientHello ─►│
│◄────── Initial + ServerHello ──│
│─────── HTTP Request ──────────►│ (1 RTT)
With 0-RTT Resumption:
│─────── 0-RTT + HTTP Request ──►│ (0 RTT!)
ميزات بروتوكول QUIC
| الميزة | الفائدة |
|---|---|
| قائم على UDP (بروتوكول بيانات المستخدم) | يتجنب حجب الانتظار عند رأس الخط في TCP |
| TLS 1.3 مدمج | تشفير دائم ومصافحة أسرع |
| معرّفات الاتصال | يستمر عند تغير عناوين IP |
| تعدد إرسال التدفقات | تسليم مستقل للتدفقات |
| تصحيح الأخطاء الأمامي | يقلل الحاجة إلى إعادة الإرسال |
ترحيل الاتصال
Mobile Network Switch (HTTP/2):
WiFi ──► Connection drops ──► New TCP connection ──► Start over
Mobile Network Switch (HTTP/3):
WiFi ──► Switch to cellular ──► Same QUIC connection continues
(Connection ID persists across IP changes)
حالة الاعتماد
| المنصة | دعم HTTP/3 |
|---|---|
| Chrome (كروم) | 87+ (2020) |
| Firefox (فايرفوكس) | 88+ (2021) |
| Safari (سفاري) | 14+ (2020) |
| Edge (إيدج) | 87+ (2020) |
| Cloudflare (كلاودفلير) | دعم كامل |
| AWS CloudFront (خدمة توزيع المحتوى من AWS) | دعم كامل |
| nginx (إنجن إكس) | 1.25.0+ (تجريبي) |
تحسينات الأداء
- الشبكات ذات الكمون المرتفع: تحميل الصفحات أسرع بنسبة تصل إلى 50%، مع اختلاف النتيجة حسب الخادم والمسار.
- الاتصالات كثيرة الفقد: لا يؤدي فقد حزمة واحدة إلى إيقاف جميع التدفقات المستقلة.
- شبكات الهاتف المحمول: يستمر الاتصال عند التبديل بين WiFi والشبكة الخلوية عندما يحافظ QUIC على معرّف الاتصال.
- الاتصالات الأولية: إعداد بزمن 1-RTT بدلاً من 3-RTT، أو استئناف بزمن 0-RTT عند توافر الحالة.
أفضل الممارسات
1. انشره إلى جانب HTTP/2: تعود المتصفحات إلى البديل بسلاسة عند غياب دعم HTTP/3.
2. استخدم ترويسة Alt-Svc: أعلن عن إتاحة HTTP/3 للعميل مع إبقاء البدائل مفهومة.
3. اضبط UDP بطريقة صحيحة: تأكد من سماح الجدران النارية بحركة QUIC ومن عدم إسقاط الحزم المشروعة.
4. راقب الأداء: قارن المقاييس بين إصدارات البروتوكول وفي ظروف الشبكة نفسها.
5. اختبر سيناريوهات الهاتف المحمول: يتفوق HTTP/3 على الشبكات الخلوية، لكن القياس الفعلي يظل ضرورياً.
مثال تهيئة الخادم
# Alt-Svc header to advertise HTTP/3
Alt-Svc: h3=":443"; ma=86400
يمثل HTTP/3 مستقبل نقل الويب، إذ يوفر اتصالات أسرع وأكثر موثوقية، ولا سيما للمستخدمين على الهاتف المحمول أو الشبكات ذات الكمون المرتفع.