2011-05-10 25 views
6

चूंकि पोर्ट नंबर 65536 तक सीमित हैं, क्या कनेक्शन संख्या के लिए कोई सीमा है?नेटवर्क कनेक्शन की संख्या संभव

प्रत्येक कनेक्शन एक-दूसरे से अलग कैसे होता है?

यदि यह बंदरगाह से है, तो वहाँ कभी नहीं से अधिक 65536 कनेक्शन एक ही समय में किया गया कर सकते हैं?

उत्तर

8

नाटक में कई अलग-अलग टुकड़े हैं। चूंकि (Src IP, Src Port, Dest IP, Dest Port) टुपल्स द्वारा कनेक्शन को परिभाषित किया गया है, इसलिए आपको किसी दिए गए समय पर दो दिए गए सहकर्मियों के बीच 65536^2 कनेक्शन की अनुमति है: 1 से 1 तक, 1 से 2 तक .. 1 से 65535 तक, आदि और यह केवल दो के बीच है साथियों - आप निश्चित रूप से कई सहकर्मियों के साथ कई कनेक्शन खोल सकते हैं।

लेकिन, अधिकांश ऑपरेटिंग सिस्टम प्रति प्रक्रिया खुले दायरलेखकों/हैंडल की संख्या को सीमित करते हैं। यह सीमा ऐतिहासिक रूप से कम थी (20), लेकिन अब अक्सर अधिक है (मेरे सिस्टम पर 1024, ulimit -abash(1) में प्रति-प्रक्रिया सीमाएं दिखाएगा)।

यूनिक्स सिस्टम पर setrlimit(3) सीमाओं के अतिरिक्त, सिस्टम-व्यापी सीमाएं भी हैं; लिनक्स सिस्टम पर /proc/sys/fs/file-max पूरे सिस्टम पर अनुमत खुली फाइलों की अधिकतम संख्या की रिपोर्ट करेगा। (यह मेरे सिस्टम पर 596118 है।) अन्य प्रणालियों की अलग-अलग सीमाएं होंगी।

और, मध्य में stateful firewall द्वारा लागू खुले कनेक्शन की संख्या की सीमा हो सकती है। चूंकि प्रत्येक राज्य को फ़ायरवॉल तालिकाओं में स्मृति की आवश्यकता होती है, इसलिए स्मृति पर कम चलने से बचने के लिए कोई भी संभवतः कुछ मनमानी सीमा लागू करेगा।

+0

'65536^2' ** ** निर्दिष्ट ** आईपी के बीच कनेक्शन की संख्या है, है ना? – DriverBoy

+1

आपको बहुत सारे बंदरगाहों का उपयोग करने के लिए फ़ाइल डिस्क्रिप्टरों की संख्या बढ़ाने की आवश्यकता नहीं है क्योंकि बंद होने के बाद आसपास LINGER सॉकेट करता है। – ikegami

+0

@DriverBoy, हाँ, यह दो आईपी पते के बीच सैद्धांतिक अधिकतम है। अभ्यास में, अधिकतम कम हो सकता है। – ikegami

6

एक टीसीपी कनेक्शन वास्तव में पीयर आईपी पते + पीयर पोर्ट + स्थानीय आईपी पता + स्थानीय बंदरगाह द्वारा पहचाना जाता है, तो आप वास्तव में 64k से अधिक तरीके से हो सकते हैं, लेकिन मुझे नहीं पता कि ओएस काम करने से अधिक की अनुमति देने के लिए क्या करते हैं प्रति स्थानीय आईपी पते 64k। विंडोज नहीं करता है। ब्याज की

एक बात है कि बंदरगाहों के थोड़े समय के लिए आरक्षित बने रह सकते हैं के बाद वे बंद रहते हैं। (यह पुराने और नए कनेक्शन के बीच आकस्मिक या जानबूझकर क्रॉसस्टॉक से बचने के लिए किया जाता है।) तंग लूप पर कनेक्शन बनाने और बंद करके, आप वास्तव में अपनी मशीन बंदरगाहों से बाहर निकल सकते हैं। पर्ल कोड के लिए http://www.perlmonks.org/?node_id=897591 देखें जो सभी सॉकेट का उपयोग करके सॉकेट कनेक्शन कॉल (कुछ मशीनों पर) लटकाएगा।

यूडीपी भी बंदरगाहों है, लेकिन UDP कनेक्शन नहीं है। इसलिए सॉकेट को केवल स्थानीय आईपी पते + स्थानीय बंदरगाह द्वारा पहचाना जाता है, इसलिए प्रति स्थानीय आईपी पते पर अधिकतम 64k यूपीडी बंदरगाह हो सकते हैं।

अद्यतन: यूडीपी पर अनुच्छेद जोड़ा गया।

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