أداة شبكة TCP/UDP متعددة الأغراض
Netcrab عبارة عن أداة للتواصل عبر سطر الأوامر يمكنها القيام بالكثير من الأشياء. إنه تكريم لـ netcat ويمكنه القيام بالعديد من الأشياء التي يمكنه القيام بها. نظرة عامة مختصرة على الأشياء التي يمكنه القيام بها:
للاستخدام الكامل، قم بتشغيل netcrab --help
.
netcrab HOST:PORT
هذا يتصل بخادم TCP المحدد. سيتم الآن إرسال stdin الخاص بك إلى الخادم وسيتم طباعة stdout.
يجب أن يستخدم تنسيق IPv6 لاسم المضيف الأقواس المربعة المحيطة، على سبيل المثال المضيف المحلي هو [::1]
.
netcrab -L ADDR:PORT
netcrab -l ADDR:PORT
يمكنك الاستماع كخادم TCP على منفذ واحد أو أكثر. يؤدي استخدام -l
إلى إنهاء البرنامج بعد قطع الاتصال الوارد الأول. استخدم -L
"للاستماع بشكل أفضل": استمر في الاستماع بعد قطع الاتصال.
يدعم بناء جملة ADDR:PORT
بعض المتغيرات الخاصة:
localhost:5000
:5000
*:5000
يسمح خادم TCP بشكل افتراضي فقط بتنشيط اتصال وارد واحد في كل مرة لكل عنوان استماع، ولكن العلامة -m max_inbound_clients
تسمح لأكثر من اتصال واحد.
كما هو الحال مع وضع العميل، يتم إرسال stdin إلى جميع المقابس المتصلة، ويتم إرسال البيانات الواردة من جميع المقابس إلى stdout. يمكن تغيير ذلك باستخدام وسيطات وضع الإدخال والإخراج أدناه.
تؤدي الوسيطة -z
إلى قطع اتصال المقبس على الفور دون السماح بإرسال أي بيانات. مفيد فقط لاختبار الاتصال.
netcrab -u -L ADDR:PORT
netcrab -u HOST:PORT
UDP غريب من حيث أنك لا "تتصل" به حقًا. يمكنك الارتباط بمنفذ محلي ثم إرسال/استقبال مخططات البيانات إلى/من أقرانهم البعيدين. يعمل وضع الاستماع ووضع الاتصال لـ UDP بنفس الطريقة تمامًا، باستثناء أنه في وضع الاتصال، يكون النظير الأول الذي يرسل إليه stdin معروفًا في البداية، وفي وضع الاستماع، لا يمكن إرسال حركة مرور stdin إلى أي مكان حتى يتلقى المستمع على الأقل مخطط بيانات واحد من نظير.
بالنسبة لـ -L
، يدعم هذا نفس بناء جملة ADDR:PORT
كما هو مذكور أعلاه لـ TCP.
حجم مخطط البيانات الافتراضي هو 1 بايت ولكن يمكن التحكم فيه بواسطة الوسيطة --ss
.
netcrab -L ADDR1:PORT1 -L ADDR2:PORT2
netcrab -u -L ADDR1:PORT1 -L ADDR2:PORT2
يدعم Netcrab الاستماع إلى عناوين ومنافذ محلية متعددة في نفس الوقت. وسوف يقبل الاتصالات التي تصل على أي منهم. وهذا يدعم TCP وUDP.
netcrab -u --mc HOST:PORT
يدعم Netcrab ربط مآخذ توصيل UDP بمجموعات البث المتعدد عن طريق إضافة الوسيطة --mc
. كما أنه يوفر عناصر تحكم لـ TTL لحزم البث المتعدد ( --ttl
) وما إذا كان سيتم استقبال حزم البث المتعدد التي يتم تكرارها منذ انضمام البرنامج إلى المجموعة ( --mc_no_loop
).
netcrab -u -b HOST:PORT
يدعم Netcrab إرسال مخططات بيانات البث UDP.
netcrab -i MODE
يمكن التحكم في وضع الإدخال. بشكل افتراضي، يأتي الإدخال من stdin. ويقبل الأوضاع الأخرى التالية:
none
: لا يوجد إدخال ممكن. ستكون حركة المرور الوحيدة التي ستتم معالجتها من أقرانهم البعيدين.stdin-nochar
: يعمل بنفس طريقة stdin، لكنه لا يستخدم "وضع الأحرف". وهذا يعمل بشكل أسوأ للاستخدامات التفاعلية.echo
: سيتم إرجاع أي حركة مرور مستلمة إلى مرسلها.rand
: سيتم إنشاء بيانات عشوائية. يمكن التحكم في الأحجام العشوائية للبيانات بواسطة --rsizemin
و --rsizemax
، ويمكن التحكم في نوع البيانات بواسطة --rvals
.fixed
: مفيد فقط لاختبار الأداء. سيتم إرسال نفس الرسالة ذات الحجم الثابت مع البيانات الثابتة إلى ما لا نهاية. يمكنك التحكم في الحجم باستخدام --ss
ونوع البيانات العشوائية الموجودة فيه باستخدام --rvals
pfqoscli
: قياس زمن الوصول مقابل إشارات جودة خدمة PlayFab.pfqossrv
: يعمل كخادم إشارة جودة خدمة PlayFab للعملاء لاستهدافه لقياس زمن الوصول. عند استخدام أحد أوضاع stdin كمدخل، يمكنك تحديد --exit-after-input
لإنهاء البرنامج بعد وصول تدفق الإدخال إلى نهاية الملف.
netcrab -o MODE
افتراضيًا، ينتقل الإخراج إلى stdout، ولكن غالبًا ما يكون من المفيد تغييره إلى -o none
لتخطي كافة المخرجات. يعد هذا مفيدًا بشكل خاص عند تمرير كمية كبيرة من حركة المرور، لأنه قد يؤدي إلى إبطاء عملية الإخراج.
الوضع الافتراضي لـ Netcrab هو استخدام stdin وstdout، بحيث يمكنك إعادة توجيه الإدخال من ملف وإرسال الإخراج إلى ملف (أو نقله عبر الأنابيب بين البرامج).
netcrab HOST:PORT < file
echo message | netcrab HOST:PORT
netcrab -6
netcrab -4
يمكنك تقييد استخدام مجموعات عناوين IPv6 أو IPv4 فقط. يُحدث هذا فرقًا أكبر عند الاتصال بأسماء المضيفين التي تمر عبر تحليل DNS أو عند الاستماع دون تحديد عنوان مصدر صريح.
netcrab -s ADDR:PORT
عند إجراء اتصال TCP صادر أو إرسال مخططات بيانات UDP، يرتبط Netcrab افتراضيًا بعناوين أحرف البدل IPv4 وIPv6 (0.0.0.0:0 و[::]:0). يمكنك تمرير -s
للربط بشكل صريح بعنوان بدلاً من ذلك. وهذا يدعم كافة متغيرات ADDR:PORT
الموضحة في قسم "خادم TCP".
netcrab HOST1:PORT1 HOST2:PORT2
يسمح Netcrab بالاتصال بأكثر من نظير بعيد في نفس الوقت. على غرار الاستماع لعدة اتصالات متزامنة، سيتم إرسال حركة المرور من الجهاز المحلي إلى جميع النظراء المتصلين، الواردة أو الصادرة.
netcrab -L ADDR:PORT HOST:PORT
يدعم Netcrab كلاً من الاستماع للاتصالات الواردة وإجراء الاتصالات الصادرة في نفس الوقت. قد يكون هذا مفيدًا لتوكيل حركة المرور من عنوان محلي إلى آخر، حيث يمكنك بشكل مستقل تحديد كل من العنوان الذي سيتم الاستماع إليه وعنوان المصدر الذي سيتم استخدامه للاتصال الصادر.
netcrab HOST:PORTxNUM
في بعض الأحيان يكون من المفيد أن تكون قادرًا على الاتصال بنفس نقطة النهاية عدة مرات، خاصة بالنسبة لسيناريوهات القنوات. على سبيل المثال، للاتصال باسم مضيف 12 مرة، يمكنك إجراء netcrab localhost:5000x12
. سيحاول إجراء 12 اتصالاً صادرًا متزامنًا بنفس اسم المضيف والمنفذ.
ويمكن أيضًا دمج هذا مع أهداف متعددة. نحن هنا نتصل بالمضيف المحلي على IPv4 خمس مرات، وعلى IPv6 ثلاث عشرة مرة. netcrab 127.0.0.1:5000x5 [::1]:5000x13
.
netcrab -r
netcrab -R
في وضع الاتصال الصادر، يمكنك أن تطلب من Netcrab إعادة إنشاء اتصال تم قطعه. -r
يعيد تأسيس الاتصال الرشيق. -R
يعيد تأسيس على خطأ غير رشيق. يمكن تحديد كلاهما في نفس الوقت، إما -r -R
أو -rR
.
netcrab --fm channels
netcrab --fm linger-channels
الآن نصل إلى الأجزاء المفيدة حقًا. يمكن أن يتحول Netcrab إلى جهاز توجيه، حيث يقوم بإعادة توجيه حركة المرور بين نقاط النهاية المتعددة. يعمل وضع "القنوات" على إقران نقاط النهاية وإعادة توجيه حركة المرور بشكل ثنائي الاتجاه من نقطة نهاية إلى أخرى، ويعمل كوكيل شفاف. لا يتم إعادة توجيه حركة المرور بين القنوات. تخيل الرسم البياني التالي:
+-------------+ +-----------------------------+ +-------------+
| | | netcrab | | |
| HOST1:PORT1 <----> HOST2:PORT1 <-> HOST2:PORT2 <----> HOST3:PORT1 |
| HOST1:PORT2 <----> HOST2:PORT3 <-> HOST2:PORT4 <----> HOST3:PORT2 |
| | | | | |
+-------------+ +-----------------------------+ +-------------+
تمر القناتان الأولى والثانية على طول الطريق ولكن لا تتقاطعان مع الجداول. إذا قام المضيف 1 أو المضيف 3 بقطع اتصال نقطة النهاية، فسيتم "إعادة توجيه" قطع الاتصال إلى الطرف الآخر من القناة أيضًا. إذا لم ينجح هذا السلوك بالنسبة لك، فيمكنك التبديل إلى وضع Lingering Channels.
عندما تكون في وضع القنوات، يرتفع الحد الأقصى للعملاء تلقائيًا إلى 10 لكل عنوان استماع بافتراض أن المستخدم ربما يريد أكثر من اتصال واحد في المرة الواحدة من أجل استخدام القنوات فعليًا، كما تعلم. يمكن تجاوز هذا بـ -m
.
netcrab --fm hub
يشبه وضع Hub وضع القنوات، ولكنه أبسط: تتم إعادة توجيه كل حركة المرور من جميع مصادر الشبكة مرة أخرى إلى جميع المقابس الأخرى. يمكنك استخدامه لإعداد غرفة دردشة أو شيء من هذا القبيل.
كما هو الحال في وضع القنوات، عندما تكون في وضع المحور، يرتفع الحد الأقصى للعملاء تلقائيًا إلى 10 لكل عنوان استماع ولكن يمكن تجاوزه باستخدام -m
.
netcrab -e COMMAND
يمكن لـ Netcrab تنفيذ برنامج آخر وربط stdin وstdout الخاصين به بالشبكة. يمكن استخدامه بسهولة لكشف الصدفة البعيدة أو شيء من هذا القبيل، على الرغم من أنك بالطبع ستحتاج إلى توخي الحذر بشأن ذلك. في هذا الوضع، سيتم تعطيل الإدخال والإخراج العادي.
يتم تشغيل سلسلة الأمر من خلال الصدفة الحالية.
يمكن دمج جميع الإمكانيات الموضحة أعلاه تقريبًا واستخدامها في نفس الوقت. على سبيل المثال، يمكنك الاستماع إلى عناوين متعددة والاتصال بأهداف متعددة في نفس الجلسة أثناء استخدام لوحة الوصل لإعادة التوجيه بين كافة الاتصالات.