تقنية

جزء ملف يراجعه المساعد: هل 206 يعني اكتمال التنزيل؟

رسم توضيحي: البداية 20 والنهاية 39؛ طرفان داخلان؛ طول الجزء 20 بايتا؛ الكلي المعلن 80 بايتا
مخطط من إعداد بحر العلوم. نطاق ورقي واحد؛ الحجم الكلي المكتوب لا يثبت اكتمال التنزيل

حجم الجزء الوارد لا يساوي دائما حجم المورد الكامل. حين يقرأ المساعد رد 206، يحتاج موضع البداية والنهاية والطول الكلي في Content-Range. نؤلف بطاقة رد بنطاق صغير ونحسبها على الورق؛ لا نجمع أجزاء تنزيل أو نفحص اتصالا.

الخلاصة السريعة

لا؛ يحدد Content-Range موضع جسم الجزء من المورد الكامل. [1] احسب الطرفين ضمن النطاق، ولا تحول وصول جزء أو حجم كلي مكتوب إلى إثبات اكتمال الملف.

  • تصف الترويسة موضع جزء في المورد، وتستخدم مع 206 أو 416 وفق MDN. [1] ورقتنا تخص 206، لا تنزيل مورد كامل.
  • في النطاق bytes 20–39/80، يبدأ العد من الصفر والطرفان داخلان؛ طول الجزء 20 بايتا، والحجم الكلي المعلن 80، لا 39 ولا 40.
  • النجمة مكان الحجم تعني أن الكلي غير معلوم؛ وفي 416 يكون النطاق نجمة. [1] لا نخلط مجهول الحجم مع جزء طوله صفر.
  • الجزء 20 بايتا من 80 معلنة يصف ربع الحجم فقط إذا طابق الجسم هذا النطاق؛ لا يثبت وصول بقية الأجزاء أو تجميعها وصحتها.

أي حجم يصفه الحقل؟

تشرح MDN أن Content-Range يحدد موضع محتوى جسم الرد بالنسبة لمورد كامل، وأنه يرد مع 206 أو 416. [1]

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

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

كيف نحسب الطرف الأخير؟

مواضع بداية النطاق ونهايته أعداد تبدأ من الصفر، والطرفان داخلان فيه وفق المرجع. [1]

نؤلف Content-Range بمعنى bytes 20–39/80. المواضع من 20 إلى 39 تحتوي عشرين بايتا: الفرق 19 ثم نضيف واحدا لإدخال الطرف الأول أيضا. الرقم 80 هو طول المورد المعلن؛ أما 39 فموضع النهاية وليس طول الجزء.

افترضنا أن جسم البطاقة يطابق النطاق. لم نقرأ عشرين بايتا فعلية؛ لو احتجنا تقريرا عما وصل، لزم جسم الرد نفسه وسجل فحصه.

الكمية المؤلفةالقيمةما تمثله
البداية20موضع من الصفر
النهاية39موضع داخل النطاق
طول الجزء20 بايتاحساب شامل للطرفين
الحجم الكلي80 بايتامعلن في البطاقة

ما معنى نجمة بدل رقم؟

تستعمل النجمة بدل الحجم عندما يكون الطول الكلي مجهولا؛ وفي رد 416 تدل نجمة موضع النطاق على أنه ليس نطاقا. [1]

لو أبقينا البداية والنهاية وبدلنا 80 بنجمة، نستطيع حساب طول الجزء المعلن، لكن لا نستطيع حساب حصته من كل معلوم. لا نضع 80 من بطاقة سابقة لمجرد أن الاسم لم يتغير.

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

هل يكفي الرقم لإعلان اكتمال الملف؟

في بطاقة 80 الكلي، عشرون على ثمانين تساوي ربع الحجم المعلن. هذه نسبة حسابية مشروطة بمطابقة الجسم، وليست نتيجة قياس نقل. لا نعرف أن بقية الستين بايتا وصلت في رسائل أخرى.

كما لا تثبت بطاقة النطاق طريقة تجميع الأجزاء أو تطابقها مع المورد المقصود. إذا زعم الملخص اكتمال التنزيل، يحتاج أدلة تلك الخطوات؛ لا يولدها من 206 أو من مقام النسبة.

لم ننزل ملفا أو نتحقق من جسم أو ترتيب أجزاء. نحتفظ في جواب المساعد بطول الجزء والحجم المعلن أو مجهوليته، ونترك تقرير الاكتمال خارج ما قدمته الورقة.

المصادر ومتابعة القراءة

  1. MDN: Content-Range (يفتح في نافذة جديدة)developer.mozilla.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.