क्या टीसीपी 65535 से अधिक पोर्ट प्रदान कर सकता है?


50

क्या लिनक्स सिस्टम को सेटअप करना संभव है ताकि यह 65,535 से अधिक पोर्ट प्रदान करे? किसी दिए गए सिस्टम पर 65k से अधिक डेमॉन सुनने का इरादा होगा।

स्पष्ट रूप से बंदरगाहों का उपयोग किया जा रहा है, इसलिए यह उन कारणों के लिए संभव नहीं है, इसलिए इसे समझने की कोशिश में एक सैद्धांतिक अभ्यास के रूप में सोचें जहां टीसीपी इस तरह से कुछ करने में प्रतिबंधात्मक होगा।


11
इस प्रश्न की प्रेरणा क्या है? आप क्यों चाहते हैं कि कई डेमॉन सुन रहे हैं?
वॉरेन यंग

1
इसके अलावा, आप एक कठिन समय शुरू करने जा रहे हैं जो कई प्रक्रियाएं हैं। (मुझे लगता है कि आपको प्रति डेमन प्रति एक प्रक्रिया का मतलब है।)
वॉरेन यंग

13
हालांकि, ऐसा कुछ भी नहीं है जो आपको औपचारिक रूप से एक साथ 65 जोड़े पतलून पहनने से रोकता है, लेकिन यह कोशिश करना व्यावहारिक मुहावरा होगा। यदि आप मुझे एक मशीन दिखा सकते हैं जो फलस्वरूप 10'000 टीसीपी पोर्ट को समवर्ती रूप से संसाधित कर सकती है, तो यह एक दिलचस्प सार प्रश्न हो सकता है।
एमएसडब्ल्यू

13
इस क्यू की प्रकृति पूरी तरह से सैद्धांतिक है, टीसीपी और बंदरगाहों की # सीमाओं को समझने के अलावा कोई अन्य उद्देश्य नहीं है।
SLM

1
हालाँकि, आपने इसे इस तरह से चित्रित किया है कि यह विभिन्न व्यावहारिक मामलों से जुड़ा है जिसमें 64 k + डेमॉन प्रक्रियाओं द्वारा आवश्यक RAM स्थान शामिल है। श्रोता सीमा को हिट करने से पहले आपके पास अब या अगले दशक तक कोई भी मशीन होने की संभावना है। यदि आप केवल टीसीपी श्रोताओं के बारे में बात करने के सवाल को दोहराते हैं , तो इसके बारे में डेमॉन के बारे में पूरी तरह से बात छोड़ दें, तो यह समस्या दूर हो जाती है। उदाहरण के लिए, आप प्रत्येक एकल-थ्रेडेड इवेंट-चालित डेमन को एक हज़ार सॉकेट असाइन करके स्टैक स्पेस को परिशोधन कर सकते हैं।
वॉरेन यंग

जवाबों:


84

टीसीपी के लिए आरएफसी: आरएफसी 793 - ट्रांसमिशन कंट्रोल प्रोटोकॉल को देखते हुए , इस तथ्य के कारण उत्तर नहीं प्रतीत होगा कि टीसीपी हेडर स्रोत / गंतव्य पोर्ट फ़ील्ड के लिए 16-बिट तक सीमित है।

    ss # १

क्या IPv6 चीजों में सुधार करता है?

नहीं, भले ही आईपीवी 6 हमें एक बहुत बड़ा आईपी एड्रेस स्पेस देगा, 32-बिट बनाम 128-बिट्स, यह पोर्ट संख्याओं के लिए 16-बिट्स के टीसीपी पैकेट सीमा में सुधार करने का कोई प्रयास नहीं करता है। दिलचस्प रूप से आईपीवी 6 के लिए आरएफसी: इंटरनेट प्रोटोकॉल, संस्करण 6 (आईपीवी 6) विशिष्टता , आईपी क्षेत्र को विस्तारित करने की आवश्यकता है।

जब TCP IPv6 पर चलता है, तो RFC 2460 के अनुसार, चेकसम की गणना करने के लिए उपयोग की जाने वाली विधि को बदल दिया जाता है :

किसी भी परिवहन या अन्य ऊपरी-परत प्रोटोकॉल जिसमें आईपी हेडर से पते शामिल हैं, इसकी चेकसम संगणना में आईपीवी 6 के उपयोग के लिए संशोधित किया जाना चाहिए, जिसमें 32-बिट आईपीवी 4 पते के बजाय 128-बिट आईपीवी 6 पते शामिल हैं।

                 ss # 2

तो आप अधिक पोर्ट कैसे प्राप्त कर सकते हैं?

एक दृष्टिकोण अधिक इंटरफेस का उपयोग करके अतिरिक्त आईपी पते को ढेर करना होगा। यदि आपके सिस्टम में कई एनआईसी हैं, तो यह आसान है, लेकिन यहां तक ​​कि केवल एक एनआईसी के साथ, कोई भी जरूरत पड़ने पर अधिक आईपी आवंटित करने के लिए वर्चुअल इंटरफेस (उर्फ उपनाम ) का उपयोग कर सकता है ।

नोट: उपनामों का उपयोग किया गया है iproute2जिसके द्वारा आप eth0इसके बजाय एकल इंटरफ़ेस (यानी ) पर आईपी पते को स्टैक करने के लिए उपयोग कर सकते हैं ।

उदाहरण

$ sudo ip link set eth0 up
$ sudo ip addr add 192.0.2.1/24 dev eth0
$ sudo ip addr add 192.0.2.2/24 dev eth0
$ ip addr show dev eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc
      pfifo_fast state DOWN qlen 1000
    link/ether 00:d0:b7:2d:ce:cf brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.1/24 brd 192.0.2.255 scope global eth1
    inet 192.0.2.2/24 scope global secondary eth1

स्रोत: iproute2: ifconfig के बाद का जीवन

संदर्भ


3
अकेले गंतव्य बंदरगाह का उपयोग करके 65,536+ डेमॉन के बीच चयन करना संभव नहीं होगा, लेकिन अगर किसी के पास असीमित मेमोरी और बैंडविड्थ है, तो प्रत्येक आने वाले बंदरगाह पर प्रत्येक अलग टीसीपी पते के साथ 32,000 से अधिक कनेक्शन हो सकते हैं।
सुपरकैट

7

क्या लिनक्स सिस्टम को सेटअप करना संभव है ताकि यह 65,535 से अधिक पोर्ट प्रदान करे?

नहीं।

किसी दिए गए सिस्टम पर 65k से अधिक डेमॉन सुनने का इरादा होगा।

फिर आपको आवश्यकता है:

  • एक iptablesकॉन्फ़िगरेशन जो ट्रैफ़िक सामग्री पर पुनर्निर्देशित करता है या

  • एक "सेवा ब्रोकर सेवा" या "मल्टीप्लेक्स सेवा" जो एक पोर्ट पर आने वाले कनेक्शन को स्वीकार करेगी और इसे "इसके पीछे" उपयुक्त डेमॉन पर ले जाएगी। यदि आप चाहते हैं कि मानक प्रोटोकॉल अनमॉडिफाइड हो जाएं तो आपको इस मल्टीप्लेक्स सेवा में प्रोटोकॉल सूँघने / पहचान को लागू करना पड़ सकता है, इस तरह से एक आईडीएस या लेयर -7 फ़ायरवॉल एलाज़ होगा; प्रोटोकॉल के महान बहुमत के साथ पूरी तरह से संभव है।

दूसरे आइटम के अनुसार, यदि आप वास्तव में चाहते हैं तो आप इस सेवा को 2 ^ 16 "पोर्ट" से अधिक संभाल सकते हैं। मुझे यकीन है कि 2 ^ 16 + श्रोताओं के चलने की तुलना में प्रदर्शन प्रभाव कम से कम होगा।

लिनक्स में डेमॉन यूनिक्स सॉकेट्स पर सुन सकता है जो फाइल सिस्टम में मौजूद हैं, इसलिए आपकी "मल्टीप्लेक्स सेवा" बाहरी पोर्ट की आंतरिक मैपिंग <-> आंतरिक यूनिक्स सॉकेट को बनाए रख सकती है। संभवतः आप किसी भी आधुनिक फाइल सिस्टम पर इनोड से बाहर निकलने से पहले एक कर्नेल प्रोसेस लिमिट (32Kbyte प्रोसेस?) में भाग लेंगे।


मैंने इसे अस्वीकार कर दिया क्योंकि आप कहते हैं कि यह संभव नहीं है, फिर यह समझाने के लिए कि यह कैसे एकाधिक आईपी का उपयोग करते हैं और संतुलन बनाने के लिए, बहुत भ्रामक गोल चक्कर रास्ते में।
सुपरजामी

2
एकल प्रणाली पर 64K से अधिक पोर्ट असंभव है। 64K से अधिक श्रोता संभव है, लेकिन आपके पास प्रॉक्सी या फ्रंटेंड श्रोता होना चाहिए जो आने वाले कनेक्शनों को सही वास्तविक "बैकेंड" श्रोताओं के लिए "विभाजित" करेगा। आप उदाहरण के लिए आंतरिक एनएटी से कई आंतरिक आईपी पते जैसे कुछ पागल कर सकते हैं।
लॉरेंस

2
गलत। लोग एकल प्रणाली पर आधा मिलियन समवर्ती कनेक्शन प्राप्त करने में सफल रहे हैं। हां, कई आईपी और लोड बैलेंसर (समान प्रणाली पर जरूरी नहीं) की आवश्यकता होती है, लेकिन एक एकल सिस्टम 64k से अधिक पोर्ट और यहां तक ​​कि 64k से अधिक श्रोताओं को सही करने पर खोल सकता है।
12

2

सिर्फ इसलिए कि कोई अच्छा जवाब नहीं है, मैं इसमें झंकार करना चाहता था।

ऐसा करने का एक तरीका आईपी विकल्प जोड़ना होगा जो पोर्ट एक्सटेंशन को निर्दिष्ट करता है। विकल्प को आईपी हेडर के वैकल्पिक हिस्से के भीतर फिट करने के लिए डिज़ाइन किया जाना चाहिए और अज्ञात हॉप्स द्वारा छोड़ दिया जाएगा।

आप इस विकल्प का उपयोग करेंगे और यह स्रोत, गंतव्य या दोनों पोर्ट संख्या का विस्तार करने के लिए जानकारी की जानकारी है।

सीमाएं मौजूदा सॉफ़्टवेयर में स्वचालित रूप से काम नहीं करने जा रही हैं, वैसे भी विकल्प को जोड़कर, उन्हें विकल्प का लाभ लेने के लिए फिर से लिखना होगा, भले ही यह कैसे लागू हो, मौजूदा सॉफ्टवेयर और फ़ायरवॉल या तो पैकेट की अनदेखी करेंगे या इसे हमेशा की तरह संसाधित करेंगे। स्रोत और गंतव्य पोर्ट फ़ील्ड में मान का उपयोग करना।

संक्षेप में यह करना आसान नहीं है और पैकेट के पेलोड में निहित एक पुन: प्रयोज्य श्रोता और डेटा का उपयोग करके बेहतर किया जाएगा।

आप सॉफ़्टवेयर में पोर्ट का पुन: उपयोग करने की अधिक आसानी से अनुमति दे सकते हैं, जो कई क्लाइंट कनेक्शन के लिए सर्वर के पोर्ट का पुन: उपयोग करके इस सीमा को पार करने में मदद कर सकता है।

उदाहरण के लिए Rtsp IP पैकेट के पेलोड में विभिन्न अन्य हेडर के साथ संयोजन में SessionId हेडर का उपयोग कर सकता है, यह निर्धारित करने के लिए कि अनुरोध किस संबंध में जारी किया गया था और इसके अनुसार कार्य करें यदि सॉकेट जिस से संदेश दिया गया था सॉकेट के समान नहीं है दूरस्थ पता जिसके लिए सत्र फिर से मेल खाता है, फिर एक या तो एक सत्र को प्रसंस्करण के लिए नए सॉकेट के साथ अद्यतन करने की अनुमति दे सकता है, आवेदन के आधार पर संदेश या कई अन्य क्रियाओं से इनकार कर सकता है।

एक Http सर्वर यह या किसी अन्य प्रकार का सर्वर भी कर सकता है।

बंदरगाहों के पुन: उपयोग की अनुमति देते समय याद रखने वाली महत्वपूर्ण बात यह है कि आपको स्रोत आईपी पते को भी ध्यान में रखना चाहिए।


-2

हाँ तुम कर सकते हो !

यह पहले किया गया है, उदाहरण के लिए एजहिल एन्क्रिप्शन सर्वर, wich है> 25.000.000 deamons ऑनलाइन चल रहा है।


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

क्या आप इस कथन के संदर्भ प्रदान कर सकते हैं? एक त्वरित खोज मुझे विश्वास दिलाती है कि यह बहुत सारी मशीनों पर वितरित किया गया है।
थॉमस गयोट-सायननेस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.