مولد المنافذ العشوائية

أنشئ أرقام منافذ TCP أو UDP عشوائية في أي نطاق، مع تخطي تلقائي لمنافذ الخدمات المعروفة والمستخدمة بشكل شائع حتى لا تتعارض خدماتك المحلية.

رقم منفذ من غير المرجح أن يريده أي شخص آخر على جهازك. اختر عدد المنافذ التي تحتاجها والنطاق الذي ترسم منه. يتم تخطي منافذ الخدمات المعروفة افتراضيًا، لذا من غير المرجح أن تتعارض الأرقام التي تحصل عليها مع شيء يعمل بالفعل.

اختيار رقم منفذ لن يتعارض

كيف يُقسم فضاء المنافذ

منفذ TCP أو UDP هو رقم من 16 بت، لذا يتراوح النطاق القابل للاستخدام من 0 إلى 65535. تقسم IANA ذلك الفضاء إلى ثلاثة أجزاء. المنافذ من 0 إلى 1023 هي منافذ النظام أو المنافذ المعروفة، المحجوزة لخدمات قياسية مثل HTTP على 80 وSSH على 22؛ في أنظمة يونكس-لايك، يتطلب ربط أحدها عادةً صلاحيات الجذر أو صلاحية صريحة. المنافذ من 1024 إلى 49151 هي منافذ مسجلة، تُخصص عند الطلب لتطبيقات محددة - PostgreSQL على 5432 وMySQL على 3306 تقعان هنا. المنافذ من 49152 إلى 65535 هي النطاق الديناميكي أو المؤقت، المحجوز للتخصيصات المؤقتة من جانب العميل.

بالنسبة لخدمة تطوير محلية، النقطة المثلى هي النطاق المسجل فوق 1024، متجنبًا الكتلة المميزة والكتلة المؤقتة معًا. لهذا يبدأ هذا المولد افتراضيًا بـ 1024 كحد أدنى. البقاء تحت 49152 مهم أكثر مما يبدو: يسحب نظام التشغيل الخاص بك من النطاق المؤقت في كل مرة يفتح فيها برنامج اتصالًا صادرًا، لذا قد تجد الخدمة الموجودة هناك منفذها مشغولاً بعد إعادة التشغيل.

لماذا يساعد تخطي المنافذ المعروفة

العشوائية وحدها لا تمنع التصادمات. قد يسحب الرسم العشوائي بسهولة 3306 أو 5432 أو 6379 أو 8080، وعلى جهاز مطور عامل هذه هي بالضبط الأرقام الأكثر احتمالاً أن تكون مشغولة بالفعل. تغطي قائمة التخطي المستخدمة هنا خدمات يونكس الكلاسيكية، وقواعد البيانات ووسطاء الرسائل الشائعة، والمنافذ التي تختارها الأطر الشائعة افتراضيًا، مثل 3000 لأدوات Node و8000 أو 8080 لخوادم HTTP المحلية.

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

ضع في اعتبارك أن هذه أداة مساعدة احتمالية، وليست حجزًا. لا تملك الأداة أي وسيلة لفحص جهازك، لذا لا يمكنها معرفة أن شيئًا ما يستمع. لتأكيد أن المنفذ حر فعلاً، تحقق منه محليًا بـ lsof -i :PORT على macOS أو Linux، أو ss -ltnp على Linux الحديث، أو netstat -ano | findstr :PORT على Windows.

المنافذ في الحاويات وCI

تغير بيئات الحاويات وCI الحساب. داخل الحاوية يكون فضاء المنافذ عادةً خاصًا، لذا يمكن لحاويتين الاستماع على 8080 دون تعارض؛ ينتقل خطر التصادم إلى جانب المضيف، حيث تشارك المنافذ المنشورة مساحة اسم واحدة. اختيار منفذ مضيف عشوائي وتخطيطه إلى منفذ حاوية ثابت طريقة شائعة لتشغيل عدة نسخ من نفس الخدمة جنبًا إلى جنب.

تحل العديد من أنظمة CI وأدوات التنسيق هذا بشكل مختلف عن طريق سؤال النواة عن منفذ حر: اربط بالمنفذ 0، ويخصص نظام التشغيل منفذًا غير مستخدم ويخبرك بالذي اختاره. هذا خالٍ من السباقات وصحيح دائمًا، لذا فضّله عندما يمكن إخبار برنامجك بمنفذه وقت التشغيل. الرقم المُولد مثل تلك الموجودة هنا هو الأداة الصحيحة عندما تحتاج قيمة ثابتة لكتابتها في ملف إعدادات أو تخطيط docker-compose أو مستند فريق قبل تشغيل أي شيء.

ملاحظة المصدر المفتوح: منفذ بلغة JavaScript خالصة بدون أي مكتبات تابعة لجهات خارجية.

الأسئلة الشائعة

لماذا يبدأ النطاق افتراضيًا من 1024؟
المنافذ الأقل من 1024 مميزة في أنظمة يونكس-لايك وتتطلب عادةً صلاحيات الجذر للربط. البداية من 1024 تبقي النتائج قابلة للاستخدام من قبل حساب مستخدم عادي.
هل يجب أن أتجنب المنافذ الأعلى من 49152؟
نعم عادةً لخدمة طويلة العمر. هذا النطاق هو المكان الذي يسحب منه نظام التشغيل منافذ العملاء المؤقتة، لذا قد تجد الخدمة الموجودة هناك رقمها مستخدمًا بالفعل بعد إعادة التشغيل.
هل تتحقق هذه الأداة من أن المنفذ حر فعلاً؟
لا. تعمل الصفحة بالكامل داخل متصفحك ولا يمكنها فحص نظامك. تحقق بـ `lsof -i :PORT` أو `ss -ltnp` أو `netstat -ano | findstr :PORT` قبل الالتزام برقم.
ما المنافذ التي يستثنيها خيار التخطي؟
خدمات يونكس الكلاسيكية، وقواعد البيانات والوسطاء الشائعون مثل MySQL وPostgreSQL وRedis وRabbitMQ وMongoDB وElasticsearch، والإعدادات الافتراضية للأطر الشائعة مثل 3000 و8000 و8080 و8443.
هل العشوائية آمنة تشفيريًا؟
تستخدم Web Crypto API عندما يوفره المتصفح، مع أخذ عينات بالرفض بحيث يظل السحب موحدًا، وتتراجع إلى Math.random فقط عندما لا تكون Crypto متاحة.
ما الفرق بين منفذ TCP ومنفذ UDP؟
هما فضاءان منفصلان كل منهما 65536 إدخالًا، لذا TCP 8080 وUDP 8080 غير مرتبطين ويمكن استخدامهما بواسطة برامج مختلفة في نفس الوقت. الأرقام التي تولدها هذه الأداة تعمل لأي منهما.