सिस्टम पर 65536 +1 कनेक्शन


35

नेटवर्क में हर सिस्टम के लिए 65536 पोर्ट हैं , और हर कनेक्शन या सेंड / रिसीव उन में से एक का उपयोग करेगा।

मेरा सवाल है: अगर हमारे पास 65536 + 1 कनेक्शन हैं तो क्या होगा ?!

मुझे पता है कि यह सामान्य तरीके से नहीं होता है, लेकिन मैं यह जानने के लिए उत्सुक हूं कि ऑपरेटिंग सिस्टम इसे कैसे संभालते हैं।


12
कनेक्शन देने से मना कर दिया जाएगा। लेकिन आप वास्तविक रूप से 65535 खुले कनेक्शनों से पहले लंबे समय तक समस्याएं रखेंगे।
क्रिसइन्डेमोंटोन

1
@ChrisInEdmonton No. यदि यह एक आउटबाउंड कनेक्शन है तो इसे एक बाइंड एरर मिलेगा क्योंकि यह एक स्थानीय पोर्ट को आवंटित नहीं कर सकता है। यदि यह इनबाउंड कनेक्शन है तो पोर्ट लिमिट लागू नहीं होती है।
user207421

यदि कनेक्शन इनबाउट है, तो आपको एक कनेक्शन अस्वीकृत मिलेगा, यदि यह आउटबाउंड है, तो आपका सॉकेट कॉल त्रुटि देगा। मैं इसे एक उत्तर के रूप में नहीं लिखूंगा क्योंकि मुझे यकीन नहीं है।
जोर्ज एल्डो

जवाबों:


61

कृपया ध्यान रखें कि एक प्रणाली 65536 से अधिक समवर्ती कनेक्शन को संभाल सकती है, क्योंकि वे जरूरी नहीं कि प्रत्येक एक अलग बंदरगाह का उपयोग करें।

टीसीपी कनेक्शन या यूडीपी प्रवाह को 4-ट्यूपल द्वारा परिभाषित किया गया है:

(source IP address, source port, destination IP address, destination port)

यहां तक ​​कि अगर आपके पास केवल एक आईपी पते के साथ एक वेब सर्वर मशीन है, और एक HTTP सर्वर सॉफ्टवेयर पैकेज केवल पोर्ट 80 पर सुन रहा है, तो यह सैद्धांतिक रूप से 65536 कनेक्शन प्रति क्लाइंट आईपी पते से जुड़ सकता है । तो क्लाइंट आईपी एड्रेस 1 से 64Ki कनेक्शन, क्लाइंट आईपी एड्रेस 2 आदि से 64Ki कनेक्शन।

तो प्रोटोकॉल समर्थन करते हैं, पहली बार सन्निकटन, एक एकल IPv4 पते पर एक एकल टीसीपी या यूडीपी पोर्ट पर 2 48 कनेक्शन / प्रवाह। दोनों टीसीपी और यूडीपी पर विचार करें, और दोनों IPv4 के एड्रेस स्पेस और IPv6 के कॉस्मासिक / कॉमिकली बड़े एड्रेस स्पेस के साथ, और आप देख सकते हैं कि प्रोटोकॉल स्वयं कभी भी समवर्ती कनेक्शन की संख्या की सीमा का स्रोत होने की संभावना नहीं है जो एक मेजबान है संभाल सकते हैं।

इसी तरह, टीसीपी या यूडीपी प्रोटोकॉल में कुछ भी नहीं है जो क्लाइंट सर्वर को एक एकल आईपी पते पर एकल स्रोत पोर्ट का उपयोग करने के लिए कई आउटगोइंग कनेक्शन को विभिन्न सर्वर पते और पोर्ट बनाने के लिए रखता है। कभी-कभी किसी दिए गए OS के नेटवर्किंग API को यह आसान नहीं बना सकता है, लेकिन यह याद रखना महत्वपूर्ण है कि, आदरणीय पुराना "[BSD] सॉकेट्स" API TCP और UDP का केवल एक API है। टीसीपी और यूडीपी में क्षमताएं हो सकती हैं जो पारंपरिक सॉकेट्स एपीआई द्वारा उजागर नहीं की जाती हैं।

इसलिए समवर्ती टीसीपी कनेक्शनों की संख्या या यूडीपी एक दिया हुआ मेजबान प्रवाह संभाल सकता है जो पोर्ट नंबरों द्वारा इतना सीमित नहीं है, लेकिन सिस्टम संसाधनों जैसे कि रैम स्पेस और सीपीयू समय उन सभी कनेक्शनों पर नज़र रखने और उन सभी की सेवा करने के लिए लेता है। साथ ही एक OS का कार्यान्वयन-विशिष्ट विवरण कृत्रिम सीमाएं लगा सकता है। उदाहरण के लिए, यूनिक्स में "सब कुछ एक फ़ाइल है" दर्शन, हर टीसीपी कनेक्शन या यूडीपी प्रवाह के लिए एक फ़ाइल विवरणक हो सकता है। यदि आपके यूनिक्स कर्नेल में फ़ाइल डिस्क्रिप्टर की संख्या की सीमा है, तो यह ट्रैक कर सकता है, उस फाइल डिस्क्रिप्टर की सीमा समवर्ती टीसीपी कनेक्शन की संख्या पर एक कृत्रिम सीमा है या यूडीपी आपके कर्नेल को संभाल सकता है।


2
इस उत्कृष्ट उत्तर में en.wikipedia.org/wiki/C10k_problem को लिंक करने लायक हो सकता है ।
क्रिसइन्डेमोंटोन

1
मैंने एक टीसीपी सर्वर लागू किया जो हर संभव आईपी पते से एक साथ 65,534 कनेक्शन समायोजित कर सकता है। यह बहुत कुछ नहीं करता है - यह केवल कुछ चरित्र प्रतिस्थापन के साथ आने वाले पाठ को इकोस करता है - लेकिन यह एक बहुत छोटे हार्डवेयर प्लेटफॉर्म पर चलता है। मुझे नहीं लगता कि यह काफी आरएफसी-अनुरूप है, लेकिन यह बहुत अच्छी तरह से काम करने के लिए लगता है, न तो यह जानने के बावजूद कि इसके अधिकांश बंदरगाहों पर कितने टीसीपी कनेक्शन खुले हैं।
Supercat

2
यदि आपको वास्तव में दो मशीनों के बीच 65536 से अधिक कनेक्शन कनेक्ट करने की आवश्यकता है, तो आप कई आईपी पते का उपयोग करने के लिए मशीनें स्थापित कर सकते हैं। प्रत्येक आईपी पते को आप दो मशीनों में जोड़ते हैं, अधिकतम कनेक्शन की संख्या में चतुष्कोणीय रूप से वृद्धि होती है (कम से कम सिद्धांत रूप में, आप संभवतः पहले अन्य समस्याओं को पूरा करेंगे)।
रेयान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.