2010-02-04 15 views
38

यह थोड़ा सा व्यक्तिपरक है, क्योंकि नियम ऐसे बोलने के लिए हैं। हर बार जब मैं एक सर्वर बनाता हूं, तो मैं खुद से सोचता हूं, "उपयोग करने के लिए सबसे अच्छा बंदरगाह क्या है?" मुझे लगता है कि एक उत्तर है "कोई भी, जब तक उपयोगकर्ता इसे बदल सकता है।" तो, सभी लोग तय करते हैं कि डिफ़ॉल्ट पोर्ट कैसे चुनें? व्यक्तिगत रूप से, मैं 8000-कुछ की तरह कुछ उपयोग करना पसंद करता हूं यदि यह HTTP से संबंधित है, और मैंने देखा है कि यह एक बहुत ही आम प्रवृत्ति है। लेकिन क्या होगा यदि 8000 पहले से ही उपयोग में है? 8001 का प्रयोग करें? ऐसा लगता है कि यह थोड़ा सा विज्ञापन है, और मुझे लगता है कि यह है।आप कैसे तय करते हैं कि किस पोर्ट का उपयोग करना है?

स्पष्ट रूप से मैं इस सवाल से पूछने वाले पहले व्यक्ति नहीं हूं; आईएएनए port numbers सूची बनाए रखता है ... जो मुझे बिना असाइन किए गए रेंज (48620-49150) पर ले जाता है। मुझे लगता है कि हमें वास्तव में इनका उपयोग करना चाहिए, लेकिन अधिक प्रोग्रामर ऐसा क्यों नहीं करते हैं? आप कैसे तय करते हैं कि किस का उपयोग करना है; यदि हर कोई # 1 पर शुरू हुआ, तो हम सभी 48620 का उपयोग करेंगे।

+1

+1 अपने स्वयं के प्रश्न का उत्तर देने के लिए +1 – fupsduck

+1

धन्यवाद - मैं हर किसी को अपनी विचार प्रक्रिया बताना चाहता था, ताकि अगर मैं गलत था तो अन्य लोग मुझे कॉल कर सकते हैं। –

उत्तर

20

मुझे लगता है कि आप काफी अपने प्रश्न के रूप में संभव है के रूप में ज्यादा के उत्तर दिए हैं; वास्तव में एक सख्त नियम नहीं है जिसका आप यहां जो भी कहा है उससे परे अनुसरण कर सकते हैं। लेकिन आम तौर पर:

  • आईएएनए सूची देखें और उस पोर्ट को चुनें जो उपयोग में नहीं है।
  • याद रखने के लिए आसान एक पोर्ट नंबर चुनें।
  • कोड में पोर्ट नंबर को ठीक न करें। कुछ अन्य उत्पाद ने आपके जैसा ही पोर्ट चुना होगा और आपको कभी पता नहीं होगा कि आपको सर्वर पर सह-अस्तित्व कब करना होगा, इसलिए पोर्ट नंबर को कॉन्फ़िगरेशन फ़ाइल में कहीं भी रखें ताकि इसे आवश्यकतानुसार बिना किसी पुन: संकलित किए बदला जा सके। पोर्ट नंबर बदलने की क्षमता फ़ायरवॉल के माध्यम से उन्हें फिर से कॉन्फ़िगर किए बिना भी सहायक हो सकती है। (यदि कॉन्फ़िगरेशन फ़ाइल मौजूद नहीं है तो आप हमेशा अपने चुने हुए मान पर डिफ़ॉल्ट हो सकते हैं।)
  • एक तर्क है कि आप कुछ उच्च नहीं चुनना चाहते हैं क्योंकि आप ephemeral ports के लिए उपयोग की जाने वाली सीमा के साथ संघर्ष कर सकते हैं। ऐसा नहीं है कि आप इससे प्रभावित होंगे, लेकिन ऐसा होने पर डीबग करना मुश्किल समस्या है।

(और अगर आप यादगार पोर्ट संख्या चुनने के लिए एक टिप चाहते हैं, मैं एक बार कोई है जो अपने सहकर्मियों के टेलीफोन एक्सटेंशन के आसपास आधारित पोर्ट संख्या याद के साथ काम किया।)

+0

"आईएएनए सूची देखें और उस पोर्ट को चुनें जो उपयोग में नहीं है" या बस बड़ी संख्या – Patrick

+2

चुनें, 49152 के तहत एक बड़ी संख्या स्पष्ट रूप से, मुझे पता था कि, वास्तव में मैंने किया – Patrick

0

त्वरित Google खोज के बाद यह सुनिश्चित करने के लिए कि यह स्पष्ट है, मैं आम तौर पर केवल कई व्यक्तिगत महत्व चुनता हूं।

0

आपने अपने प्रश्न का उत्तर दिया? किसी भी असाइन किए गए बंदरगाह को चुनें और उपयोगकर्ता को इसे बदलने की अनुमति दें।

+0

पुष्टि करने के लिए धन्यवाद :) –

6

परीक्षण के दौरान ... हमेशा बंदरगाह # 666;)

+4

मैं इसे हमेशा रूट के रूप में चलाता हूं? –

+5

यह डूम गेम के लिए आरक्षित है! आपको इसका सम्मान करना चाहिए –

8

याद करने के लिए कुछ आसान और उचित रूप से nerdy असाइन नहीं किए गए (प्रति IANA) बंदरगाहों:

27182 (ई)

31415 (अनुकरणीय)

60221 (avagadro के)

0

कैसे के बारे में:

defaultPort = (new Random()).Next(48620, 49150); 
0

मैं इस तरह से पसंद करते हैं: (निम्न अजगर कोड)

#!/usr/bin/env python3 
import random as R 
r = R.SystemRandom() 
print([r.randrange(1024, 65535) for x in range(4)]) 

और फिर मैं नंबर जो मुझे सबसे ज्यादा पसंद चुनें। या पाठ्यक्रम, यदि सीमा स्वीकार्य संख्याओं की कुछ कठोर सीमाएं हैं तो सीमा बदलें।

0

मैं सुझाव देता हूं कि कभी भी एक पोर्ट का उपयोग न करें जो 5 अंकों की तरह बड़ी संख्या है, क्योंकि यह कुछ अन्य ऑपरेशन सिस्टम प्रक्रियाओं को मार सकता है और एफेमेरल बंदरगाहों को असाइन करता है। इसकी सीमाओं के कारण आप 'उपयोग में पहले से ही त्रुटियों' में शामिल होना शुरू कर देंगे।

संबंधित मुद्दे