
مكدس الشبكات القائم على التشفير لبناء شبكات لا يمكن إيقافها باستخدام LoRa وراديو الحزمة (Packet Radio) وWiFi وكل ما بين ذلك.

هذا المستودع هو نسخة مرآة عامة. كل التطوير يجري في مكان آخر.
لفهم الفلسفة الأساسية وأهداف هذا النظام، اقرأ Zen of Reticulum.
Reticulum هو مكدس شبكات قائم على التشفير لبناء شبكات محلية وواسعة النطاق باستخدام أجهزة متاحة بسهولة. يمكن أن يعمل حتى مع زمن انتقال مرتفع جداً وعرض نطاق ترددي منخفض للغاية. يتيح لك Reticulum بناء شبكات واسعة النطاق بأدوات جاهزة، ويوفر تشفيراً من طرف إلى طرف واتصالاً، وإخفاء هوية البادئ، ونقلاً متعدد القفزات مدعوماً بالتشفير ذاتي التكوين، وعنونة فعالة، وإيصالات استلام غير قابلة للتزوير، وغير ذلك.
رؤية Reticulum هي السماح لأي شخص بأن يكون مشغل شبكته الخاصة، وجعل تغطية مساحات شاسعة بشبكات مستقلة ومترابطة ومستقلة أمراً رخيصاً وسهلاً. Reticulum ليس شبكة واحدة. إنه أداة لبناء آلاف الشبكات. شبكات بدون مفاتيح إيقاف أو مراقبة أو رقابة أو تحكم. شبكات يمكنها التفاعل بحرية، والارتباط والانفصال عن بعضها البعض، ولا تتطلب إشرافاً مركزياً. شبكات للبشر. شبكات من أجل الناس.
Reticulum هو مكدس شبكات كامل، ولا يعتمد على IP أو طبقات أعلى، لكن من الممكن استخدام IP كحامل أساسي لـ Reticulum. لذلك من السهل توجيه Reticulum عبر الإنترنت أو شبكات IP الخاصة.
عدم وجود تبعيات على مكدسات الشبكات التقليدية يحرر الموارد التي استُخدمت لتنفيذ مكدس شبكات مبني مباشرة على مبادئ التشفير، مما يسمح بالمرونة والوظائف المستقرة، حتى في الشبكات المفتوحة وغير الموثوقة.
لا حاجة لوحدات kernel أو برامج تشغيل. يعمل Reticulum بالكامل في مساحة المستخدم، ويمكن تشغيله على أي نظام تقريباً يدعم Python 3.
التوثيق الكامل لـ Reticulum متاح على markqvist.github.io/Reticulum/manual/.
يمكنك أيضاً تنزيل دليل Reticulum بصيغة PDF أو كتاب إلكتروني بصيغة EPUB.
لمزيد من المعلومات، راجع reticulum.network وقسم الأسئلة الشائعة في الويكي.
كود Python في هذا المستودع هو التنفيذ المرجعي لـ Reticulum. يتم تعريف بروتوكول Reticulum بشكل كامل وحاسم بواسطة هذا التنفيذ المرجعي ودليله المرتبط. يتم صيانته بواسطة Mark Qvist، المُعرّف بهوية Reticulum <bc7291552be7a58f361522990465165c>.
لا توجد حالياً، ولن توجد أبداً، مشتقات مواصفات بروتوكول من الدرجة الثانية. لا يمكنك الحصول على مواصفات أفضل من تلك القابلة للتنفيذ والوظيفية والقابلة للاختبار والمنشورة والتشغيل على مدار الساعة عبر الكوكب.
لا يوجد، ولن يكون هناك أبداً، "مواصفات رسمية" منفصلة أو "RFC" أو أي شيء مشابه لـ Reticulum:
التنفيذ المرجعي هو المواصفات النهائية والموثوقة.
يتم تعريف التوافق مع بروتوكول Reticulum على أنه امتلاك قابلية تشغيل متبادل كاملة، وتكافؤ وظيفي كافٍ مع هذا التنفيذ المرجعي. أي تطبيق بروتوكول محدد يحقق ذلك هو Reticulum. أي لا يحققه ليس Reticulum.
التنفيذ المرجعي مرخص بموجب ترخيص Reticulum.
تم تخصيص بروتوكول Reticulum للملكية العامة في عام 2016.
إذا كنت ترغب في الحصول على فكرة سريعة عما يمكن أن يفعله Reticulum، ألق نظرة على قسم البرامج التي تستخدم Reticulum في الدليل، أو الموارد التالية:
rnphone، الذي يمكن استخدامه لبناء هواتف أجهزة.عبر أي وسيلة تقريباً يمكنها دعم قناة نصف مزدوجة على الأقل بمعدل نقل أكبر من 5 بتات في الثانية، و MTU يبلغ 500 بايت. أجهزة الراديو البيانات، المودمات، أجهزة راديو LoRa، الخطوط التسلسلية، أجهزة TNC AX.25، الأنماط الرقمية للراديو الهاوي، أجهزة WiFi و Ethernet، الوصلات الضوئية في الفضاء الحر، والأنظمة المشابهة هي جميعها أمثلة على أنواع الأجهزة المادية التي يمكن لـ Reticulum استخدامها.
تم تصميم واجهة مفتوحة المصدر قائمة على LoRa تسمى RNode خصيصاً للاستخدام مع Reticulum. من الممكن بناؤها بنفسك، أو يمكن شراؤها كجهاز إرسال واستقبال كامل يحتاج فقط إلى اتصال USB بالمضيف.
يمكن أيضاً تغليف Reticulum عبر شبكات IP الحالية، لذلك لا شيء يمنعك من استخدامه عبر Ethernet السلكي، أو شبكة WiFi المحلية الخاصة بك أو الإنترنت، حيث سيعمل بنفس الجودة. في الواقع، إحدى نقاط القوة في Reticulum هي مدى سهولة السماح لك بربط وسائط مختلفة في شبكة متشابكة ذاتية التكوين ومرنة ومشفرة، باستخدام أي مزيج متاح من البنية التحتية المتاحة.
كمثال، من الممكن إعداد Raspberry Pi متصل بكل من راديو LoRa وجهاز TNC راديو حزمة وشبكة WiFi. بمجرد تكوين الواجهات، سيتولى Reticulum الباقي، وأي جهاز على شبكة WiFi يمكنه التواصل مع العقد على جانبي راديو LoRa وراديو الحزمة من الشبكة، والعكس صحيح.
أفضل طريقة للبدء مع مكدس شبكات Reticulum تعتمد على ما تريد فعله. للحصول على التفاصيل الكاملة والأمثلة، ألق نظرة على قسم البدء السريع في دليل Reticulum.
لتثبيت Reticulum والأدوات المساعدة ذات الصلة على نظامك ببساطة، أسهل طريقة هي عبر pip.
يمكنك بعد ذلك تشغيل أي برنامج يستخدم Reticulum، أو بدء Reticulum كخدمة نظام باستخدام
أداة rnsd.```bash
pip install rns
إذا كنت تستخدم نظام تشغيل يمنع تثبيت الحزم العادية للمستخدم عبر `pip`،
يمكنك إعادة `pip` إلى سلوكه الطبيعي عن طريق تعديل ملف `~/.config/pip/pip.conf`،
وإضافة التوجيه التالي في قسم `[global]`:```text
[global]
break-system-packages = true
بدلاً من ذلك، يمكنك استخدام أداة pipx لتثبيت Reticulum في بيئة معزولة:```bash
pipx install rns
عند بدء تشغيل Reticulum لأول مرة، سيقوم بإنشاء ملف تكوين افتراضي، مما يوفر اتصالاً أساسياً بأقران Reticulum الآخرين الذين قد يكونون قابلين للوصول محلياً. يحتوي ملف التكوين الافتراضي على بضعة أمثلة ومراجع لإنشاء تكوين أكثر تعقيداً.
إذا كان لديك إصدار قديم من `pip` على نظامك، فقد تحتاج إلى ترقيته أولاً باستخدام `pip install pip --upgrade`. إذا لم يكن `pip` مثبتاً لديك بالفعل، فيمكنك تثبيته باستخدام مدير الحزم في نظامك باستخدام `sudo apt install python3-pip` أو ما شابه ذلك.
للحصول على أمثلة أكثر تفصيلاً حول كيفية توسيع نطاق الاتصال عبر العديد من الوسائط مثل الراديو الحزمي أو LoRa، أو المنافذ التسلسلية، أو عبر روابط IP السريعة والإنترنت باستخدام واجهات UDP وTCP، ألق نظرة على قسم [الواجهات المدعومة](https://markqvist.github.io/Reticulum/manual/interfaces.html) من [دليل Reticulum](https://markqvist.github.io/Reticulum/manual/).
## الأدوات المضمنة
يتضمن Reticulum مجموعة من الأدوات المفيدة لإدارة شبكاتك، وعرض الحالة والمعلومات، والمهام الأخرى. يمكنك قراءة المزيد عن هذه البرامج في قسم [برامج الأدوات المضمنة](https://markqvist.github.io/Reticulum/manual/using.html#included-utility-programs) من [دليل Reticulum](https://markqvist.github.io/Reticulum/manual/).
- البرنامج الخفي للنظام `rnsd` لتشغيل Reticulum كخدمة متاحة دائماً
- أداة حالة الواجهة المسماة `rnstatus`، التي تعرض معلومات حول الواجهات
- أداة البحث عن المسار وإدارته `rnpath` التي تتيح لك عرض جداول المسار وتعديلها
- أداة تشخيص مسماة `rnprobe` للتحقق من الاتصال بالوجهات
- برنامج نقل ملفات بسيط مسماً `rncp` يسهل نقل الملفات بين الأنظمة
- أداة إدارة الهوية والتشفير `rnid` تتيح لك إدارة الهويات وتشفير/فك تشفير الملفات
- يتيح لك برنامج `rnsh` إنشاء جلسة شل تفاعلية كاملة مع الأنظمة البعيدة
- برنامج تنفيذ الأوامر عن بعد `rnx` يتيح لك تشغيل أوامر وبرامج بسيطة واسترداد المخرجات من الأنظمة البعيدة
- يوفر برنامج `rngit` عقدة Git كاملة متعددة المستودعات لخدمة المستودعات عبر Reticulum
- يسمح لك المساعد المضمن `git-remote-rns` بالتفاعل مع مستودعات Git عبر Reticulum
جميع الأدوات، بما في ذلك `rnx` و`rncp`، تعمل بشكل موثوق وجيد حتى عبر روابط النطاق الترددي المنخفض جداً مثل LoRa أو الراديو الحزمي. للحصول على شل بعيد كامل الميزات عبر Reticulum، ألق نظرة أيضاً على برنامج [rnsh](https://github.com/acehoss/rnsh).
## أنواع الواجهات والأجهزة المدعومة
ينفذ Reticulum مجموعة من أنواع الواجهات المعممة التي تغطي معظم أجهزة الاتصالات التي يمكن لـ Reticulum العمل عليها. إذا كان جهازك غير مدعوم، فمن [البسيط تنفيذ وحدة واجهة مخصصة](https://markqvist.github.io/Reticulum/manual/interfaces.html#custom-interfaces).
يتم قبول طلبات السحب للواجهات المخصصة بامتنان، شريطة أن تكون مفيدة بشكل عام ومختبرة جيداً في الاستخدام الواقعي.
حالياً، يتم دعم الواجهات المضمنة التالية:
- أي جهاز إيثرنت
- LoRa باستخدام [RNode](https://unsigned.io/rnode/)
- أجهزة TNC للراديو الحزمي (مع أو بدون AX.25)
- أجهزة المودم المتوافقة مع KISS (برمجية ومادية)
- أي جهاز مزود بمنفذ تسلسلي
- TCP عبر شبكات IP
- UDP عبر شبكات IP
- البرامج الخارجية عبر stdio أو الأنابيب
- الأجهزة المخصصة عبر stdio أو الأنابيب
## الأداء
يستهدف Reticulum نطاق أداء قابل للاستخدام *واسع جداً*، لكنه يعطي الأولوية للأداء على الوسائط منخفضة النطاق الترددي. الهدف هو توفير نطاق أداء ديناميكي من 250 بت في الثانية إلى 1 جيجابت في الثانية على الأجهزة العادية.
حالياً، نطاق الأداء القابل للاستخدام هو تقريباً من 150 بت في الثانية إلى 500 ميجابت في الثانية، مع عدم إشباع الوسائط المادية الأسرع من ذلك. الأداء الذي يتجاوز المستوى الحالي مخصص للترقيات المستقبلية، لكنه ليس ذا أولوية عالية في هذه المرحلة الزمنية.
## الحالة الحالية
جميع ميزات البروتوكول الأساسية منفذة وتعمل، لكن الإضافات ربما ستحدث مع استكشاف وفهم الاستخدام الواقعي. يمكن اعتبار API وشكل الأسلاك مستقرين.
## التبعيات
يتطلب تثبيت الحزمة الافتراضية `rns` تبعيتين خارجيتين فقط، مدرجتين أدناه. تحتوي جميع الأنظمة والتوزيعات تقريباً على حزم متاحة بسهولة لهذه التبعيات، وعند تثبيت حزمة `rns` باستخدام `pip`، سيتم تنزيلها وتثبيتها أيضاً.
- [PyCA/cryptography](https://github.com/pyca/cryptography)
- [pyserial](https://github.com/pyserial/pyserial)
على الأنظمة غير المألوفة، وفي بعض الحالات النادرة، قد لا يكون من الممكن تثبيت أو حتى تجميع واحدة أو أكثر من الوحدات المذكورة أعلاه. في مثل هذه الحالات، يمكنك استخدام حزمة `rnspure` بدلاً من ذلك، والتي لا تتطلب أي تبعيات خارجية للتثبيت. يرجى ملاحظة أن محتويات حزمتي `rns` و`rnspure` *متطابقة*. الاختلاف الوحيد هو أن حزمة `rnspure` لا تدرج أي تبعيات مطلوبة للتثبيت.
بغض النظر عن كيفية تثبيت Reticulum وتشغيله، فإنه سيحمل التبعيات الخارجية فقط إذا كانت *مطلوبة* و*متوفرة*. على سبيل المثال، إذا كنت ترغب في استخدام Reticulum على نظام لا يمكنه دعم [pyserial](https://github.com/pyserial/pyserial)، فمن الممكن تماماً القيام بذلك باستخدام حزمة `rnspure`، لكن Reticulum لن يكون قادراً على استخدام الواجهات التسلسلية. سيستمر تحميل جميع الوحدات الأخرى المتاحة عند الحاجة.
**يرجى الملاحظة!** إذا كنت تستخدم حزمة `rnspure` لتشغيل Reticulum على أنظمة لا تدعم [PyCA/cryptography](https://github.com/pyca/cryptography)، فمن المهم أن تقرأ وتفهم قسم [البدائل الأولية للتشفير](#cryptographic-primitives) من هذا المستند.
## بدء الاتصال
Reticulum ليس خدمة تشترك فيها، ولا هو شبكة عالمية واحدة "تنضم" إليها. يوفر Reticulum وظائف لاكتشاف الواجهات العامة المتاحة عبر الشبكة نفسها، وقدم المجتمع الأوسع أدلة متنوعة لنقاط الدخول المتاحة للجمهور لبدء الاتصال.
لمعرفة كيفية إنشاء اتصال أولي عبر Reticulum، اقرأ قسم [بدء الاتصال](https://reticulum.network/manual/gettingstartedfast.html#bootstrapping-connectivity) من الدليل.
إذا كانت لديك فكرة عامة عن كيفية عمل ذلك، فيمكنك استخدام مواقع يديرها المجتمع مثل [directory.rns.recipes](https://directory.rns.recipes/) و [rmap.world](https://rmap.world) للعثور على تعريفات واجهة للاتصال الأولي بالعمود الفقري الموزع عالمياً لـ Reticulum.
## شبكة الاختبار العامة
***هام!** تاريخياً، تم توفير شبكة اختبار موجهة للمطورين من قبل مشروع Reticulum نفسه. نظراً لنمو عدد عقد Reticulum العالمية ونقاط الدخول إلى كمية كبيرة، تم إيقاف تشغيل شبكة الاختبار العامة هذه، بما في ذلك نقطة دخول أمستردام التجريبية. إذا كان لا يزال لديك مثيلات تعتمد على نقطة الدخول هذه للاتصال، فانتقل إلى استخدام العمود الفقري الموزع بدلاً من ذلك. يتضمن Reticulum الآن نظاماً كاملاً لاكتشاف الواجهة على الشبكة وبدء الاتصال. اقرأ قسم [بدء الاتصال](https://reticulum.network/manual/gettingstartedfast.html#bootstrapping-connectivity) من الدليل للحصول على إرشادات.*
## ادعم Reticulum
لجعل هذا ممكناً، أحتاج إلى مساعدتك. يرجى دعم التطوير المستمر لأنظمة الاتصالات المفتوحة والحرة والخاصة عن طريق التبرع عبر إحدى القنوات التالية:
- Monero: ```
84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w
Ethereum ``` 0x91C421DdfB8a30a49A71d63447ddb54cEBe3465E
Liberapay: https://liberapay.com/Reticulum/
- Ko-Fi: https://ko-fi.com/markqvist
## الأوليات التشفيرية
يستخدم Reticulum مجموعة بسيطة من الأوليات التشفيرية الفعالة والقوية والمختبرة جيدًا، مع تطبيقات متاحة على نطاق واسع يمكن استخدامها على كل من وحدات المعالجة المركزية العامة والمتحكمات الدقيقة.
أحد الاعتبارات الأساسية لاختيار هذه المجموعة المعينة من الأوليات هو أنه يمكن تنفيذها *بأمان* مع عدد قليل نسبيًا من المزالق، على جميع منصات الحوسبة الحالية عمليًا.
الأوليات المدرجة هنا **معتمدة**. أي شيء يدعي أنه Reticulum، لكنه لا يستخدم هذه الأوليات الدقيقة **ليس** Reticulum، ومن المحتمل أن يكون نسخة مضعفة أو مخترقة عمدًا. الأوليات المستخدمة هي:
- مفاتيح هوية Reticulum هي مجموعات مفاتيح Curve25519 بطول 512 بت
- مفتاح Ed25519 بطول 256 بت للتوقيعات
- مفتاح X22519 بطول 256 بت لتبادل المفاتيح ECDH
- HKDF لاشتقاق المفاتيح
- الرموز المشفرة مبنية على [مواصفات Fernet](https://github.com/fernet/spec/)
- مفاتيح مؤقتة مشتقة من تبادل مفاتيح ECDH على Curve25519
- HMAC باستخدام SHA256 لمصادقة الرسائل
- يجب إنشاء IVs من خلال `os.urandom()` أو أفضل
- AES-256 في وضع CBC مع حشو PKCS7
- لا توجد حقول وصفية لنسخة Fernet وطابع زمني
- SHA-256
- SHA-512
في تكوين التثبيت الافتراضي، يتم توفير الأوليات `X25519` و `Ed25519` و `AES-256-CBC` بواسطة [OpenSSL](https://www.openssl.org/)
(عبر حزمة [PyCA/cryptography](https://github.com/pyca/cryptography)).
يتم توفير دوال التجزئة `SHA-256` و `SHA-512` بواسطة مكتبة Python القياسية [hashlib](https://docs.python.org/3/library/hashlib.html). يتم دائمًا توفير الأوليات `HKDF` و `HMAC` و `Token` و دالة الحشو `PKCS7` بواسطة التطبيقات الداخلية التالية:
- [HKDF.py](https://github.com/markqvist/reticulum/blob/HEAD/RNS/Cryptography/HKDF.py)
- [HMAC.py](https://github.com/markqvist/reticulum/blob/HEAD/RNS/Cryptography/HMAC.py)
- [Token.py](https://github.com/markqvist/reticulum/blob/HEAD/RNS/Cryptography/Token.py)
- [PKCS7.py](https://github.com/markqvist/reticulum/blob/HEAD/RNS/Cryptography/PKCS7.py)
يتضمن Reticulum أيضًا تطبيقًا كاملاً لجميع الأوليات الضرورية في Python النقية. إذا لم يكن OpenSSL و PyCA متاحين على النظام عند بدء تشغيل Reticulum، فسيستخدم Reticulum بدلاً من ذلك الأوليات الداخلية النقية في Python. إحدى النتائج الثانوية لذلك هي الأداء، حيث أن الواجهة الخلفية لـ OpenSSL أسرع *بكثير*. أما النتيجة الأكثر أهمية فهي فقدان الأمان المحتمل باستخدام أوليات لم تخضع لنفس القدر من التدقيق والاختبار والمراجعة مثل تلك من OpenSSL.
يرجى ملاحظة أنه افتراضيًا، سيتطلب تثبيت Reticulum **تثبيت** OpenSSL و PyCA تلقائيًا إذا لم يكونا متاحين بالفعل. من الممكن فقط استخدام الأوليات النقية في Python إذا تم تجاوز هذا المطلب على وجه التحديد من قبل المستخدم، على سبيل المثال عن طريق تثبيت حزمة `rnspure` بدلاً من حزمة `rns` العادية، أو عن طريق التشغيل مباشرة من الكود المصدري المحلي.
إذا كنت ترغب في استخدام الأوليات الداخلية النقية في Python، فمن **المستحسن بشدة** أن يكون لديك فهم جيد للمخاطر التي يشكلها ذلك، وأن تتخذ قرارًا مستنيرًا حول ما إذا كانت تلك المخاطر مقبولة بالنسبة لك.
Reticulum هو برنامج جديد نسبيًا، ويجب التعامل معه على هذا النحو. على الرغم من أنه تم بناؤه مع مراعاة أفضل ممارسات التشفير في المقدمة، إلا أنه _لم_ يخضع لتدقيق أمني خارجي، وقد يكون هناك بالتأكيد أخطاء تتعلق بالخصوصية أو الأمان. إذا كنت ترغب في المساعدة، أو المساعدة في رعاية تدقيق، فيرجى التواصل.
## الشكر والتقدير
لا يمكن أن يوجد Reticulum إلا بفضل الجبل الشاسع من العمل مفتوح المصدر الذي بني عليه، ومساهمات جميع المشاركين، وكل من دعم المشروع على مر السنين. لكل من ساعد، شكرًا جزيلاً لكم.
عدد من الوحدات والمشاريع الأخرى هي إما جزء من Reticulum أو تستخدمه. شكر صادق لمؤلفي ومساهمي المشاريع التالية:
- [PyCA/cryptography](https://github.com/pyca/cryptography)، *ترخيص BSD*
- [Pure-25519](https://github.com/warner/python-pure25519) من [Brian Warner](https://github.com/warner)، *ترخيص MIT*
- [Pysha2](https://github.com/thomdixon/pysha2) من [Thom Dixon](https://github.com/thomdixon)، *ترخيص MIT*
- [Python AES-128](https://github.com/orgurar/python-aes) من [Or Gur Arie](https://github.com/orgurar)، *ترخيص MIT*
- [Python AES-256](https://github.com/boppreh/aes) من [BoppreH](https://github.com/boppreh)، *ترخيص MIT*
- [Curve25519.py](https://gist.github.com/nickovs/cc3c22d15f239a2640c185035c06f8a3#file-curve25519-py) من [Nicko van Someren](https://gist.github.com/nickovs)، *الملكية العامة*
- [I2Plib](https://github.com/l-n-s/i2plib) من [Viktor Villainov](https://github.com/l-n-s)
- [PySerial](https://github.com/pyserial/pyserial) من Chris Liechti، *ترخيص BSD*
- [Configobj](https://github.com/DiffSK/configobj) من Michael Foord و Nicola Larosa و Rob Dennis و Eli Courtwright، *ترخيص BSD*
- [ifaddr](https://github.com/pydron/ifaddr) من Stefan C. Mueller، *ترخيص MIT*
- [Umsgpack.py](https://github.com/vsergeev/u-msgpack-python) من [Ivan A. Sergeev](https://github.com/vsergeev)
- [rnsh](https://github.com/acehoss/rnsh) من [Aaron Heise](https://github.com/acehoss)
- [Python](https://www.python.org)