استئناف النقل المتقطع: لا تبدأ من الصفر أبداً
تعلم كيف تعمل عمليات النقل القابلة للاستئناف. لا تفقد التقدم في الرفع الكبير مجدداً مع خدمات تدعم الاستئناف.
عمليات النقل القابلة للاستئناف تقسّم الملف إلى أجزاء وتتتبع الأجزاء المُستلمة بنجاح؛ عند انقطاع الاتصال، يستأنف العميل الإرسال من الجزء التالي غير المُرسَل بدلاً من البدء من البايت صفر. المعيار الويب لهذا هو tus.io (بروتوكول رفع مفتوح قابل للاستئناف)، وتُطبّقه SwissTransfer وHexaTransfer وVimeo وCloudinary وكثير من خدمات النقل الحديثة. أما التنزيلات، فتستخدم طلبات HTTP Range (RFC 7233) التي تُتيح للمتصفحات وأدوات مثل curl وaria2 استئناف التنزيلات المنقطعة. بدون الاستئناف، يعني فشل رفع 9.8 جيجابايت عند 9.5 جيجابايت خسارة كل شيء — مع الاستئناف، تخسر خمسين ميجابايت على الأكثر.
مشكلة الرفع غير القابل للاستئناف
يُرسل الرفع البسيط الملفَ كاملاً في طلب HTTP POST واحد. إذا انقطع الاتصال لأي سبب — انقطاع Wi-Fi، أو انتهاء مهلة VPN، أو سقوط الحاسوب في وضع النوم، أو اضطراب مزود الإنترنت — ينتهي اتصال TCP ويتجاهل الخادم أي بيانات جزئية استقبلها. يُعيد العميل الإرسال من البايت صفر.
لرفع 5 جيجابايت على اتصال بسرعة 50 ميجابت في الثانية، يعني ذلك ضياع 13 دقيقة من العمل. ولرفع 50 جيجابايت، يُضاع أكثر من ساعتين. معدل فشل الرفع غير القابل للاستئناف عبر اتصالات الهاتف المحمول قاسٍ جداً — الرفع الذي يستغرق ثلاثين دقيقة عبر اتصال 4G نادراً ما ينجح من المحاولة الأولى.
كيف تعمل بروتوكولات الاستئناف
تعمل عمليات الرفع القابلة للاستئناف الحديثة بهذه الطريقة تقريباً:
- الإنشاء: يرسل العميل طلب POST إلى الخادم مع الحجم الإجمالي للملف والبيانات الوصفية. يُعيد الخادم عنوان URL فريداً لهذا الرفع تحديداً ويحجز مساحة التخزين.
- التجزئة: يقسّم العميل الملف إلى أجزاء (عادةً من 5 إلى 64 ميجابايت لكل منها).
- الرفع: يُرسل العميل كل جزء كطلب PATCH مع رأسية Content-Range أو Upload-Offset تشير إلى موضع الجزء.
- التأكيد: يكتب الخادم الجزء في التخزين ويُؤكد الإزاحة الجديدة.
- الاستئناف: إذا انقطع الاتصال، يُرسل العميل طلب HEAD إلى عنوان URL للرفع. يُجيب الخادم بالإزاحة الحالية (عدد البايتات المُستلمة). يستأنف العميل من تلك الإزاحة.
- الاكتمال: عند تأكيد الجزء الأخير، ينتهي الرفع.
هذا النموذج تُعرّفه مواصفة tus.io (الإصدار 1.0.0 منتشر على نطاق واسع). من المتغيرات الأخرى: S3 Multipart Upload (للرفع المباشر على S3) وGoogle Cloud Storage Resumable Uploads.
tus.io: المعيار المفتوح
tus ("transloadit upload server") بروتوكول مجاني مفتوح تُديره Transloadit. المواصفة موجودة على tus.io وتُطبّقها:
- مكتبات العميل: tus-js-client (المتصفح + Node.js)، وTUSKit (iOS)، وtus-android-client، وtus-java-client
- تطبيقات الخادم: tusd (خادم مرجعي مكتوب بـ Go)، وtus-node-server، وتكاملات أطر عمل متعددة
- الخدمات التجارية: SwissTransfer وHexaTransfer وVimeo وCloudinary وTransloadit وخوادم Uppy المرافقة
البروتوكول بسيط عن قصد: أربعة أفعال HTTP (POST وHEAD وPATCH وOPTIONS)، وعدد محدود من الرأسيات (Upload-Offset وUpload-Length وTus-Resumable). يُبقي هذا التطبيقات بسيطة وقابلة للتشغيل المتبادل.
قرارات حجم الجزء
يُوازن حجم الجزء بين دقة الاستئناف وتكلفة طلبات HTTP.
| حجم الجزء | تكلفة الاسترداد عند الفشل | التكلفة الإضافية | |---|---|---| | 1 ميجابايت | خسارة ≤ 1 ميجابايت | عالية (طلبات كثيرة) | | 5 ميجابايت | خسارة ≤ 5 ميجابايت | معتدلة | | 16 ميجابايت | خسارة ≤ 16 ميجابايت | منخفضة | | 64 ميجابايت | خسارة ≤ 64 ميجابايت | ضئيلة | | 256 ميجابايت | خسارة ≤ 256 ميجابايت | تكلفة إضافية ضئيلة، لكن مؤلمة عند الفشل |
للاتصالات المستقرة، تُعظّم الأجزاء بين 32 و64 ميجابايت الإنتاجية. للاتصالات عبر الهاتف المحمول أو Wi-Fi غير المستقر، تستعيد الأجزاء بين 2 و5 ميجابايت بشكل أسرع من كل فشل. تختار الخدمات عادةً إعداداً افتراضياً في نطاق 5 إلى 10 ميجابايت كحلٍّ وسط.
ما يُوقف عمليات النقل فعلاً
يُساعد فهم أوضاع الفشل في تقييم مدى متانة تطبيق الاستئناف في الخدمة:
- انقطاع Wi-Fi: التبديل بين الشبكات، أو فقدان الإشارة، أو إعادة تشغيل الراوتر. وهو شائع جداً.
- نوم الحاسوب المحمول: إغلاق غطاء الحاسوب على macOS أو Windows. يُوقف نظام التشغيل الشبكة؛ عند الاستيقاظ، غالباً ما تحتاج الاتصالات إلى إعادة بنائها.
- تعليق التبويب: تُعلّق المتصفحات الحديثة التبويبات الخلفية توفيراً للذاكرة. قد تتوقف عمليات الرفع في التبويبات المعلّقة.
- اضطرابات مزود الإنترنت أو الشبكة الخلفية: تغييرات توجيه لحظية، أو الحاجة إلى إعادة مصافحة TLS.
- إعادة اتصال VPN: يُعيد عملاء VPN التفاوض دورياً؛ يموت اتصال TCP.
- إعادة تشغيل الخادم: تنشر خدمة النقل إصداراً جديداً؛ تفشل الطلبات الجارية.
- سياسات جدار الحماية المؤسسي: تقتل جدران الحماية المؤسسية أحياناً الاتصالات طويلة الأمد عند فحص حركة المرور.
يتعامل التطبيق القوي القابل للاستئناف مع كل هذه الحالات بالآلية نفسها: إعادة الاتصال، وإرسال HEAD للتحقق من الإزاحة، والاستئناف من هناك.
الاستئناف للتنزيلات
تُشغّل طلبات HTTP Range (RFC 7233) التنزيلات القابلة للاستئناف. الخادم الذي يُعلن Accept-Ranges: bytes في رأسيات الاستجابة يدعم طلبات النطاق. يستطيع العملاء حينئذٍ إرسال Range: bytes=1000000- لجلب البايتات بدءاً من الإزاحة 1,000,000 فقط.
تستخدم المتصفحات هذا تلقائياً عند النقر على "استئناف" في مدير التنزيل. يدعم Chrome وFirefox وSafari الاستئناف للتنزيلات من الخوادم المتوافقة. تدعم معظم شبكات CDN (Cloudflare وFastly وCloudFront) طلبات النطاق.
أدوات سطر الأوامر توفر تحكماً أكبر:
curl -C - -O urlيستأنف التنزيل من حيث توقف.wget -c urlيفعل الشيء ذاته.aria2c -c -s 16 urlيُنزّل باستخدام 16 تدفقاً متوازياً لطلبات النطاق لتسريع العملية.
الخدمات التي تدعم الاستئناف
معظم خدمات النقل الحديثة تتعامل مع استئناف الرفع:
| الخدمة | استئناف الرفع | استئناف التنزيل | |---|---|---| | SwissTransfer | نعم (مبني على tus) | نعم (HTTP Ranges) | | HexaTransfer | نعم (مجزأ + متوافق مع tus) | نعم | | WeTransfer | نعم (رفع مجزأ) | نعم | | Dropbox Transfer | نعم | نعم | | Google Drive | نعم (واجهة برمجة رفع قابلة للاستئناف) | نعم | | OneDrive | نعم | نعم | | Box | نعم | نعم |
أحياناً تُعطّل الخطط المجانية الاستئناف لتشجيع الترقية إلى الخطط المدفوعة، لكن هذا نادر في 2026. تختفي الخدمات القديمة التي لا تدعم الاستئناف من قوائم التوصيات لأن المستخدمين يتعبون من الإخفاقات.
ما لا يستأنف تلقائياً
رفعات HTTP POST البسيطة في التطبيقات العادية لا تستأنف. نقلات FTP تتفاوت تاريخياً — بعض العملاء والخوادم تدعم أوامر REST (إعادة التشغيل)، والبعض الآخر لا. مرفقات البريد الإلكتروني لا يمكن استئنافها — إذا فشل إرسال Gmail عند 90%، عليك البدء من جديد.
نقلات Torrent تستأنف بطبيعتها لأن بروتوكول التورنت يتتبع القطع التي جرى التحقق منها. هذا جزء من سبب بقاء BitTorrent مفيداً للتوزيعات الكبيرة جداً حتى بعد تقدم الويب في المقاييس الأخرى.
الاستئناف مع التشفير الشامل
تستلزم عمليات الرفع القابلة للاستئناف مقترنةً بالتشفير من طرف إلى طرف على جانب العميل تجزئةً دقيقة. يُقسَّم الملف إلى أجزاء، يُشفَّر كل جزء بـ AES-256-GCM باستخدام IV (متجه تهيئة) فريد، ثم يُرفع. عند الاستئناف، يجب أن يعرف العميل الأجزاء المكتملة ويتابع من الجزء التالي.
لأن كل جزء مشفر ومُصادق عليه بشكل مستقل (وضع AEAD في GCM)، لا يمكن العبث بعمليات الرفع الجزئية. الخادم الخبيث الذي يُدرج بيانات مزيفة عند إزاحة 5 جيجابايت سيفشل في المصادقة عند فك تشفير المستلم — إذ سيُكشف عدم تطابق وسم GCM.
تستخدم تطبيقات مثل HexaTransfer متجهات تهيئة خاصة بكل جزء مشتقة بشكل حتمي من مفتاح رئيسي وفهرس الجزء، وبذلك لا يحتاج الاستئناف إلى تخزين متجهات التهيئة بشكل منفصل. يُعيد بناء جانب فك التشفير تلك المتجهات من الاشتقاق ذاته.
أفضل الممارسات على جانب العميل
لتعظيم نجاح الاستئناف:
- أبقِ التبويب نشطاً أثناء الرفع. تُوقف المتصفحات التبويبات المعلّقة عمليات الرفع الجارية. التحذير بـ "لا تغلق هذا التبويب" معيار في واجهات خدمات النقل.
- وصّل بكابل Ethernet عند الإمكان. تتسبب انقطاعات Wi-Fi في معظم الإخفاقات.
- عطّل وضع توفير الطاقة أثناء عمليات الرفع الطويلة. macOS:
caffeinate -i. Windows: أداة Awake في Powertoys أو تغيير إعدادات خطة الطاقة. - لا تُبدّل شبكات Wi-Fi أثناء الرفع. يتغير عنوان IP لاتصال TCP فيموت الاتصال.
- اسمح بانتهاء الرفع قبل إغلاق غطاء الحاسوب. أحياناً يحافظ macOS الحديث على عمليات الرفع خلال النوم القصير، لكن الأمر غير موثوق.
التحقق على جانب الخادم
بعض الخدمات تُظهر أشرطة تقدم غير مكتملة لا تعكس حالة الخادم فعلياً. بعد رفع نجا من انقطاع أو انقطاعين، أعِد تحميل الصفحة وتحقق من عمل الرابط — افتحه في وضع التصفح الخفي ونزّل جزءاً صغيراً. إذا نجح الاستئناف، سيُنزَّل الملف الكامل بشكل صحيح.
للحالات التي تستوجب الحذر الشديد، احسب تجزئة SHA-256 على العميل، ارفع الملف، ثم تحقق بمطابقة تجزئة الملف المُنزَّل. الفحص التشفيري لتكامل الملف يستغرق 10 ثوانٍ من المعالج لكل جيجابايت ويمنحك يقيناً تاماً.
الخلاصة
النقل القابل للاستئناف ميزة أساسية في 2026 — أي خدمة تفتقر إليها غير مقبولة للملفات التي تتجاوز بضع مئات من الميجابايتات. ابحث عن التوافق مع tus.io أو سلوك الرفع المجزأ المعادل. تأكد من أن الخدمة التي تختارها تتعامل مع الانقطاعات بسلاسة؛ جرّب بانقطاع شبكي مقصود على ملف صغير قبل الالتزام بنقل كبير.
جرّبها على hexatransfer.com — مجاني، بدون حساب، حتى 10 جيجابايت.
أرسل ملفات كبيرة بأمان مع تشفير من طرف إلى طرف
انقل ملفات حتى 10 جيجابايت مجاناً مع تشفير من طرف إلى طرف. لا حاجة لحساب. يتم تشفير ملفاتك في متصفحك قبل الرفع — لا أحد آخر يستطيع قراءتها.
إرسال ملف