سلسلة الشبكة
في برمجة الحاسوب ، تُعدّ سلسلة الشبكة طريقة تنسيق لسلاسل البايتات تستخدم تدوينًا تصريحيًا للإشارة إلى حجم السلسلة. [ 1 ] [ 2 ]
تقوم سلاسل الشبكة بتخزين طول البايت للبيانات التي تليها، مما يسهل تمرير النصوص وبيانات البايت بشكل لا لبس فيه بين البرامج التي قد تكون حساسة للقيم التي يمكن تفسيرها على أنها محددات أو فواصل (مثل حرف فارغ ).
يتكون التنسيق من طول السلسلة مكتوبًا باستخدام أرقام ASCII، متبوعًا بنقطتين رأسيتين، ثم بيانات البايت، ثم فاصلة. ويعني "الطول" في هذا السياق "عدد الوحدات ذات 8 بت"، لذا إذا كانت السلسلة، على سبيل المثال، مُشفّرة باستخدام UTF-8 ، فقد يكون هذا الطول مطابقًا أو مختلفًا عن عدد الأحرف النصية الموجودة في السلسلة.
على سبيل المثال، يتم ترميز النص "hello world!" على النحو التالي:
< 31 32 3 أ 68 65 6 ج 6 ج 6 ف 20 77 6 ف 72 6 ج 64 21 2 ج >
أي
12 : مرحباً بالعالم !
وسلسلة فارغة كالتالي:
< 30 3a 2c >
أي
0 : ,
تُسهّل الفاصلة قراءة السلاسل النصية المُستخدمة كسجلات متجاورة، وتُوفّر تحققًا مبدئيًا من صحة التحليل. لاحظ أنه بدون الفاصلة، يُصبح التنسيق مُطابقًا لكيفية ترميز Bencode للسلاسل النصية.
يُكتب الطول بدون أصفار بادئة. السلسلة الفارغة هي سلسلة الشبكة الوحيدة التي تبدأ بصفر. يوجد ترميز واحد صحيح لسلسلة الشبكة لأي سلسلة بايتات .
نظرًا لسهولة إنشاء هذا التنسيق وتحليله ، فإنه يسهل دعمه بواسطة البرامج المكتوبة بلغات برمجة مختلفة. عمليًا، تُستخدم سلاسل البيانات الشبكية غالبًا لتبسيط تبادل سلاسل البايت، أو قوائم سلاسل البايت. على سبيل المثال، انظر إلى استخدامها في واجهة البوابة المشتركة البسيطة (SCGI) وبروتوكول قائمة انتظار البريد السريع (QMQP).
تتجنب سلاسل البيانات الشبكية التعقيدات التي تنشأ عند محاولة تضمين بيانات عشوائية في تنسيقات محددة. على سبيل المثال، قد لا يحتوي XML على قيم بايت معينة ويتطلب مزيجًا معقدًا من الهروب والتحديد ، بينما يتضمن إنشاء رسائل MIME متعددة الأجزاء اختيار فاصل يجب ألا يتعارض مع محتوى البيانات.
يمكن تخزين السلاسل النصية بشكل متكرر. ينتج عن ترميز سلسلة من السلاسل سلسلة نصية واحدة. إعادة كتابة مثال "hello world!" أعلاه ليكون سلسلة من سلسلتين نصيتين، مُرمّزتين بدورهما كسلسلة نصية واحدة، يُعطي ما يلي:
17 : 5 : مرحباً ، 6 : العالم !، ،
يُعد تحليل سلسلة نصية متداخلة كهذه مثالًا على الكتابة الديناميكية ، لأن السلسلة النصية المُضمنة ("5:hello,6:world!,") هي سلسلة نصية وتسلسل من السلاسل النصية المتداخلة في آنٍ واحد. ويُحدد نوعها الفعلي بناءً على كيفية تفسير التطبيق لها، وليس بناءً على أي تعريف صريح للنوع مطلوب في مواصفات السلسلة النصية المتداخلة. وبشكل عام، هناك ثلاث طرق يمكن لبرنامج يتوقع سلسلة نصية متداخلة أن يختارها لتفسير محتوياتها:
- كنص قابل للقراءة البشرية دون أي معالجة آلية إضافية
- كبيانات مغلفة في بعض تنسيقات تسلسل البيانات الثابتة المُعدة مسبقًا (مثل المحتويات الثنائية لبنية C أو C++)
- باعتبارها بيانات وصفية وبيانات مغلفة، تستخدم اصطلاح الاتحاد الموسوم لوصف أنواع السلاسل الشبكية المتداخلة، مما يُنشئ تنسيقًا هرميًا لتسلسل البيانات ذاتي الوصف . (" يمكن اعتبار السلاسل الشبكية الموسومة" و Bencode امتدادات للسلاسل الشبكية تدعم تنسيقات هرمية مماثلة ذاتية الوصف [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] ).
لاحظ أنه بما أن السلاسل الشبكية لا تفرض أي قيود على محتويات البيانات التي تخزنها، فلا يمكن تضمين السلاسل الشبكية حرفيًا في معظم التنسيقات المحددة دون إمكانية التداخل مع تحديد التنسيق الحاوي.
في سياق برمجة الشبكات، من المفيد أن يتم إبلاغ البرنامج المستقبل بحجم البيانات التي تليها، حيث يمكنه تخصيص ذاكرة كافية بالضبط، وتجنب الحاجة إلى إعادة التخصيص لاستيعاب المزيد من البيانات، ورفض البيانات التي قد تتجاوز حدود الحجم بشكل استباقي .
انظر أيضاً
ملاحظات ومراجع
- ↑ تم تعريفها في وثيقة من قبل دي جي بيرنشتاين .
- ↑ انظر على سبيل المثال: برمجة الويب باستخدام بايثون، تأليف ستيف هولدن وديفيد إم. بيزلي ، منشورات سامز، 2002، رقم ISBN 0-7357-1090-2، 978-0-7357-1090-0 691 صفحة، الصفحة 202.
- ^ كولان مكماهون. "التشفير" .
- ↑ "مواصفات TNetstrings" . مؤرشفة من الأصل بتاريخ 2024-05-11.
- ↑ tnetstring-rb
- ↑ "tnetstring: مواصفات سلسلة الشبكة الموسومة"
- ↑ "tnetstring: تسلسل البيانات باستخدام سلاسل الشبكة المكتوبة"
روابط خارجية
- تنسيقات تسلسل البيانات
- هياكل بيانات السلاسل
