الخلاصة

  • تعرّف RFC 10036 حقل HTTP المنطقي Incremental. تطلب القيمة الصحيحة من الوسيط الذي يفهمها أن يمرر المحتوى عند وصوله؛ وإذا رفض هذا الوسيط النمط كلياً فعليه أن يعيد خطأ، لا أن يقبل الرسالة ثم يخزنها كاملة بصمت.
  • الحقل ليس تفاوضاً على القدرات ولا إيصالاً يؤكد التسليم. يستطيع الوسيط غير العارف تجاهله، ويحتاج الطلب والرد إلى إشارتين مستقلتين، ويظل التجميع المحدود بالبايتات أو الزمن مسموحاً. لذلك لا بد من قياس التقدم الفعلي عند كل قفزة.

القرار الصحيح في قفزة واحدة لا يحكم السلسلة

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

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

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

عقد ضيق يحول الصمت إلى اختيار قابل للاختبار

نشر RFC Editor الوثيقة RFC 10036 ضمن مسار معايير IETF في أغسطس 2026 بعد عمل مجموعة HTTP. وسجلت IANA الحقل Incremental بصورة دائمة ضمن حقول HTTP، من نوع Item في Structured Fields، كما سجلت incremental_refused نوعاً لأخطاء HTTP Proxy-Status.

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

النطاق هو رسالة HTTP واحدة. فإذا كان التطبيق يريد مواصلة رفع البيانات بالتزامن مع بدء الرد، احتاج الطلب والرد إلى القيمة الصحيحة كل على حدة. لا يمنح الحقل في اتجاه ما سلطة على معالجة الاتجاه الآخر.

عندما يقبل وسيط واعٍ الطلب، ينبغي أن يرسل قسم الرؤوس ثم يمرر بايتات المحتوى باستمرار عند وصولها، بدلاً من انتظار المحتوى كله. ويمكنه مع ذلك جمع قسم الرؤوس أو قسم التذييل كاملاً. القاعدة تضبط نمط تمرير المحتوى ولا تلغي كل حدود معالجة HTTP.

الرفض الصريح دليل مفيد لا فشل في التصميم

تحتاج بعض وظائف الأمن إلى رؤية الرسالة كاملة قبل تقرير سلامتها. لا يمنح الحقل المرسل حق تجاوز هذه السياسة. بل يعطي الوسيط الواعي خياراً واضحاً: أن يمرر تزايدياً أو يرفض، بدلاً من القبول ثم إخفاء انتظار الجسم كله.

عند وجود تعارض دائم مع سياسة فحص المحتوى، توصي RFC 10036 باستجابة 501 يصاحبها خطأ Proxy-Status المسمى incremental_refused. يحول هذا الزوج توقفاً غير مرئي إلى رفض مصنف، فيسهل تمييز عجز السياسة من بطء المصدر أو فقد النقل.

أما نقص السعة المؤقت فينتج رفضاً آخر. تستهلك التدفقات الطويلة اتصالات وحالة متزامنة، ولذلك قد يفرض الوسيط عليها حداً أشد حفاظاً على خدمات أخرى. وعند بلوغ الحد توصي الوثيقة بالحالة 429 مع Proxy-Status connection_limit_reached.

لا يروي أي من التشخيصين قصة الطريق كله. قد يحذف وسيط تفاصيل لحماية بنيته الداخلية، وقد يزيل وسيط آخر Proxy-Status، وقد يضيع التذييل. لذلك يربط سجل الحادث الإشارة بهوية القفزة التي أصدرتها، والسياسة والسعة وقتها، والقياس المحلي الذي يؤيدها.

التزايدي لا يعني انعدام التخزين المؤقت

يؤدي إرسال كل جزء صغير بعملية مستقلة إلى هدر المعالج والشبكة والعمل اللاحق. لذا يسمح المعيار بتجميع صغير. تستطيع البرمجية الإرسال عند بلوغ عتبة من البايتات أو انتهاء مؤقت قصير.

الحد التشغيلي الحقيقي هو الفرق بين نافذة محدودة والانتظار حتى نهاية الرسالة. فعتبة 16 كيلوبايت ومؤقت 20 ميلي ثانية يصنعان نطاق تأخر قابلاً للقياس. أما «حتى ينتهي الجسم» فلا يصنع نطاقاً حين يمكن أن يبقى التدفق ساعات.

لا تكشف ?1 هذه الحدود، ولا تطلب إرسال حزمة فوراً، ولا تحجز نطاقاً، ولا تتجاوز التحكم في التدفق أو الازدحام. قد تضيف مكتبة HTTP والوكيل وTLS والنواة والنقل تأخراً بعد أن يختار التطبيق نمطه.

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

الوسيط غير العارف هو الحد الأصعب

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

لهذا تشير المواصفة إلى معرفة سابقة أو اختبار خاص بالمورد. الحقل إشارة تنسيق بين تطبيقات متوافقة، لا اكتشافاً شاملاً للقدرات. نجاح اختبار على عنوان أو نقطة حضور أو نسخة HTTP أو مسار لا يبقى دليلاً دائماً لمسار آخر.

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

يحتاج دليل القدرة إذاً إلى طريق وزمن. ينبغي تسجيل اختيار DNS والمسار، وهويات الوكلاء، ونسخ HTTP، وإصدارات الإعداد، وحفظ الحقل، وعتبات التجميع، ووقت أول رأس وأول محتوى، والإيقاع اللاحق، وما رآه العميل فعلاً.

الاستخدام الطويل وثنائي الاتجاه يكشف مخاطر مختلفة

تعد Server-Sent Events أوضح حالة في اتجاه الرد، لأن تخزين الرسالة كلها يصبح انتظاراً غير محدود. يجب أن يختبر التطبيق خروج الأحداث بإيقاعها المتوقع عبر كل طريق إنتاج مدعوم، لا مجرد وصول الرؤوس.

يدفع Chunked Oblivious HTTP إلى استخدام الاتجاهين: يستطيع العميل مواصلة الإرسال بينما يبدأ الخادم الرد. كل رسالة تحتاج إشارتها. ويذكر تقرير IESG أن العمل يعتمد على الحقل التزايدي، كما يشير إلى قلة التطبيقات الحية له. هذا إنذار لقياس الدعم وليس سبباً لإضعاف دلالة المعيار.

وتقول RFC 10036 أيضاً إن Extended CONNECT أنسب عادة لبنية HTTP في البروتوكولات ثنائية الاتجاه. تحدد HTTP/2 وHTTP/3 آليات Extended CONNECT لـ WebSockets. يجب أن يكون اختيار طلب ورد عاديين بمحتوى تزايدي قرار توافق واعياً، لا افتراضاً بأن حقلاً جديداً يحول أي سلسلة وكلاء إلى نفق عام.

سلسلة الدليل تنتهي عند التقدم المرصود

يمتلك المرسل النية التي يضعها على الرسالة. ويمتلك كل وسيط حالة دعمه وسياسة الفحص وحد السعة وعتبات التخزين. ويقرر مالك التطبيق إن كان الطريق المرصود يلبي حاجة المنتج وما البديل الآمن.

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

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

المصادر