الخلاصة
- فتحت RFC 6455 قناة WebSocket بطلب GET من HTTP/1.1 ورأسي
Upgradeواستجابة 101. أزالت RFC 7540 هذا التبديل الشامل من HTTP/2 لأنه يقسم الاتصال الواحد بين تدفقات متعددة. - أتاحت RFC 8441 CONNECT الموسع مع
:protocol = websocketو:schemeو:pathبعد تلقي العميلSETTINGS_ENABLE_CONNECT_PROTOCOL = 1من الخادم. تسجل IANA الإعداد برقم0x8وقيمة ابتدائية0. - يحمل التدفق المقبول إطارات WebSocket إلى جانب بقية التدفقات. لا تدخل
ConnectionوUpgradeومعالجةSec-WebSocket-Key/Acceptفي هذا الفتح؛ تستمر إطارات WebSocket داخل القناة الجديدة.
مفتاح يريد السيطرة على المبنى
بدأ بروتوكول WebSocket عام 2011 بطلب HTTP/1.1. أرسل العميل GET مع Upgrade: websocket وConnection: Upgrade، واستطاع الخادم الرد بـ101 Switching Protocols. بعد المصافحة صار اتصال TCP قناة المحادثة ثنائية الاتجاه. عندما كان الاتصال يخدم طلباً واحداً، أمكن تسليم الأنبوب كله إلى تلك المحادثة.
غيّر HTTP/2 طبيعة الأنبوب. باتت الصور والأنماط والرسائل المحتملة تعيش في تدفقات منفصلة على اتصال واحد. ألغت RFC 7540 استجابة 101 داخله: تبديل بروتوكول الاتصال بأكمله سيصادر عمل التدفقات المجاورة. تتعلق Upgrade وConnection بالوسيط المشترك لا بتدفق منفرد. لذلك صار مفتاح WebSocket القديم أكبر من الباب الذي يحتاجه.
تظهر الكلفة في تطبيق عادي. الصفحة تستخدم اتصال HTTP/2 بالفعل، لكن المحادثة الفورية تحتاج طريقاً مختلفاً للبدء. فتح اتصال منفصل للحفاظ على التحية القديمة يتخلى عن ميزة مشاركة الوسيط. أما تمرير 101 داخل اتصال متعدد التدفقات فيغير قواعد الجيران من دون إذنهم. نقلت RFC 8441 موضوع التفاوض من الاتصال كله إلى تدفق محدد.
يعلن الخادم الإذن قبل الطلب
يرسل الخادم SETTINGS_ENABLE_CONNECT_PROTOCOL = 1. يعطي سجل إعدادات HTTP/2 لدى IANA هذا الإعداد الرمز 0x8 والقيمة الابتدائية 0. بعد تلقي القيمة 1 فقط يستطيع العميل استخدام CONNECT الموسع على تدفقات جديدة. إذا أرسل الرأس الزائف الجديد قبل الإذن، يرى الخادم الذي لا يفهم الامتداد طلباً غير سليم. ترتيب الرسائل جزء من معنى الاتفاق.
يفتح العميل المأذون له تدفقاً يحمل :method = CONNECT و:protocol = websocket، ويضيف :scheme و:path و:authority للعنوان المقصود. هنا تكمن نقطة الانقلاب. في CONNECT العادي يشير :authority إلى مضيف يُفتح إليه نفق. في CONNECT الموسع هو سلطة عنوان المورد المستهدف. تنص RFC 8441 صراحة على أن الخادم لا يفتح نفقاً عادياً إلى هذا المضيف لمجرد رؤية CONNECT. يحدد :protocol وظيفة التدفق الجديد.
يستخدم عنوان WebSocket الآمن المخطط https في الطلب، وغير الآمن http. يظل المسار والاسم جزءاً من تحديد المورد. وللوكيل الأمامي عبر HTTP/2 وضع آخر: يوصي المعيار باستخدام CONNECT التقليدي أولاً للوصول إلى خادم WebSocket، ثم تحدد نسخة HTTP داخل النفق طريقة الفتح التالية. نفق الوكيل ليس تدفق CONNECT الموسع الموجه إلى الأصل.
استجابة 200 بدلاً من استعراض 101
يحل CONNECT الموسع محل GET الافتتاحي. لا يرسل Connection أو Upgrade، ولا يعالج تبادل HTTP/1.1 بين Sec-WebSocket-Key وSec-WebSocket-Accept؛ يقوم :protocol بهذا الدور على المسار الجديد. تبقى حقول المنشأ ونسخة WebSocket والبروتوكول الفرعي والامتدادات وفق قواعد WebSocket. تغير باب الدخول، واستمر البروتوكول الذي يسير خلفه.
يعرض مثال RFC إعلان الخادم، ثم طلب CONNECT، ثم :status = 200. بعد النجاح تحمل إطارات DATA الخاصة بـHTTP/2 بيانات WebSocket في الاتجاهين. يؤدي التدفق دور اتصال TCP الذي كانت تستخدمه RFC 6455، بينما تواصل التدفقات الأخرى طلباتها. تظل الأولوية والإلغاء وضبط التدفق من أدوات HTTP/2. يمثل END_STREAM الإنهاء المنظم وRST_STREAM الإنهاء الاستثنائي لهذه القناة بالذات.
يمكن لمحادثة طويلة أن تبقى مفتوحة من دون احتجاز صور الصفحة. يستطيع الخادم رفض الامتداد بعدم إعلان الإعداد، ويرى العميل غيابه قبل إنشاء الطلب الخاص. يظهر الإذن في SETTINGS، ويظهر الاستخدام في الطلب. لا يُطلب من وسيط تخمين معنى 101 قديم وسط حركة متعددة التدفقات.
بقي الاتصال لسائر مستخدميه
اختارت RFC 8441 تعديلاً محدود النطاق. تقر بإمكان إعادة تصميم أعمق، لكن CONNECT الموسع يعالج اجتماع WebSocket وHTTP/2 على الوسيط نفسه. بعد الفتح تستمر إطارات WebSocket ومعظم اعتبارات أمان RFC 6455. قصة إخفاء الإطارات تخص ما يجري داخل القناة؛ موضوع هذه القصة هو من يملك حق فتحها.
تثبت السجلات الرسمية الأربع الآلية والإعداد المسجل. لإثبات تبني خدمة معينة يلزم تاريخ إصدارات عملائها وخوادمها ووكلائها مع لقطات SETTINGS وHEADERS. تكفي الوثائق لإثبات القرار الهندسي: لم يسلم HTTP/2 اتصالاً مشتركاً لمحادثة واحدة. منح WebSocket تدفقاً بعد موافقة معلنة من الطرفين.
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات





