الخلاصة

  • لا يقرّ مستقبل QUIC حزمة قبل إزالة حمايتها بنجاح ومعالجة جميع الإطارات التي تحملها.
  • في إطار STREAM تعني المعالجة وضع البيانات في طابور استعداداً لاستلام التطبيق، لا أن التطبيق استلمها أو استهلكها.
  • إثبات التسليم أو الإنجاز يحتاج إلى إيصال من التطبيق مرتبط بالحزمة وإزاحات الدفق وسلسلة إعادة الإرسال.

تتحول لوحة المراقبة إلى اللون الأخضر حين تظهر الحزمة التي تحمل الطلب داخل نطاق ACK. إذا كانت هي الحزمة المحفزة للإقرار التي أُقرت حديثاً واختيرت للقياس، فقد تنتج منها عينة RTT؛ كما يوقف الإقرار إعادة إرسال المعلومات التي تأكد وصولها عبر تلك الحزمة. لكن عملية الاستقبال متوقفة قبل نداء القراءة؛ لم تُحلل البيانات ولم تُكتب ولم تتحول إلى فعل. هكذا رُفع إيصال نقل إلى نتيجة تطبيق من دون دليل كافٍ.

يحدد RFC 9000 في القسم 13.1 الحد بدقة. لا يجوز للمستقبل إقرار الحزمة قبل إزالة الحماية ومعالجة كل إطار. ومع STREAM يكفي أن توضع البيانات في الطابور استعداداً لاستقبال بروتوكول التطبيق؛ لا يشترط وصولها إلى التطبيق أو استهلاكها. لذلك يثبت ACK معالجة قوية داخل QUIC، لكنه يتوقف قبل استهلاك التطبيق.

نوع الشيء المُقرّ مهم أيضاً. يعرّف القسم 19.3 نطاقات ACK بأنها أرقام الحزم التي استلمها الطرف وعالجها ضمن فضاء أرقام واحد. الرقم يعرّف حزمة نقل محمية، لا رسالة أعمال. وقد تضم الحزمة أنواعاً متعددة من الإطارات، بينما تمتد رسالة واحدة عبر عدة إطارات STREAM وحزم.

يكشف نموذج الدفق الفاصل نفسه. يقدم القسم 2.2 سلسلة بايتات مرتبة، ويبين أن حدود إطارات STREAM لا تُحفظ عند النقل أو إعادة النقل أو التسليم. ويفصل القسم 3.2 بين حالة Data Recvd بعد وصول كل بيانات الدفق وحالة Data Read بعد أن يقرأ التطبيق جميع البيانات. اكتمال الوصول إلى النقل وبدء استلام التطبيق واكتمال القراءة انتقالات مختلفة.

كما أن ظهور ACK ليس دفتر إيصالات واحداً لكل حزمة. بموجب القسم 13.2، تُقر الحزم المحفزة للإقرار ضمن أقصى تأخير معلن وفق قواعد البروتوكول، أما الحزم غير المحفزة فقد تنتظر حركة لاحقة. وقد يضيع إطار ACK نفسه، ويمكن حذف النطاقات القديمة لاحقاً. لذا لا يثبت غياب إقرار يراه المرسل أن المستقبل لم يعالج الحزمة فوراً.

إعادة الإرسال لا تحافظ على هوية الحزمة أيضاً. يقرر القسم 13.3 إعادة إرسال المعلومات لا الحزمة المفقودة بكاملها. قد تظهر إزاحات STREAM نفسها في إطار جديد ورقم حزمة جديد. وتتوقف عادة إعادة إرسال المعلومات التي تأكد وصولها حين تُقر إحدى الحزم التي حملتها. يلزم ربط نطاق ACK بالإطارات ومعرّف الدفق والإزاحة والطول وحالة FIN وسلسلة إعادة الإرسال. وحتى بعد ذلك، ينتهي الدليل عند طابور النقل.

تلتزم خوارزميات الاسترداد بالنطاق نفسه. يستخرج RFC 9002 في القسم 5.1 عينة RTT من أكبر حزمة محفزة للإقرار تم إقرارها حديثاً، مع معالجة ACK Delay حسب القواعد. هذا قياس لمسار تغذية النقل الراجعة، لا زمن خدمة التطبيق. ويستخدم القسم 6.1 إقرارات لاحقة وعتبات للحزم والزمن لاستنتاج الفقد مع السماح بإعادة الترتيب. الصمت ليس إثبات فقد فورياً، ووصول ACK ليس إثبات نجاح التطبيق.

ينبغي بناء سلم للأدلة. أولاً تُحفظ الوصلة وفضاء الأرقام ورقم الحزمة ووقت الإرسال ووقت ACK وACK Delay والإطارات. ثم تُحفظ هوية STREAM والإزاحات والأطوال وFIN وحكم الفقد وإعادة الإرسال. بعد ذلك يُسجل إدخال طابور المستقبل وقراءة العملية أو استدعاء التطبيق. وأخيراً تُربط هوية الرسالة أو المعاملة وإقرار بروتوكول التطبيق وتأكيد الكتابة الدائمة والأثر والاستجابة.

لكل درجة عبارة مختلفة: عالج الطرف الحزمة المحمية؛ وصلت البايتات إلى طابور QUIC؛ قرأتها العملية؛ قبل التطبيق الرسالة؛ اكتملت العملية بصورة دائمة. لا يجوز لمؤشر أخضر واحد أن يمحو هذه الفروق.

يؤثر الفاصل في سلطة إعادة المحاولة. اعتبار ACK إنجازاً قد يترك عملاً عالقاً في الطابور. واعتبار غيابه المرئي فشلاً فورياً قد يكرر عملية عولجت بالفعل. وحدها الطبقة التي تعرف هوية العملية وقابلية تكرارها بأمان تستطيع إصدار قرار الإعادة.

إيصال QUIC قوي لأن ادعاءه محدود ودقيق. أما نتيجة التطبيق فيجب أن يثبتها التطبيق نفسه.