उच्च यातायात साइटें 65535 टीसीपी कनेक्शन से अधिक कैसे सेवा करती हैं?


29

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

जवाबों:


55

आप गलत तरीके से पोर्ट नंबरों को गलत तरीके से समझते हैं: एक सर्वर केवल एक पोर्ट को सुनता है और उस पोर्ट से कनेक्ट होने वाले क्लाइंट से बड़ी संख्या में ओपन सॉकेट हो सकता है।

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

तो व्यवहार में सर्वर केवल सीपीयू पावर, मेमोरी आदि द्वारा सीमित होता है, इसे सर्वर से टीसीपी कनेक्शन की संख्या से अनुरोधों को पूरा करना होता है।


मुझे आश्चर्य है कि वाहक ग्रेड
नैट

@ THELQ बिना CGN के प्रत्येक ग्राहक एक ही सर्वर से 65535 से अधिक कनेक्शन नहीं खोल सकता है, किसी भी क्लाइंट को लगभग एक ही सर्वर के कई कनेक्शन की आवश्यकता नहीं होनी चाहिए। CGN के साथ प्रत्येक CGN एक ही सर्वर से 65535 से अधिक कनेक्शन नहीं खोल सकता है, उन सभी को उस CGN का उपयोग करने वाले सभी ग्राहकों के बीच साझा करना होगा। क्या CGN एक साथ 65535 कनेक्शन एक सर्वर से और 65535 कनेक्शन दूसरे सर्वर से खोल सकता है, एक कार्यान्वयन विवरण है, जो विभिन्न CGN कार्यान्वयनों के बीच भिन्न हो सकता है।
कैस्परर्ड

सीजीएन में अधिक आईपी पते जोड़कर या अधिक सीजीएन तैनात करके सीमा को बढ़ाया जा सकता है। लेकिन आप केवल दोहरी स्टैक को भी तैनात कर सकते हैं। फिर IPv6 समर्थन वाले सर्वरों का कनेक्शन CGN के माध्यम से नहीं जाएगा, इसलिए वे कीमती पोर्ट नंबरों का उपभोग नहीं करेंगे।
कास्परड

14

आप गलत हैं - सॉकेट की विशिष्टता चार कारकों से निर्धारित होती है:

  1. स्थानीय आईपी पता
  2. स्थानीय बंदरगाह संख्या
  3. दूरस्थ आईपी पता
  4. दूरस्थ बंदरगाह संख्या

नेटवर्क सेवाओं की पेशकश करते समय, 1. और 2. आम तौर पर स्थिर होते हैं (उदाहरण के लिए आईपी 10.0.0.1, पोर्ट 80) लेकिन जब तक आप एक एकल क्लाइंट (या एक एनएटी गेटवे) से हजारों कनेक्शन की उम्मीद नहीं कर रहे हैं, तब तक आप धक्का नहीं देंगे। स्थानीय संसाधनों से बाहर चलाने से पहले 3. और 4. के संभावित संयोजनों के लिए सीमाएं।

इसलिए हालांकि व्यावहारिक रूप से एक क्लाइंट पहले से ही किसी अन्य गंतव्य आईपी पते के लिए कनेक्शन खोलने के लिए कनेक्शन के लिए उपयोग किए जाने वाले पोर्ट का उपयोग नहीं करेगा, पोर्ट नंबर की कमी लगभग किसी भी अनुप्रयोग के लिए आपकी समस्याओं में से कम से कम होने जा रही है - यह सर्वर पर हो या ग्राहक की ओर।

समस्या नेट गेटवे (राउटर) के साथ एक बहुत ही वास्तविक है जो कि अधिक संख्या में खुले आउटबाउंड कनेक्शन (जैसे टॉरेंट) के साथ ग्राहकों की सेवा कर रहा है - वहां आपको नेट के लिए उपलब्ध पोर्ट पूल के खाली होने के बाद पोर्ट नंबर की कमी दिखाई देगी। इस मामले में NAT गेटवे किसी भी अतिरिक्त संघों को बनाने में असमर्थ है, इस प्रकार प्रभावी रूप से ग्राहकों को इंटरनेट से काट रहा है।


2

सवाल यह था कि बड़े (> 64k) कनेक्शन को कैसे हैंडल किया जाए। दो सबसे आम तरीके हैं:

  • अधिक सर्वर जोड़ना, जो src / dst पतों की संख्या और पोर्ट नंबर ट्यूपल्स को बढ़ाता है। कई सर्वरों पर लोड साझा करने के कई तरीके हैं; DNS राउंड रॉबिन एक है; अन्य हैं

  • "कैरियर-ग्रेड एनएटी" को तैनात करें (जो मेरे विचार में एक दोस्त है जो सही ढंग से और सही ढंग से "crummier-ग्रेड NAT" के रूप में संदर्भित करता है)। यह अनिवार्य रूप से एक NAT का NAT है। अनुप्रयोगों के लिए इसका बहुत बुरा प्रभाव पड़ता है, लेकिन यह कुछ बड़े प्रदाता IPv4 स्पेस और / या पोर्ट नंबर से बाहर चलाने पर करते हैं, और / या वे IPv6 पर नहीं जाना चाहते हैं।


2
यदि आप शीर्षक से अधिक पढ़ते हैं, तो आप देखेंगे कि यह प्रश्न पोर्ट थकावट के बारे में है और ओपी को गलत तरीके से बताया गया कि यह कैसे काम करता है। यह जवाब वास्तव में उस मूल्य के लिए कुछ भी नया कैसे जोड़ता है?
एमडीएमरा

2
ओपी स्पष्ट रूप से पूछता है (और केवल शीर्षक में नहीं) "कैसे सर्वर अत्यधिक मात्रा में ... अनुरोधों का अनुभव कर रहे हैं"। सॉकेट्स कैसे काम करते हैं, इस पर भ्रम को छोड़कर, यह एक वैध सवाल है।
user8162

1
प्रश्न मध्य वाक्य को काटने का उत्कृष्ट कार्य। उस वाक्य का बाकी हिस्सा कहता है (more than the max port number):।
एमडीएमरा

2
शायद आपने उस हिस्से को याद किया जहां मैंने ओपी को निर्धारित किया था कि सॉकेट यांत्रिकी को समझ में नहीं आता है। मेरी राय है कि 64k पोर्ट से अधिक कैसे चर्चा के लिए एक वैध विषय है; मुझे खेद है कि अगर आप असहमत हैं, लेकिन यह सवाल था और वह था जिसके लिए मैंने कुछ जवाब दिए। आपने पूछा कि यह कैसे उत्तरदायी था; कि कैसे।
user8162

3
यह आधा सवाल है। बड़े चित्र का प्रश्न - जैसा कि ओपी के अंतिम वाक्य द्वारा समर्थित है - 64k बैरियर को कैसे तोड़ना है।
user8162
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.