الخلاصة
- وضعت آلية FTP الأصلية علامات الاستئناف داخل تأطير نمط الكتل أو النمط المضغوط، وربط رد
110 MARKموضع المرسل بحالة محلية ثبتها المستقبل في التخزين. - لم تكن العلامتان رقمين قابلين للتبادل؛ فقد تحمل علامة المستقبل حالة تحويل، مثل تذكّر أن CR قُرئ قبل اكتمال تحويل CRLF إلى LF.
- حوّل RFC 3659 الاستئناف في STREAM إلى عدد الأوكتتات التي يتخطاها النقل التالي مباشرة، لكنه لم يجعل الإزاحة دليلاً على نسخة الملف أو سلامة الجزء المحفوظ أو صحة الناتج النهائي.
كانت علامة المساواة تربط سلطتين محليتين
يفصل FTP بين الكلام والحمولة. تعبر الأوامر والردود ذات الأرقام في اتصال التحكم، بينما تنتقل محتويات الملف في اتصال بيانات آخر. لذلك أمكن للمستقبل أن يرسل وصفاً لنقطة تعافٍ من دون أن يوقف تدفق الملف.
صحح RFC 1123 معنى الرد. كانت ssss سلسلة ظهرت في تدفق البيانات وترمز إلى موضع في نظام ملفات المرسل. وكانت rrrr ترمز إلى الموضع المقابل في نظام المستقبل. ينشئ كل نظام قيمته، وهو نفسه الذي يفسرها عند الاستئناف.
لا تقول علامة المساواة إن السلسلتين متساويتان عددياً. تقول إنهما التقتا عند حد واحد من حدود النقل. يحتفظ برنامج المستخدم بالزوج، ثم يعيد كل قيمة إلى الجهة التي تملك معناها. لا يحتاج إلى معرفة تمثيل القرص في أي من الطرفين.
ولم يكن على المرسل انتظار كل رد 110. يمنع RFC افتراض التزامن؛ يستمر إرسال البيانات وقد يصل دليل آخر نقطة قابلة للاسترجاع بعد أن يكون عداد التقدم قد تجاوزها. التقدم يصف حركة حدثت، أما نقطة الاستئناف فتصف حالة يمكن للطرفين إعادة بنائها.
أعطى نمط الكتل مكاناً صريحاً للعلامة
يفصل RFC 959 بين نوع التمثيل وبنية الملف ونمط الإرسال. في STREAM يدل إغلاق اتصال البيانات عادة على نهاية الملف. لكن الإغلاق وحده لا يبيّن هل انتهى الملف فعلاً أم انقطع الاتصال مبكراً.
أما نمط الكتل فله تأطير FTP خاص. يبدأ كل قالب برأس من ثلاثة أوكتتات: ثمانية بتات للوصف وستة عشر بتاً للعدد. تعني قيمة الوصف 16 أن القالب يحمل علامة استئناف. العلامة سلسلة من محارف قابلة للطباعة بلا مسافة، داخل تمثيل النقل وليست جزءاً من محتوى المستخدم.
لم تكن العلامة إعادة تسمية لأرقام تسلسل TCP ولا محرفاً سحرياً في الملف. كانت معلومة تطبيقية يفهمها عمليتا نقل البيانات. استطاع نمطا الكتل والضغط كذلك تمثيل نهاية الملف من غير إغلاق الاتصال، ولذلك حملا الآلية الأصلية.
يعرف TCP ما وصل في اتصال بعينه، لكنه لا يعرف الموضع الذي يستطيع برنامج المرسل منه إعادة إنتاج تمثيله، ولا الحالة التي يستطيع المستقبل منها استكمال تخزينه. كانت ملكية دليل التعافي عند الطرفين.
لا ينشئ المستقبل رمزه قبل تثبيت ما سبقه
عند رؤية العلامة، يطلب RFC 1123 من المستقبل دفع البيانات السابقة إلى تخزين ثابت، ثم إنشاء rrrr. هذا الترتيب يفرّق بين «قرأت حتى هنا في الذاكرة» و«أستطيع العودة إلى هنا مع بقاء ما قبله».
لا تعني كلمة ثابت ضمان البقاء الأبدي أو النسخ بين مواقع. لم يحدد المعيار وسيط تخزين أو سياسة كوارث. حدّد مسؤولية أضيق: إذا أصدر النظام قيمة محلية، فعليه أن يجعلها صادقة ضمن نموذج التعافي الذي يديره.
ويقترح RFC أن يحفظ User-FTP الأزواج في ملف تحكم: يُنشأ فارغاً مع البداية، وتضاف إليه الأزواج المكتملة، ثم يُحذف بعد النجاح. عند الانهيار تكون آخر علاقة مكتملة مرشحة للاستئناف، لا أعلى رقم ظهر في الواجهة.
الحذف جزء من المعنى. إذا بقيت علامة بعد اكتمال العملية فقد تنتقل إلى ملف جديد يحمل الاسم نفسه. يجب أن يرتبط الرمز بالمصدر والاتجاه والمعلمات والعمر.
قد يحتوي الموضع على نصف تحويل لسطر جديد
يوضح RFC 1123 الحاجة إلى قيم محلية بمثال صغير. يحمل TYPE ASCII التسلسل CRLF على الشبكة، وقد يخزنه المستقبل كـ LF واحد. إذا جاءت العلامة بين CR وLF يكون المستقبل قد رأى CR وأسقطه، لكنه لم ينجز إخراج السطر الجديد.
عندئذ يجب أن ترمز rrrr إلى موضع الملف وإلى حالة «تمت رؤية CR». العودة إلى إزاحة قرص فقط قد تكرر محرفاً أو تحذفه. الموضع القابل للاسترجاع هو موضع مع ذاكرة التحويل.
صُمم FTP لآلات تختلف في ترميز المحارف وطول الكلمة وحجم البايت المنطقي وطريقة التخزين. جعل التمثيل الشبكي العبور ممكناً، ولم يجعل الملفات الداخلية متطابقة. أتاحت الرموز المبهمة دقة محلية بلا ادعاء وجود إحداثي عالمي كاذب.
وكان الإبهام حداً للسلطة، لا نقصاً في الدقة: يفسر المرسل رمزه وحده، ويفسر المستقبل رمزه وحده، ويحفظ البروتوكول علاقة المقابلة فقط.
يغيّر اتجاه النقل طريقة استعمال الزوج
في رفع من المستخدم إلى الخادم يضع المستخدم ssss في التدفق. يثبت الخادم المقدمة، وينشئ rrrr ويرد بالزوج. عند الاستئناف يعيد المستخدم حالته بواسطة ssss ويرسل إلى الخادم REST rrrr.
في التنزيل يضع الخادم علامته، ويثبت العميل نسخته الجزئية ويخزن حالته المحلية. لاحقاً يعيد العميل حالته، ويرجع إلى الخادم العلامة التي أنشأها الخادم.
كما تناول FTP النقل بين خادمين يديره برنامج مستخدم ثالث. يحتفظ المنسق بقيمتين لا يفهمهما، ثم يرسل كل واحدة إلى منشئها. يملك المنسق عهدة العلاقة لا سلطة تفسير نظامي الملفات.
تنجح هذه القاعدة ما دام الزوج لا يختلط بملف أو جلسة أو اتجاه آخر. لا تستطيع السلسلة وحدها حمل كل السياق الذي يمنع سوء الاستعمال.
كان REST يحفظ نية للعمل التالي
لا ينقل REST بيانات. يعني الرد 350 أن الخادم حفظ معلّمة وينتظر أمر نقل لاحقاً. لا يعني أن الملف اكتمل أو أن الجزء الموجود صحيح.
في نموذج RFC 959 يأتي بعده RETR أو STOR، وأحياناً APPE. ويفصل RFC 1123 بين 554 حين لا يمكن تطبيق الموضع، و555 حين لا يتطابق TYPE أو STRU الحالي مع الملف القائم. صلاحية الموضع لا تعوّض صلاحية التمثيل.
تُنشئ الخطوتان حالة معلقة. إذا نجح REST وفشل العميل قبل الأمر التالي، قد ترث عملية أخرى معلّمة قديمة. جعلت مواصفة STREAM اللاحقة تجاور الأمرين شرطاً صريحاً.
اختار REST STREAM عداداً صالحاً للحالة الشائعة
عرّف RFC 3659 الاستئناف في STREAM من غير إدخال علامات في البيانات. صارت معلّمة REST عدداً عشرياً: عدد الأوكتتات التي لن يرسلها النقل التالي مباشرة. يلغي REST 0 التخطي ويطلب الملف كاملاً.
يستخدم المثال TYPE I، ويتحقق من أن ملف الخادم لم يتغير، ثم يرسل REST 802816 ويحصل على 350 ويتبعه فوراً RETR. في تدفق ثنائي تكون الأوكتتات إحداثياً عملياً.
لكن العدد لا يحمل حالة تحويل ولا هوية نسخة ولا دليلاً على أن العميل يحتفظ بالمقدمة الصحيحة. إنه يحدد فقط كم أوكتتاً سيُترك في النقل التالي.
لهذا يجب أن يكون REST آخر أمر قبل RETR أو STOR. إذا تعذر إرسال أمر النقل ينبغي تكرار REST؛ وإذا أريد البدء من الأول ينبغي إرسال REST 0. قد يكون العدد صحيح الصياغة ثم يتضح أنه خارج المجال عند الأمر التالي، حين يصبح الملف والعمل معروفين.
رفع الجزء الباقي يمنح الإزاحة أثراً أكبر
في RETR يملك العميل قرار جمع اللاحقة مع مقدمته. في STOR يكتب الخادم داخل كائن جزئي قائم. يمكن لإزاحة خاطئة أن تمزج نسختين أو تغيّر ملفاً بعيداً تحت اسم مألوف.
يحصر RFC 3659 هذا الاستخدام في إكمال نقل فشل سابقاً. تصبح النتيجة غير محددة إذا لم تقع العلامة عند نهاية البيانات الحالية لدى الخادم، أو إذا لم تمد البيانات الجديدة الوجهة إلى حجمها السابق على الأقل. وإذا سُمح بـ APPE بعد REST فعليه أن يعمل مثل STOR عند الموضع المحدد، لا أن يضيف بلا قيد.
تمنع هذه الحدود تحويل REST إلى محرر بعيد عام، لكنها لا تمنح معاملة ذرية. قد يترك فشل آخر جزءاً جديداً. تبقى تسمية الأجزاء ورؤيتها وصلاحياتها واستبدالها وحذفها سياسة محلية.
معرفة كيفية الكتابة في موضع لا تمنح وحدها حق تعديل الكائن.
يمكن للرقم الصحيح أن يشير إلى نسخة خاطئة
يوصي RFC 3659 بحفظ وقت تعديل الملف قبل RETR الأول ومقارنته قبل الاستئناف. وفي STOR يمكن مقارنة المصدر الحالي بالجزء الموجود. وقد تقدم حقائق MLST إشارة أغنى إلى التغير.
لا يحول النص الوقت إلى بصمة. قد تختلف الساعات، وقد يتغير الوقت من دون اختلاف نهائي في المحتوى، وقد يتغير المحتوى ثم يعود. الوقت إشارة لإبطال نقطة قديمة، لا برهان هوية.
كذلك تصف SIZE حجم النقل تحت TYPE الحالي. يمكن لملفين مختلفين أن يملكا الحجم نفسه. بلوغ الطول المتوقع لا يثبت أن المقدمة واللاحقة من النسخة ذاتها.
حين تكون السلامة مهمة، ينتهي الاستئناف بفحص الكائن كله. تسلسل ردود ناجح يثبت أن الطرفين اتبعا الحوار، لا أن البايتات المركبة متساوية مع المصدر المقصود.
تعلن FEAT لغة يفهمها الخادم
يعلن الخادم الداعم لسلوك RFC 3659 السلسلة الدقيقة REST STREAM في FEAT. يستطيع العميل التمييز بين الإزاحة العشرية وبين دعم علامات محصور في نمطي الكتل والضغط.
يحفظ سجل IANA لأوامر FTP وامتداداته REST الأساسي وREST+ المعدل لـ STREAM كسجلين. يصف السجل معياراً وتصنيف امتثال، ولا يقيس الانتشار الحالي ولا يراجع تطبيقاً بعينه.
تجيب FEAT عن قدرة معلنة على فهم الصياغة. لا تجيب عن ثبات الملف أو صحة الجزء أو حق الحساب في الكتابة أو سلامة الناتج.
بقيت سلطة نقطة الاستئناف أدنى من سلطة الملف
احتفظ التصميم القديم بمعنى محلي أكثر، فاحتاج إلى تأطير وعلامات وردود غير متزامنة وملف تحكم. اختار تصميم STREAM إحداثياً شائعاً وأبسط، ونقل عبء إثبات النسخة وفحص الناتج إلى الأدلة المحيطة.
في الحالتين لا تصادق نقطة الاستئناف على المرسل، ولا تشرح المحتوى، ولا تسمح بتنفيذه. إنها إذن محدود لمحاولة المتابعة، ويجب أن تنتهي صلاحيته عند تغير الكائن أو التمثيل أو السلطة.
يوفر الاستئناف إعادة العمل، لكنه يخلق حالة وسيطة تحتاج إلى مالك. إذا عاشت الإزاحة أطول من النسخة التي وصفتها، تتحول الراحة إلى جمع صامت بين زمنين.
المصادر وحدود الدليل
- https://www.rfc-editor.org/rfc/rfc959.html
- https://www.rfc-editor.org/rfc/rfc1123.html
- https://www.rfc-editor.org/rfc/rfc3659.html
- https://www.iana.org/assignments/ftp-commands-extensions/ftp-commands-extensions.xhtml
تثبت المصادر المغلقة الآليات المعيارية وتطورها، ولا تقيس الدعم أو الاستخدام المعاصر أو سلامة نقل فعلي. لذلك لا يجعل سجل IANA أو إعلان FEAT استئنافاً بعينه آمناً.
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
