الخلاصة
- يجب أن يعلن النظير معامل النقل الفارغ
reset_stream_atقبل إرسالRESET_STREAM_AT. هذا إذن لصيغة سلكية، لا اتفاق على معنى أول البايتات. - تمثل Reliable Size حداً أدنى للتسليم لا نقطة قطع دقيقة. لا تتحرك إلا إلى أسفل، ولا تعيد رسالة قديمة متأخرة وعداً أكبر أُلغي لاحقاً.
- يفرض WebTransport قاعدة مستقلة تحافظ على رأس الجلسة داخل البادئة الموثوقة. تلك القاعدة التطبيقية هي التي تبقي التدفق المقطوع قابلاً للإسناد إلى جلسته.
مسودة معتمدة تنتظر الإعلان وليست RFC بعد
قدم Marten Seemann وKazuho Oku في 6 سبتمبر 2026 المراجعة 11 من QUIC Stream Resets with Partial Delivery. يسجلها Datatracker كمسودة Standards Track صادرة عن مجموعة عمل QUIC، مقدمة إلى IESG، وحالة IANA فيها «موافق — إجراءات مطلوبة»، وحالة IESG «معتمدة وينتظر إرسال الإعلان». صدر قرار الاعتماد، لكن الإعلان الرسمي والتحرير ورقم RFC مراحل أخرى. لذلك لا يحول هذا التقرير المسودة إلى RFC قبل أوانها.
جاءت المراجعة بعد اجتماع IESG في 3 سبتمبر، ولا تقتصر على تمديد الصلاحية. تضيف حظراً معيارياً للاستخدام من دون تفاوض، وتصف Reliable Size بأنها «الكمية الدنيا»، وتفرق بين إعادة إرسال المعلومة الحالية وإعادة إرسال نسخة إطار قديم، وتفصل فحوص الاتساق، وتوضح أثر إعادة ترتيب الحزم، وتقترح الصفر بعد STOP_SENDING.
تكشف هذه التعديلات تعدد أصحاب القرار. يفتح النظير الامتداد. يعلن المرسل الخطأ والحجم النهائي والالتزام الحالي. يعرف التطبيق معنى البادئة. ويمكن للتطبيق المستقبل أن يسحب رغبته في البيانات. لا تنقل تسمية «إعادة ضبط موثوقة» كل هذه السلطات إلى طرف واحد.
الإذن بالإطار يأتي من النظير
يعلن الدعم بمعامل reset_stream_at ذي القيمة 0x1d، ويجب أن يكون محتواه فارغاً. تسبب القيمة غير الفارغة TRANSPORT_PARAMETER_ERROR. وتنص المراجعة 11 صراحة على أن الطرف MUST NOT يرسل الإطار 0x24 إذا لم يعلن النظير دعمه.
وجود الشيفرة في مكتبة أو معرفة إصدار المنتج أو نجاح اتصال سابق لا يصنع إذناً. المرجع هو حالة المصافحة الحالية التي أنشأها الطرف الآخر. القدرة على ترميز الإطار ليست سلطة على محلل الطرف المستقبل.
يضيف 0-RTT بُعداً زمنياً. يتذكر الجانبان ما إذا كان الخادم قد أعلن الامتداد. فإذا قبل الخادم البيانات المبكرة، لا يجوز له تعطيل الامتداد في الاتصال المستأنف. يستطيع رفض 0-RTT، لكنه لا يستطيع قبول السياق القديم وسحب المقدمة التي اعتمد عليها العميل عند بناء الإطار المبكر.
حتى التفاوض الصحيح يثبت قابلية تفسير الإطار فقط. لا يحدد طول رأس التطبيق الضروري ولا يجعل أول حد موجب ثابتاً.
الحد الأدنى أرضية تهبط ولا ترتفع
يحمل RESET_STREAM_AT معرف التدفق وApplication Protocol Error Code وFinal Size وReliable Size. يحفظ Final Size الحساب الكامل لعدد البايتات التي أنتجها المرسل. أما Reliable Size فتحدد أقصر بادئة يجب إيصالها إلى التطبيق رغم إعادة الضبط. وإذا تجاوزت الحجم النهائي وقع FRAME_ENCODING_ERROR.
يجب إعادة إرسال البيانات المفقودة تحت الحد. وفوقه ينبغي للمرسل ألا يعيدها، لكن يجوز للمكدس المستقبل تسليم بايتات وصلت بالفعل. لذلك لا تمثل القيمة أمراً بالحذف ولا سقفاً دقيقاً؛ قد يرى التطبيق أكثر منها.
ويمكن لإطار لاحق أن يخفض الحد. تعادل RESET_STREAM العادية، من ناحية التسليم، Reliable Size تساوي صفراً. الاتجاه أحادي: التخفيض مسموح والزيادة محظورة. وتبقى المعلومة الحاملة للقيمة الحالية والبايتات تحتها في دورة إعادة الإرسال حتى الإقرار.
يملك المرسل بذلك خيار تراجع لا خيار استعادة. يستطيع ترك جزء من التزام سابق، ولا يستطيع إحياء ضمان أكبر بعد تقليصه. الواقع التشغيلي عند المستقبل هو أصغر قيمة صحيحة وصلت، لا أكبر وعد محفوظ في السجل.
إعادة ترتيب الحزم لا تعيد قراراً قديماً
قد يعلن المرسل 90 بايتاً ثم يخفضها إلى 18. يمكن أن تصل رسالة 18 أولاً ثم تتأخر رسالة 90. يبقي المستقبل الحد عند 18؛ وإلا جعل ترتيب الشبكة قراراً أحادي الاتجاه قابلاً للعكس عرضاً.
كانت المراجعة 10 تقول تجاهل الإطار الذي يزيد Reliable Size. وقد يفهم ذلك على أنه تجاهل تغير غير مشروع في Error Code أو Final Size أيضاً. تقصر المراجعة 11 التجاهل على الزيادة نفسها. يجب أن يبقى رمز الخطأ ثابتاً بين إطارات الضبط، وأن يبقى الحجم النهائي متسقاً بينها وبين STREAM التي تحمل FIN. ينتج عن المخالفة STREAM_STATE_ERROR أو FINAL_SIZE_ERROR.
تشترك الحقول في وعاء واحد لكنها لا تشترك في صلاحية واحدة. قد تصبح قيمة الحد قديمة بينما تظل الحقول الأخرى أدلة يجب فحصها. الفحص الدقيق يحفظ التعارض الذي تخفيه علامة عامة مثل «إطار قديم».
على التطبيق تسمية البادئة التي لا تُختزل
تسمح مسودة QUIC لبروتوكول التطبيق بوضع عتبة لا يجوز أن تنخفض Reliable Size تحتها. يعرف النقل الإزاحات، لكنه لا يعرف إن كانت البايتات الأولى تحمل هوية جلسة أو اشتراكاً أو نوع كائن.
تقدم المراجعة 16 من WebTransport over HTTP/3 مثالاً واضحاً. عند ضبط تدفق بيانات، يجب استخدام RESET_STREAM_AT بحد يغطي رأس WebTransport على الأقل. يحمل الرأس المعرف الذي يربط التدفق بالجلسة. من دونه يصل الانقطاع بلا مالك واضح، وقد يعجز المستقبل عن نسبة الخطأ أو تحرير الحالة الصحيحة.
تستخدم المراجعة 17 من Media over QUIC Transport قاعدة مشابهة وأقل إلزاماً. ينبغي أن يشمل الحد رأس subgroup stream حتى يتعرف المشترك إلى الاشتراك ويحسب التدفقات المضبوطة عند PUBLISH_DONE. وقد يبقى الاشتراك حتى انتهاء المهلة إذا ضاعت الهوية.
لا يجوز مساواة MUST في WebTransport بـSHOULD في MoQ. تعبران عن اختيارين تطبيقيين مختلفين. يقدم QUIC أرضية قابلة للخفض؛ ويقرر البروتوكول الأعلى تكلفة فقدان الهوية ومتى يصبح التراجع مقبولاً.
STOP_SENDING يغير صاحب المصلحة
تعني STOP_SENDING أن التطبيق المستقبل لا يريد مزيداً من بيانات التدفق. توصي المراجعة 11، إذا استُخدم RESET_STREAM_AT في الرد، بجعل Reliable Size صفراً. الاستمرار في إعادة بادئة موجبة بعد سحب الاهتمام يستهلك الازدحام وائتمان flow control والذاكرة والوقت لمستفيد لم يعد يعالج البيانات.
يوفر الصفر طريقاً محدداً إلى سلوك إعادة الضبط العادية، ويؤكد أن القيمة الأولى ليست ديناً أبدياً. قد يحتاج وسيط مع ذلك إلى الرأس لتوجيه الخطأ إلى قفزة أخرى أو إغلاق حساب. عندها يجب على التطبيق توثيق الاستثناء وطوله ومدته ومن يتحمل كلفة الحالة.
الموثوقية التزام محدود، وليست حقاً في تجاهل الإلغاء. ومن دون مالك وشرط نهاية تتحول الخاصية النافعة إلى حجز لموارد الغير.
تبقى الموارد ملتزمة بعد كلمة «ضبط»
يخضع Final Size لـflow control على مستوى التدفق والاتصال. عند نقص الائتمان قد يؤجل المرسل RESET_STREAM_AT نفسه. ويؤدي تجاوز حدود المستقبل إلى FLOW_CONTROL_ERROR. يستدعي الإطار إقراراً، وتُعاد معلوماته والبيانات المفقودة تحت الحد.
لا يصل جانب الإرسال إلى Data Recvd حتى يُقر الحد الحالي وبادئته. وينتظر جانب الاستقبال البايتات نفسها. وحتى ذلك الوقت يستمر خطر التزام الموارد واستنزافها.
ينبغي للقياس أن يربط إعلان النظير، والقيمة الأولى والأصغر، وFinal Size، والبايتات المعادة، وحجب الائتمان، وتوقيت STOP_SENDING، وزمن الوصول إلى الحالة النهائية، والحالة التي لا تتحرر إلا بالمهلة. عدّ إطارات reset وحده يقيس الاسم ولا يقيس الدين الباقي.
حدود الإثبات
تثبت المصادر النص وتاريخ التعديلات ومنطق المراجعين. لا تثبت انتشاراً أو أداء أو قابلية تشغيل بيني أو حادثة إنتاج. لم نختبر متصفحاً أو CDN أو relay أو مكدس QUIC أو خدمة وسائط. تشير حالة IANA إلى إجراءات، ولا نعتبر كل تسجيل مطلوب نهائياً.
مراجعتا WebTransport وMoQ المذكورتان مسودتان أيضاً. توضح لغتهما كيف يبني التطبيق حدوده، ولا تتنبأ بالنص النهائي. ويمكن للمراجعة 11 أن تتغير خلال النشر.
الخلاصة الدائمة ضيقة: إذن الإطار، والحد الأدنى الحالي، ورأس التطبيق الضروري، ورغبة المستقبل في التوقف سلطات مختلفة. يجب أن يحفظها running code كحالات منفصلة قابلة للاختبار والمراقبة.
المصادر
- سجل Datatracker الحالي
- تاريخ الوثيقة
- اقتراع IESG
- المراجعة 10
- المراجعة 11
- مراجعة Mike Bishop
- مراجعة Ketan Talaulikar
- RFC 9000 — QUIC
- WebTransport over HTTP/3، المراجعة 16
- Media over QUIC Transport، المراجعة 17
- سجلات QUIC لدى IANA
- Heng Lu — Minimum Initial Specification
- Heng Lu — On Reality Layers
- Heng Lu — Running Code Is Primary
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
