الخلاصة

  • تعلن MAX_DATA وMAX_STREAM_DATA حدوداً مطلقة للإزاحة، لا بايتات جديدة ولا قياساً للذاكرة الحرة.
  • لا تلغي قيمة أصغر لاحقة الرصيد، وغياب DATA_BLOCKED لا يثبت أن المرسل غير محجوب.
  • يتطلب استنتاج السعة ربط الرصيد بالإزاحات والأحجام النهائية واستهلاك التطبيق والذاكرة وحالة الازدحام.

ترى لوحة تشغيل أن المستقبل رفع MAX_DATA إلى 16 ميبيبايت، فتسجل 16 ميبيبايت من الهامش. الحساب خاطئ لأن الرقم حد تراكمي وما استُهلك من إزاحات ما زال داخله. والمعنى خاطئ أيضاً: الرقم يسمح للمرسل بتوسيع سجل البايتات، لكنه لا يقيس مباشرةً الذاكرة الحرة ولا ما قرأه التطبيق.

تفرض RFC 9000 §4.1 حدين معاً. يضبط حد الاتصال بيانات STREAM عبر الاتصال كله، ويمنع حد التدفق تدفقاً واحداً من استهلاك المخزن بالكامل. لذلك يعتمد الإذن الفعلي على أكبر حد للاتصال واستهلاكه التراكمي، وعلى أكبر حد للتدفق وإزاحته المحسوبة.

القيم مطلقة وليست زيادات منفصلة. إذا أرسل المستقبل لاحقاً MAX_DATA أو MAX_STREAM_DATA أصغر فلا أثر له، وعلى المرسل تجاهل الإطار الذي لا يرفع الحد. لذا لا تكفي «آخر قيمة»؛ يجب حفظ أكبر قيمة مقبولة والحساب الذي تحكمه.

تُدخل RFC 9000 §19.9 كل بيانات STREAM في حد الاتصال، بما في ذلك الأحجام النهائية للتدفقات المنتهية. وتعرّف RFC 9000 §4.5 الحجم النهائي بأنه الرصيد الذي استهلكه التدفق. إنهاء التدفق أو إعادة ضبطه يثبت الحساب؛ ولا يعيد الإزاحات القديمة تلقائياً إلى نافذة الاتصال.

أما RFC 9000 §19.10 فتحاسب التدفق وفق أكبر إزاحة. قد تجعل الخسارة أو إعادة الترتيب هذه الإزاحة أكبر من مقدار البيانات المتصلة الجاهزة للتسليم. لذلك لا تحل بايتات الحزم الخام أو إشغال المخزن اللحظي محل سجل الإزاحات.

تترك RFC 9000 §4.2 للتنفيذ قرار توقيت زيادة الرصيد وحجمها. تزيد التحديثات الصغيرة المتكررة كلفة التحكم، بينما تتطلب التحديثات الأقل تكراراً زيادات والتزامات موارد أكبر. ويمكن الاستعانة بزمن الذهاب والإياب ومعدل استهلاك التطبيق في الضبط الآلي، لكنهما لا يحولان الحد المعلن إلى مقياس للذاكرة الحرة.

الرصيد ليس وعداً بالإنتاجية. تحذر RFC 9000 §4.3 من تقييد الإنتاجية إذا لم يبق الرصيد المتاح أكبر من حاصل ضرب النطاق الترددي في التأخير. قد يكون الرصيد شرطاً ضرورياً لكنه غير كافٍ؛ فنا́فذة الازدحام والخسارة والجدولة وعمل المرسل قيود مستقلة.

وDATA_BLOCKED دليل ناقص. تنص RFC 9000 §19.12 على أن المرسل ينبغي أن يرسله عندما يريد الكتابة ويمنعه حد الاتصال. لكنه غير ملزم بذلك، ولذلك تمنع §4.2 المستقبل من انتظار هذا الإطار قبل منح رصيد جديد. غيابه لا يثبت وجود هامش.

يجمع السجل القابل للدفاع أكبر الحدود، والاستهلاك التراكمي، والإزاحات، والأحجام النهائية، وإشارات الحجب، وحد استهلاك التطبيق، وإشغال الذاكرة، ونافذة الازدحام، وRTT، والخسارة، وأوقات التحديث. تثبت MAX_DATA إذن البروتوكول فقط.