सवाल आप किस पोर्ट का उपयोग करने का निर्णय लेते हैं?


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

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


47
2018-02-04 14:09


मूल


अपने प्रश्न का उत्तर देने के लिए +1 - fupsduck
धन्यवाद - मैं हर किसी को अपनी विचार प्रक्रिया बताना चाहता था, ताकि अगर मैं गलत था तो अन्य लोग मुझे कॉल कर सकते हैं। - Nick Bolton


जवाब:


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

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

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


24
2018-02-04 14:23



"आईएएनए सूची देखें और एक बंदरगाह चुनें जो उपयोग में नहीं है" या बस बड़ी संख्या चुनें - Patrick
जाहिर है, 49152 के तहत एक बड़ी संख्या, मुझे पता था कि, वास्तव में मैंने किया था - Patrick


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

27182 (ई)

31415 (पीआई)

60221 (अवगद्रो)


9
2018-02-04 14:38





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


6
2018-02-04 14:16



मैं इसे हमेशा रूट के रूप में चलाता हूं? - Josh Lee
यह डूम गेम के लिए आरक्षित है! आपको इसका सम्मान करना चाहिए - Sarge Borsch


कैसा रहेगा:

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

1
2018-02-05 15:38





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


0
2018-02-04 14:13





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


0
2018-02-04 14:13



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


मैं इस तरह से पसंद करता हूं: (पायथन कोड निम्नलिखित)

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

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


0
2017-08-26 17:59





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


0
2017-07-15 09:19