ZMODEM

ZMODEM هو بروتوكول لنقل الملفات المباشر، طوّره تشاك فورسبيرغ عام 1986، ضمن مشروع ممول من شركة Telenet بهدف تحسين نقل الملفات على شبكتها X.25 . إضافةً إلى الأداء المحسّن بشكل ملحوظ مقارنةً بالبروتوكولات القديمة، وفّر ZMODEM إمكانية إعادة تشغيل عمليات النقل، والتشغيل التلقائي من قِبل المُرسِل، ورمز CRC موسّع 32 بت ، ودعم اقتباس أحرف التحكم لنقل الملفات النظيفة 8 بت ، مما يسمح باستخدامه على الشبكات التي لا تسمح بمرور أحرف التحكم.

على عكس معظم بروتوكولات نقل البيانات المصممة لأنظمة لوحات الإعلانات الإلكترونية (BBSs)، لم يكن بروتوكول ZMODEM مبنيًا بشكل مباشر على بروتوكول XMODEM الأساسي، ولم يكن متوافقًا معه . وقد طُوّرت العديد من نسخ XMODEM لمعالجة واحد أو أكثر من أوجه قصوره، وظلت معظمها متوافقة مع الإصدارات السابقة ، وتُكمل عمليات النقل بنجاح مع تطبيقات XMODEM "الكلاسيكية". وتشمل هذه القائمة بروتوكول YMODEM الخاص بفورسبيرغ .

تجنّب بروتوكول ZMODEM التوافق مع الإصدارات السابقة، مُفضّلاً تطوير بروتوكول مُحسّن جذرياً. وقد أدّى أداءً لا يقلّ عن أداء أيّ من أنواع XMODEM عالية الأداء، بل وتجاوز ذلك عبر روابط لم تكن تعمل سابقاً على الإطلاق، مثل X.25، أو كانت ذات أداء ضعيف، مثل مودمات Telebit ، كما تضمّن ميزات مفيدة نادرة في البروتوكولات الأخرى. واكتسب ZMODEM شعبية واسعة على أنظمة لوحات الإعلانات الإلكترونية (BBS) في أوائل التسعينيات، ليصبح معياراً واسع الانتشار كما كان XMODEM قبله.

التحسينات

الأنظمة القديمة

بشكل عام، تقوم بروتوكولات نقل الملفات القديمة بتقسيم الملف إلى سلسلة من الحزم ، ثم ترسلها واحدة تلو الأخرى إلى المُستقبِل. الجزء الرئيسي من الحزمة، وهو الحمولة ، يُمثل عددًا مُحددًا من البايتات من الملف المُرسَل. بعد الحمولة، يأتي فحص المجموع الاختباري أو فحص التكرار الدوري (CRC) الذي يُستخدم لتحديد ما إذا كانت الحمولة قد استُلمت بشكل صحيح. إذا استُلمت الحزمة بشكل صحيح، يُرسل المُستقبِل رسالة تأكيد (ACK) ، ثم يبدأ المُرسِل بإرسال الحزمة التالية.

يُدخل نظام الهاتف تأخيرًا بسيطًا يُعرف بزمن الاستجابة ، وهو ما يُعيق هذه العملية. فحتى لو أرسل المُستقبِل إشعار الاستلام (ACK) فورًا، فإن التأخير في خطوط الهاتف يعني وجود فترة زمنية قبل أن يستلمه المُرسِل ويرسل الحزمة التالية. ومع ازدياد سرعات المودم ، يُمثل هذا التأخير عددًا متزايدًا من الحزم التي كان من الممكن إرسالها خلال فترة التأخير، مما يُقلل من كفاءة القناة .

استخدم XMODEM حمولات بيانات بحجم 128 بايت، مع رأسية من ثلاثة بايتات ومجموع اختباري من بايت واحد، ليصبح المجموع الكلي 132 بايت لكل حزمة. في عصر  مودمات 300 بت/ثانية، كانت الحزمة تستغرق حوالي أربع ثوانٍ للإرسال، وكانت زمن الاستجابة النموذجي في حدود عُشر الثانية ، لذا لم يكن تأثير ذلك على الأداء كبيرًا. مع ازدياد السرعات ، تتفاقم المشكلة؛ فعند سرعة 2400 بت/ثانية ،  تستغرق الحزمة حوالي 0.55  ثانية للإرسال، أي ما يُهدر حوالي خُمس النطاق الترددي المتاح في انتظار إشعارات الاستلام . أما عند سرعة 9600 بت/ثانية ، فتستغرق الحزمة 0.13 ثانية فقط للإرسال، أي ما يُهدر حوالي نصف النطاق الترددي.  

نظام التشغيل ويندوز والبث المباشر

أحد حلول هذه المشكلة هو استخدام نافذة منزلقة . تعالج هذه البروتوكولات زمن الاستجابة بالسماح للمرسل بمواصلة إرسال عدد من الحزم دون انتظار إشعار استلام . يُعرف عدد الحزم المسموح بمواصلة إرسالها بـ "النافذة"، والذي كان يتراوح عادةً بين حزمتين وست عشرة حزمة في معظم التطبيقات. ظهرت عدة إصدارات جديدة من XMODEM تدعم النافذة المنزلقة في أوائل ثمانينيات القرن الماضي.

تُعدّ النوافذ المنزلقة مفيدةً للتعامل مع زمن استجابة يصل إلى عدة أطوال حزم بيانات، كما هو الحال مع مودم XMODEM على خطوط الهاتف التقليدية. مع ذلك، لا تكفي هذه الطريقة لمعالجة زمن الاستجابة الأطول في المكالمات الهاتفية الدولية، أو الاتصالات عبر الأقمار الصناعية، أو خدمات X.25 مثل PC Pursuit ، حيث قد يصل زمن الاستجابة إلى ثانية أو أكثر. في حالات أخرى، عندما تكون قناة الإرسال العكسي أبطأ بكثير من قناة الإرسال، كما هو الحال مع مودمات Telebit أو USRobotics ، قد يؤدي حتى العدد القليل من إشعارات التأكيد (ACK ) إلى إغراق قناة الإرسال العكسي وتوقف عملية النقل مؤقتًا.

عالج بروتوكول ZMODEM هذه المشاكل بإلغاء الحاجة إلى رسائل التأكيد (ACK ) تمامًا، مما سمح للمرسل بإرسال البيانات باستمرار طالما لم يكتشف المُستقبِل أي أخطاء. وكان لا بد من إرسال رسائل الرفض (NAK ) فقط في حال وجود مشكلة. ونظرًا لاستخدام ZMODEM غالبًا على روابط مزودة بخاصية تصحيح الأخطاء المدمجة ، مثل X.25، فإن المُستقبِل غالبًا ما كان يمتنع عن إرسال أي رسالة رد إلى المرسل. ونتيجة لذلك، كان النظام يرسل الملف بأكمله في تدفق مستمر، ولذلك كان ZMODEM يُطلق على نفسه اسم "بروتوكول البث المباشر".

لقد تحسّن أداء بروتوكول ZMODEM بشكل ملحوظ مقارنةً بالبروتوكولات الشائعة السابقة، لدرجة أنه حلّ محلّ بروتوكولات خاصة مثل YMODEM-g ، التي لم تتضمن أي تصحيح للأخطاء، واعتمدت بدلاً من ذلك على روابط خالية من الأخطاء تُحافظ عليها أجهزة المودم. ورغم أن YMODEM-g كان أسرع (وبالتالي شائعًا بين المستخدمين المتقدمين )، إلا أن افتقاره لميزات أخرى، مثل إمكانية إعادة تشغيل عمليات النقل، جعله أقل جاذبية.

إعادة تشغيل

كان بروتوكول XMODEM، ومعظم البروتوكولات المبنية عليه، يُدير ترتيب الحزم عن طريق إضافة رقم حزمة من 1 إلى 255 قبل كل حزمة. وكانت الإصدارات المُجزأة تستخدم هذا الرقم لتحديد الحزم التي تم استلامها بنجاح، أو لتحديد الحزم التي لم يتم استلامها. وبما أن  طول الحزم كان 128 بايت، فإن هذا يعني أن الحد الأقصى لحجم البيانات التي يمكن نقلها قبل إعادة ترتيب أرقام الحزم هو 32  كيلوبايت.

استبدلت تقنية ZMODEM رقم الحزمة بالموقع الفعلي في الملف، والذي يُشار إليه برقم مكون من 32 بت. سمح هذا بإرسال رسائل NAK لإعادة عملية النقل إلى نقطة الفشل، بغض النظر عن طول الملف. استُخدمت هذه الميزة نفسها لإعادة بدء عمليات النقل في حال فشلها أو انقطاعها عمدًا. في هذه الحالة، يتحقق المُستقبِل من كمية البيانات التي تم استلامها سابقًا، ثم يُرسل رسالة NAK مع ذلك الموقع، مما يُحفز المُرسِل تلقائيًا على البدء من تلك النقطة.

التشغيل التلقائي

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

الاختلافات

ظهرت عدة نسخ معدلة من ZMODEM. وكانت أبرز تطبيقات ZMODEM من شركة Omen Technology التابعة لتشاك فورسبيرغ. وشملت هذه التطبيقات DSZ (DOS Send ZMODEM)، وGSZ (Graphical Send ZMODEM)، و(l)rzsz الشائع الاستخدام في أنظمة يونكس .

كان ZedZap نسخة معدلة من ZMODEM بكتل بيانات بحجم 8 كيلوبايت لتحسين الأداء على أجهزة المودم عالية السرعة. وقد طورت شركة ADONTEC في عامي 2002 و2007 نسخة متوافقة مع الإصدارات السابقة من ZMODEM بكتل بيانات بحجم 32 كيلوبايت و64 كيلوبايت على التوالي، وذلك لزيادة الأداء على الاتصالات عالية السرعة والخالية من الأخطاء مثل شبكات ISDN أو TCP/IP .

قام فورسبيرغ نفسه بتجميع عدد من التحسينات في بروتوكول ZMODEM-90. أولها تقنية MobyTurbo، التي أزالت اقتباسات التحكم لتحسين الأداء بنسبة 15% تقريبًا. حتى على الشبكات التي تستهلك أحرف التحكم، يمكن تخصيص ZMODEM-90 لاقتباس الأحرف التي تستهلكها الشبكة فعليًا فقط، بدلًا من اقتباس جميع الأحرف الممكنة. يسمح تحسين مماثل لـ ZMODEM-90 بالعمل على شبكات 7 بت، بينما كانت البروتوكولات السابقة (باستثناء Kermit ) تتطلب جميعها 8 بت بدرجات متفاوتة. أخيرًا، يتضمن ZMODEM-90 نظام ضغط أساسي لترميز طول التشغيل لتحسين أداء الملفات غير المضغوطة.

في الوقت الراهن، ابتكر مطورو Synchronet تطبيقًا حديثًا لبروتوكول X/Y/ZMODEM يُسمى SEXYZ، وهو مبنيٌّ بشكلٍ جزئي على حزمة zmtx/zmrx، ويعمل بشكلٍ أصلي على أنظمة ويندوز وأنظمة يونكس المختلفة، ويدعم أسماء الملفات الطويلة ونقل البيانات بشكلٍ أسرع وأكثر موثوقية. كما تم دمج تطبيق ZMODEM من SEXYZ في مشروع SyncTERM. جميع مشاريع Synchronet وSEXYZ وSyncTERM مفتوحة المصدر ومتعددة المنصات ، وتركز على أنظمة لوحات الإعلانات الإلكترونية (BBS).

كان LeechZmodem نوعًا خبيثًا من ZMODEM (من بين مشتقات XMODEM و YMODEM المماثلة) التي تحايلت على حصص تنزيل BBS .

القيود

  • تتضمن بعض حزم ZMODEM (مثل ZACK وZRPOS) إزاحة بايت داخل الملف المنقول كعدد صحيح غير مُوقّع من 32 بت. هذا التصميم يحد من جدوى ZMODEM لنقل الملفات التي يقل حجمها عن 4 جيجابايت فقط بشكل موثوق.
  • على الرغم من أن البروتوكول يسمح بذلك، إلا أن تطبيق (l)rzsz المرجعي لا يدعم ترميز الأحرف غير التحكمية (مثل '~') التي تستخدمها برامج اتصال TCP/IP مثل telnet و ssh كأحرف "هروب طرفي" من جانب العميل. لذا، يجب على المستخدمين تعطيل ميزة الهروب الطرفي لضمان نقل البيانات بشكل موثوق عبر هذه الروابط، على سبيل المثال: ssh -e none user@hostname.

مراجع

  • تطور واختيار بروتوكولات نقل الملفات