2008-10-20 7 views
23

मैंने विंडोज सेवा द्वारा होस्ट की गई डब्ल्यूसीएफ सेवा लिखी है और इसे एक ज्ञात टीसीपी/आईपी पोर्ट पर सुनना होगा। मेरे संगठन के भीतर उपयोग के लिए मैं किस पोर्ट से सुरक्षित रूप से एक बंदरगाह आवंटित कर सकता हूं? वह बंदरगाह सेवा और उपभोग करने वाले ग्राहकों के लिए कॉन्फ़िगरेशन फ़ाइलों में एम्बेड किया जाएगा।इन-हाउस एप्लिकेशन के लिए टीसीपी/आईपी पोर्ट्स को असाइन करना

+0

http://stackoverflow.com/questions/10476987/best-tcp-port-number-range-for-internal- अनुप्रयोगों का डुप्लिकेट – matt2000

+0

यह एक उपयोगी सवाल है, और अन्य उत्तरदाता एक अच्छा मामला बनाते हैं कि "स्वीकार किया गया "उत्तर (जोर्ज फेरेरा द्वारा) गलत है या कम से कम अधूरा है, जैसा कि इस सवाल पर जवाब है कि यह एक डुप्लिकेट है। क्या उत्तर देने के लिए "अस्वीकार्य" करना संभव है? –

उत्तर

26

के माध्यम से 65535

49152 से एक बंदरगाह संख्या चुनें IANA वर्तमान में सौंपा बंदरगाहों की एक सूची प्रकाशित करती है।

http://www.iana.org/assignments/port-numbers

गतिशील और/या निजी बंदरगाहों हैं 49152 से 65535 इस के माध्यम से उन लोगों से आप चाहिए जहाँ आपके घर में अनुप्रयोगों के लिए एक बंदरगाह लेने श्रृंखला है। बेशक प्रकाशित सूची में एक असाइन किए गए श्रेणियों में से किसी एक बंदरगाह का उपयोग किया जा सकता है। लेकिन ध्यान रखें कि उन असाइन किए गए श्रेणियों से पोर्ट नंबर चुनकर कोई गारंटी नहीं है कि आपके द्वारा चुने गए बंदरगाह भविष्य में आरक्षित बंदरगाह नहीं होगा।

असंबद्ध पोर्ट नंबर उपयोग नहीं किया जाना चाहिए। आपके आवेदन के बाद पोर्ट के लिए IANA संख्या पर हस्ताक्षर करेगा स्वीकृत किया गया है।

और यह सुनिश्चित करें कि पोर्ट संख्या आप लेने विन्यास योग्य है के रूप में आप ने कहा है:

बंदरगाह सेवा के लिए config फाइल और ग्राहकों कि सेवा उपभोग कर रहे हैं में एम्बेडेड हो जाएगा कि ।

यह किसी अन्य तीसरे पक्ष के मामले में सिरदर्द से बच जाएगा यदि आप अपने पोर्ट नंबर का उपयोग नहीं कर सकते हैं। यदि ऐसा होता है तो आप आगे बढ़ें और इसे कॉन्फ़िगरेशन फ़ाइल पर बदलें और यह बस काम करता है।

+5

_ दूसरी तरफ, एप्लिकेशन सॉफ़्टवेयर को यह नहीं मानना ​​चाहिए कि डायनामिक पोर्ट्स रेंज में एक विशिष्ट पोर्ट नंबर हमेशा संचार के लिए उपलब्ध होगा, और उस श्रेणी में एक पोर्ट नंबर इसलिए ** ** का उपयोग नहीं किया जाना चाहिए एक सेवा पहचानकर्ता ._ [आरएफसी 6335] (http://tools.ietf.org/html/rfc6335#page-20) – Bolu

+2

बोलू सही है। ** डायनामिक रेंज ** के भीतर पोर्ट नंबर का उपयोग न करें। इस पृष्ठ पर कहीं और मेरी व्याख्या देखें। – adrianwadey

+0

बुद्धिमान नहीं। चूंकि सिस्टम किसी भी पल में आप जिस पोर्ट का उपयोग कर रहे हैं उसे असाइन करना चुन सकता है। तो आपका सर्वर ऐसा लगता है कि यह बाद वाले लोडिंग पर असफल होने के लिए काम कर रहा है। – rxantos

0

यहां एक अच्छा list of common application ports है। एक खाली स्लॉट में अपनी पसंद बनाओ। शायद आपको किसी भी घर के विशेष आवेदन के लिए अपने नेटवर्क को स्कैन करना चाहिए।

आम तौर पर उच्च संख्या पोर्ट उपलब्ध हैं और मैं उन्हें सुझाव दूंगा लेकिन उन्हें फ़ायरवॉल द्वारा अवरुद्ध किया जा सकता है।

+0

लिंक टूटा हुआ है। कृपया – German

3

एक आम अनुप्रयोग पोर्ट चुनने के बारे में अन्य सुझावों के अतिरिक्त, मैं सुझाव दूंगा कि आप अपने आवेदन के भीतर पोर्ट को कॉन्फ़िगर करने योग्य बनाते हैं। हार्ड-कोडित पोर्ट नंबर एक बुरा विचार है, खासकर अगर आपको बाद में किसी अन्य एप्लिकेशन के साथ पोर्ट विवाद मिलता है और आपको अपना परिवर्तन करने की आवश्यकता होती है।

4

संक्षिप्त उत्तर: 1023, या 4 9 152 से अधिक तक और कुछ भी शामिल करें, और अपने नेटवर्क पर सेवाओं के विरुद्ध चुने हुए बंदरगाह का परीक्षण करें।

यदि आपने उचित सावधानी बरत ली है कि ऐसा लगता है कि आपके पास (कॉन्फ़िगरेशन फ़ाइल में पोर्ट नंबर डालना) है, तो यदि आप बाद में संघर्ष की खोज करते हैं तो यह एक बड़ा व्यवधान नहीं होना चाहिए।

लेकिन (ताकि मैं टाइप करने के दौरान पॉप अप किए गए अन्य सुझावों में कुछ जोड़ सकूं) सुनिश्चित करें कि आप इसे बदलना आसान बनाते हैं! अगर यह कॉन्फ़िगरेशन फाइलों में है, तो इसे स्पष्ट करें। इसे दस्तावेज करें, और समस्या निवारण में इसे इंगित करें। यह ऐसी चीज है जो गलत हो सकती है, इसलिए इसे बदलने की आवश्यकता होने पर डीबग करना आसान हो जाता है।

+7

रुको, आप मुझे 4 9 152 से ऊपर * बंदरगाहों से बचने के लिए कह रहे हैं, लेकिन शीर्ष जवाब कहता है कि आपको * केवल * बंदरगाहों को चुनना चाहिए 4 9 152 और ऊपर। क्या? –

+1

@CamiloMartin भी adrianwadey के जवाब देखें। शीर्ष उत्तर सहकर्मी-से-पीयर अनुप्रयोगों (उदाहरण के लिए बिटटोरेंट) के लिए अच्छी सलाह है, क्योंकि वे किसी भी तरह की खोज सेवा के साथ अक्सर गतिशील बंदरगाहों का उपयोग करते हैं; क्लाइंट-सर्वर अनुप्रयोगों के लिए इतना कुछ नहीं, जिसके लिए एक उचित स्थिर पोर्ट नंबर की आवश्यकता होती है - भले ही पोर्ट नंबर को कॉन्फ़िगरेशन फ़ाइल में संग्रहीत किया गया हो, फिर भी जब भी यह बदलता है तो आपको सर्वर _and_ के क्लाइंट को फिर से कॉन्फ़िगर करना होगा। – criptych

0

नोट के रूप में उन पोर्ट को नेटस्टैट/ए/एन द्वारा जांचना याद रखें कि यह अन्य एप्लिकेशन द्वारा उपयोग किया जा रहा है या नहीं। मुझे लगता है कि विस्टा ने 4 9 152 का उपयोग किया .... कुछ आवेदन स्तर के कारण के लिए। असल में, क्योंकि अधिकांश सिस्टम स्तर श्रोता बंदरगाहों को उन बंदरगाहों का उपयोग करने के लिए अपने सुरक्षित स्थान को लागू नहीं करता है, जिनका उपयोग बिल्कुल नहीं किया जाता है।

अच्छा प्रोग्रामिंग दिन आमिर

17

बंदरगाहों 0-1023 IANA द्वारा आवंटित कर रहे हैं अच्छी तरह से जाना जाता है बंदरगाहों रहे हैं और है। इन्हें केवल सार्वजनिक नेटवर्क पर असाइन किए गए प्रोटोकॉल के लिए उपयोग किया जाना चाहिए।

बंदरगाहों 1024-65535 को पंजीकृत पोर्ट नंबर कहा जाता है (rfc1700 देखें) लेकिन अब दो क्षेत्रों में विभाजित हैं (rfc6335 देखें)।

बंदरगाह 1024-49151 उपयोगकर्ता पोर्ट हैं और आपके स्वयं के प्रोटोकॉल के लिए उपयोग करने वाले हैं।

बंदरगाह 49152-65535 गतिशील बंदरगाह हैं और प्रोटोकॉल पर निर्धारित नहीं किए जाने चाहिए।

उपयोगकर्ता पोर्ट्स का उपयोग किसी भी प्रोटोकॉल के लिए किया जा सकता है, लेकिन एक सीमित संख्या है, इसलिए आपका उपयोग कहीं किसी नेटवर्क पर किसी भी एल्स के उपयोग से संघर्ष करेगा। आईएएनए पंजीकृत पोर्ट नंबरों का रिकॉर्ड रखता है (0-49151)। यदि आपका प्रोटोकॉल सार्वजनिक नेटवर्क पर उपयोग किया जाएगा तो आपको इसे आईएएनए के साथ पंजीकृत करने की आवश्यकता है। यदि आप केवल अपने नेटवर्क के भीतर इसका उपयोग कर रहे हैं तो इस क्षेत्र के भीतर एक बंदरगाह चुनें (1024-49151) और IANA register के खिलाफ उस पोर्ट को जांचें ताकि यह सुनिश्चित किया जा सके कि इसका उपयोग प्रोटोकॉल द्वारा नहीं किया जा सकता है जिसका उपयोग आपके नेटवर्क पर किया जा सकता है। निजी उपयोग के लिए संभवतः एक प्रोटोकॉल को असाइन किया गया एक नंबर चुनना बेहतर होता है जिसे आप जानते हैं कि असाइन किए गए किसी को चुनने के लिए उपयोग नहीं किया जाएगा और भविष्य में असाइन किया जा सकता है।

डायनामिक रेंज के भीतर पोर्ट नंबर का उपयोग न करें। इन बंदरगाहों को गतिशील रूप से और कुछ हद तक यादृच्छिक रूप से ऑपरेटिंग सिस्टम द्वारा आवंटित किया जाता है। यदि आप क्लाइंट कनेक्शन खोलते हैं (पोर्ट = 0 के साथ बाइंड() का उपयोग करके) आपको गतिशील रेंज से एक अप्रयुक्त पोर्ट असाइन किया जाएगा। गारंटी देने का कोई तरीका नहीं है कि इस श्रेणी में एक पोर्ट हमेशा आपके प्रोटोकॉल के लिए स्वतंत्र होगा।