किसी भी रेंज में रैंडम TCP या UDP पोर्ट नंबर जनरेट करें, स्वचालित रूप से वैल-नोन और आमतौर पर बाइंड किए गए सेवा पोर्ट छोड़कर ताकि आपकी स्थानीय सेवाएँ टकराएँ नहीं।
ऐसा पोर्ट नंबर जिसे आपकी मशीन पर कोई और संभवतः नहीं चाहेगा। चुनें कि आपको कितने पोर्ट चाहिए और किस रेंज से लेने हैं। वैल-नोन सेवाओं के पोर्ट डिफ़ॉल्ट रूप से छोड़ दिए जाते हैं, इसलिए आपको मिलने वाले नंबर किसी पहले से चल रही चीज़ से टकराने की संभावना कम है।
–
ऐसा पोर्ट नंबर चुनना जो टकराएगा नहीं
पोर्ट स्पेस कैसे विभाजित होता है
कोई TCP या UDP पोर्ट एक 16-बिट संख्या है, इसलिए उपयोग योग्य रेंज 0 से 65535 तक चलती है। IANA इस स्पेस को तीन भागों में बाँटता है। पोर्ट 0 से 1023 सिस्टम या वैल-नोन पोर्ट हैं, जो मानक सेवाओं के लिए आरक्षित हैं जैसे 80 पर HTTP और 22 पर SSH; Unix जैसी प्रणालियों पर इनमें से किसी एक को बाइंड करने के लिए आमतौर पर root या स्पष्ट क्षमता की आवश्यकता होती है। पोर्ट 1024 से 49151 रजिस्टर्ड पोर्ट हैं, जो विशिष्ट एप्लिकेशन को अनुरोध पर सौंपे जाते हैं - PostgreSQL 5432 पर और MySQL 3306 पर यहीं रहते हैं। पोर्ट 49152 से 65535 डायनामिक या एफ़ीमेरल रेंज हैं, जो अस्थायी क्लाइंट-साइड आवंटन के लिए आरक्षित हैं।
स्थानीय विकास सेवा के लिए, मीठा स्थान 1024 से ऊपर की रजिस्टर्ड रेंज है, जो विशेषाधिकार प्राप्त ब्लॉक और एफ़ीमेरल ब्लॉक दोनों से बचता है। यही कारण है कि यह जनरेटर 1024 को निचली सीमा के रूप में डिफ़ॉल्ट करता है। 49152 से नीचे रहना इससे अधिक मायने रखता है जितना लगता है: आपका ऑपरेटिंग सिस्टम हर बार जब कोई प्रोग्राम आउटबाउंड कनेक्शन खोलता है तब एफ़ीमेरल रेंज से खींचता है, इसलिए वहाँ खड़ी कोई सेवा रिबूट के बाद अपना पोर्ट पहले से ही लिया हुआ पा सकती है।
वैल-नोन पोर्ट छोड़ना क्यों मददगार है
अकेला रैंडमनेस टक्कर को नहीं रोकता। एक रैंडम ड्रा आसानी से 3306, 5432, 6379 या 8080 पर आ सकता है, और किसी काम कर रही डेवलपर मशीन पर वे ठीक वे नंबर हैं जो सबसे अधिक संभावना से पहले से ही कब्ज़े में होते हैं। यहाँ उपयोग की गई स्किप सूची क्लासिक Unix सेवाओं, सामान्य डेटाबेस और मैसेज ब्रोकर, और लोकप्रिय फ़्रेमवर्क द्वारा डिफ़ॉल्ट रूप से चुने गए पोर्ट को कवर करती है, जैसे Node टूलिंग के लिए 3000 और स्थानीय HTTP सर्वर के लिए 8000 या 8080।
उन्हें छोड़ने का लागभग कोई खर्च नहीं है - पूल में अभी भी हज़ारों उम्मीदवार हैं - और यह "पोर्ट पहले से ही उपयोग में" त्रुटि के सबसे सामान्य स्रोत को हटा देता है। यदि आप उन नंबरों में से किसी एक को जानबूझकर चाहते हैं, तो विकल्प बंद करें और पूरी रेंज फिर से उपलब्ध हो जाती है।
ध्यान रखें कि यह एक संभाव्यता-आधारित सहायक है, आरक्षण नहीं। उपकरण के पास आपकी मशीन का निरीक्षण करने का कोई तरीका नहीं है, इसलिए यह नहीं जान सकता कि कुछ सुन रहा है। यह पुष्टि करने के लिए कि कोई पोर्ट वास्तव में मुक्त है, macOS या Linux पर lsof -i :PORT के साथ, आधुनिक Linux पर ss -ltnp के साथ, या Windows पर netstat -ano | findstr :PORT के साथ इसे स्थानीय रूप से जाँचें।
कंटेनर और CI में पोर्ट
कंटेनर और CI वातावरण गणना को बदल देते हैं। कंटेनर के अंदर पोर्ट स्पेस आमतौर पर निजी होता है, इसलिए दो कंटेनर दोनों 8080 पर बिना संघर्ष के सुन सकते हैं; टकराने का जोखिम होस्ट साइड पर चला जाता है, जहाँ प्रकाशित पोर्ट एक ही नेमस्पेस साझा करते हैं। रनटाइम से पहले कॉन्फ़िगरेशन फ़ाइल, docker-compose मैपिंग या टीम दस्तावेज़ में लिखने के लिए स्थिर मान की आवश्यकता होने पर यहाँ जैसे जनरेट किया गया नंबर सही उपकरण है।
कई CI सिस्टम और ऑर्केस्ट्रेशन टूल इसे अलग ढंग से हल करते हैं: कर्नेल से एक मुक्त पोर्ट माँगकर: पोर्ट 0 पर बाइंड करें, और ऑपरेटिंग सिस्टम एक उपयोग न किए गए को सौंपता है और बताता है कि उसने कौन सा चुना। वह रेस-फ्री और हमेशा सही है, इसलिए जब आपका प्रोग्राम रनटाइम पर अपना पोर्ट बताया जा सके तब इसे प्राथमिकता दें। यहाँ जैसा जनरेट किया गया नंबर सही उपकरण है जब आपको किसी कॉन्फ़िगरेशन फ़ाइल, docker-compose मैपिंग या टीम दस्तावेज़ में लिखने के लिए कोई स्थिर मान चाहिए जब कुछ भी नहीं चल रहा हो।
FAQ
रेंज डिफ़ॉल्ट रूप से 1024 से क्यों शुरू होती है?
1024 से नीचे के पोर्ट Unix जैसी प्रणालियों पर विशेषाधिकार प्राप्त हैं और आमतौर पर बाइंड करने के लिए root की आवश्यकता होती है। 1024 से शुरू करने पर परिणाम एक सामान्य उपयोगकर्ता खाते द्वारा उपयोग योग्य रहते हैं।
क्या मुझे 49152 से ऊपर के पोर्ट से बचना चाहिए?
लंबे समय तक चलने वाली सेवा के लिए आमतौर पर हाँ। वह रेंज वहाँ है जहाँ ऑपरेटिंग सिस्टम एफ़ीमेरल क्लाइंट पोर्ट खींचता है, इसलिए वहाँ खड़ी कोई सेवा रिबूट के बाद अपना नंबर पहले से ही लिया हुआ पा सकती है।
क्या यह जाँचता है कि पोर्ट वास्तव में मुक्त है?
नहीं। पृष्ठ पूरी तरह आपके ब्राउज़र में चलता है और आपके सिस्टम का निरीक्षण नहीं कर सकता। किसी नंबर को अपनाने से पहले `lsof -i :PORT`, `ss -ltnp` या `netstat -ano | findstr :PORT` से पुष्टि करें।
स्किप विकल्प कौन से पोर्ट बाहर करता है?
क्लासिक Unix सेवाएँ, सामान्य डेटाबेस और ब्रोकर जैसे MySQL, PostgreSQL, Redis, RabbitMQ, MongoDB और Elasticsearch, और लोकप्रिय फ़्रेमवर्क डिफ़ॉल्ट जैसे 3000, 8000, 8080 और 8443।
क्या रैंडमनेस क्रिप्टोग्राफ़िक रूप से सुरक्षित है?
यह Web Crypto API का उपयोग करता है जब ब्राउज़र उसे प्रदान करता है, रिजेक्शन सैंपलिंग के साथ ताकि ड्रा समान रहे, और केवल तभी Math.random पर वापस लौटता है जब Crypto उपलब्ध न हो।
TCP और UDP पोर्ट में क्या अंतर है?
वे अलग-अलग 65536-एंट्री स्पेस हैं, इसलिए TCP 8080 और UDP 8080 असंबंधित हैं और अलग-अलग प्रोग्राम द्वारा एक ही समय में उपयोग किए जा सकते हैं। इस उपकरण द्वारा जनरेट किए गए नंबर दोनों के लिए काम करते हैं।