الخلاصة
- كل اتجاه في تدفق QUIC هو تسلسل مرتب من البايتات، ولا تتحول حدود STREAM إلى حدود رسائل تطبيقية.
- ينقل FIN وRESET_STREAM قيمة Final Size غير قابلة للتغيير لمطابقة ائتمان التحكم في التدفق المستهلك.
- لا تثبت Final Size وحدها أن التطبيق قرأ البيانات أو حللها أو التزم بها أو أكمل نتيجة تجارية.
قد تكون لوحة المراقبة دقيقة بشأن النقل ومضللة بشأن العمل. فعندما ترى Final Size معروفة، قد تضع علامة «مكتمل» على الطلب، رغم أن القيمة تحدد فقط نهاية تسلسل البايتات. يمكن أن ينتهي اتجاه التدفق بصورة سليمة عبر إطار STREAM يحمل FIN، أو بصورة مفاجئة عبر RESET_STREAM. وفي الحالتين يمكن إغلاق الحساب، لكن ذلك لا يجيب عن سؤال ما إذا كان التطبيق قد قرأ البيانات أو تصرف على أساسها.
يعرض QUIC كل اتجاه كتسلسل مرتب من البايتات. ولا تُحفظ حدود إطارات STREAM أثناء الإرسال أو إعادة الإرسال أو التسليم إلى التطبيق. لذلك ينتمي تقسيم الرسائل إلى بروتوكول التطبيق. فحد الإطار ليس فاصلاً تلقائياً لطلب أو سجل أو معاملة.
عندما يحمل إطار STREAM قيمة FIN، تكون Final Size مساوية لإزاحة الإطار مضافاً إليها طول بياناته. أما RESET_STREAM فيحمل حقلاً صريحاً باسم Final Size. وتساوي القيمة أكبر إزاحة بايت أُرسلت مضافاً إليها واحداً، أو تساوي صفراً إذا لم تُرسل بايتات. وهي تمثل ائتمان التحكم في التدفق الذي استهلكه ذلك الاتجاه. ويجمع التحكم على مستوى الاتصال قيم Final Size لكل التدفقات، بما فيها التدفقات المنتهية. هذه محاسبة للموارد وليست دليلاً على نجاح العمل.
بعد معرفة Final Size لا يمكن تغييرها. وقد يؤدي إرسال بيانات عند الحد أو بعده، أو إعلان قيمة مختلفة لاحقاً، إلى FINAL_SIZE_ERROR. وقد يلزم الاحتفاظ بالحالة بعد الإغلاق لاكتشاف التعارضات. تحمي هذه القاعدة اتساق الحساب، لكنها لا تحول الحساب إلى إثبات للتسليم.
توجد حالات استقبال مستقلة. فمعرفة Final Size لا تعني وصول كل البايتات السابقة لها. ووصولها لا يعني تسليمها إلى التطبيق. وتسليمها لا يعني أن التطبيق قرأها أو حللها أو ثبّت حالة دائمة أو نفذ تعويضاً أو تراجعاً أو أكمل العمل. ويمكن لـ RESET_STREAM أن يقطع التسليم ويسمح بالتخلص من البايتات غير المقروءة، لكنه لا يثبت عدم التسليم الكامل؛ فقد تكون كل البيانات موجودة في الذاكرة الوسيطة، وقد تُحجب إشارة reset نفسها.
ينتمي إقرار الحزمة إلى طبقة أدنى. فمعالجة إطار STREAM تتطلب وضع بايتاته في مسار متاح للتطبيق، لكنها لا تثبت أن التطبيق قرأها أو استخدمها. وبالمثل لا تثبت Final Size نجاح الاتجاه المقابل أو الاتصال كله.
يجب أن يسجل دفتر الأدلة، بصورة مستقلة، معرف التدفق واتجاهه، وشكل الإنهاء FIN أو RESET_STREAM، ورمز خطأ التطبيق عند reset، ومصدر Final Size وقيمتها الرقمية، وأعلى إزاحة مرصودة والتغطية المتصلة، ودخول البايتات إلى المستقبل، وتسليمها إلى التطبيق أو قراءتها، وتأطير رسائل التطبيق، والالتزام الدائم والتعويض والتراجع والنتيجة التجارية، وأي حالة محفوظة لاكتشاف FINAL_SIZE_ERROR.
كما يجب فصل خمسة أبعاد. يتناول TR-046 إذن الإرسال قبل استخدام الإزاحات الأعلى، لا إجمالي الحساب النهائي. ويتناول TR-052 حدود رسائل DATAGRAM، بينما يتناول هذا الموضوع دفقاً مرتباً لا يحتفظ بحدود STREAM. ويتناول TR-053 إغلاق الاتصال بأكمله. ويتناول TR-054 طلب STOP_SENDING ودليل الإلغاء. ويحدد TR-045 ما يثبته ACK بشأن معالجة الحزمة. لا تحل أي من هذه الأدلة محل الأخرى.
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات

