एकल वेब सर्वर पर कितने क्लाइंट कनेक्शन बनाए जाते हैं?


16

वास्तव में मैं कंप्यूटर नेटवर्क सीख रहा हूं और इसके दौरान, मैं उलझन में हूं कि एक वेब सर्वर कई कनेक्शन कैसे बनाए रखता है?

राज्य करने के लिए, मैंने सीखा कि कुछ गोग्लिंग गर्त है कि सॉकेट प्रत्येक क्लाइंट अनुरोध को संभालता है।

तो चलो कहते हैं कि एक वेब सर्वर है और कह सकते हैं कि आईपी के साथ 2 क्लाइंट

Client A: 5.5.5.5
Client B: 10.10.10.10 

वे दोनों पोर्ट 80 पर सर्वर से कनेक्ट करने का प्रयास करते हैं

अब, मुझे जो भी मिला है, उसे देखने से, आने वाले अनुरोधों के लिए सर्वर पोर्ट 80 पर सुनता है । फिर ग्राहक A को सर्वर से कनेक्ट करने का प्रयास करने (टीसीपी / आईपी कनेक्शन बनाने) की सुविधा देता है। जिसके दौरान इन दोनों के बीच एक सॉकेट बनाया जाता है। फिर इसे इसके आगे के संचार के लिए अलग थ्रेड के रूप में निष्पादित किया जाता है जिससे सर्वर फिर से उस विशेष पोर्ट पर अन्य क्लाइंट अनुरोधों को सुन सकता है। और क्लाइंट B उसी तरह जोड़ता है।

अब मेरा पहला सवाल है:

1. How does server communicate with these two clients simultaneously  
   after the connection has been established?

अब व्यावहारिक रूप से केवल 2 ग्राहक ही नहीं बल्कि हजारों और लाखों उपयोगकर्ता एक सर्वर से जुड़ सकते हैं।

फिर मेरा अगला प्रश्न है:

2. Now, how do those thousands of clients get connected to a single server?

   If we assume every client is connected to the server through wire, it is not 
   practically possible to maintain that many sockets on a hardware for
   connection. How those thousands connections are made and handled?

अंत में, मेरा तीसरा प्रश्न है:

3. Above I said (actually heard) how **client A** connected to the the server
   and similarly the client B.

   But I didn't get the part stating "after a TCP/IP connection is made they
   continue separately in a separate socket and making server to listen for 
   other client requests." What does that mean? If one client is communicating
   to the server, how come other can communicate at the same time to same server.

   Isn't it like while a student is asking question to a teacher, other can't
   ask at the same time since that particular student is busy or occupying the
   teacher at the moment so others should wait, which we compare than client B 
   should wait when client A is communicating.

ये मेरे मूल प्रश्न हैं जो मुझे नहीं मिल रहे हैं। अगर मुझे यह सब गलत लग रहा है तो कृपया मुझे सुधारें। आप मुझे कुछ किताबें / पीडीएफ़ पढ़ने के लिए सुझाव दे सकते हैं कि क्या उत्तर विस्तृत हैं या विशेष रूप से विशिष्ट भाग पर केंद्रित नहीं हैं। धन्यवाद


क्या किसी उत्तर ने आपकी मदद की? यदि हां, तो आपको उत्तर को स्वीकार करना चाहिए ताकि प्रश्न हमेशा के लिए पॉपअप न हो जाए, उत्तर की तलाश में है। वैकल्पिक रूप से, आप अपना स्वयं का उत्तर प्रदान कर सकते हैं और स्वीकार कर सकते हैं।
रॉन Maupin

जवाबों:


6

अब, मुझे जो भी मिला है, उसे देखने से, आने वाले अनुरोधों के लिए सर्वर पोर्ट 80 पर सुनता है।

दरअसल, अधिक विशेष रूप से एक विशेष प्रकार का सॉकेट है जिसे "सुनने" सॉकेट कहा जाता है।

आम तौर पर एक सॉकेट स्थानीय आईपी, स्थानीय पोर्ट, रिमोट आईपी और रिमोट पोर्ट के संयोजन से जुड़ा होता है।

एक सुनने वाला सॉकेट अलग है। यह किसी भी विशिष्ट रिमोट आईपी और पोर्ट से जुड़ा नहीं है। यह एक विशिष्ट स्थानीय बंदरगाह से जुड़ा है। यह एक विशिष्ट स्थानीय आईपी के साथ जुड़ा हो सकता है या नहीं भी हो सकता है।

आम तौर पर आपके वेब सर्वर में 80 के स्थानीय पोर्ट के साथ एक सुनने वाला सॉकेट होगा

फिर ग्राहक को सर्वर से कनेक्ट करने की कोशिश करता है (टीसीपी / आईपी कनेक्शन बनाने की कोशिश करता है)। जिसके दौरान इन दोनों के बीच एक सॉकेट बनाया जाता है।

एक जोड़ी सॉकेट वास्तव में क्लाइंट पर, एक सर्वर पर।

क्लाइंट एप्लिकेशन एक सॉकेट बनाता है और क्लाइंट ओएस को सर्वर से कनेक्ट करने के लिए कहता है।

क्लाइंट OS एक यादृच्छिक स्थानीय पोर्ट आवंटित करता है, एक स्थानीय आईपी चुनता है (सामान्य रूप से जिस इंटरफेस के आधार पर पैकेट को बाहर भेजा जाएगा) और दूरस्थ आईपी और क्लाइंट एप्लिकेशन द्वारा अनुरोधित पोर्ट में भरता है। फिर यह सर्वर से कनेक्ट होने की प्रक्रिया शुरू करता है।

सर्वर ओएस सुनने वाले सॉकेट के धारक को सूचित करता है कि एक नया कनेक्शन आ रहा है। सर्वर एप्लिकेशन कनेक्शन को स्वीकार करता है और इसे संभालने के लिए एक नया सॉकेट बनाया जाता है।

एकाधिक थ्रेड्स या यहां तक ​​कि प्रक्रियाएं समान लिस्टिंग सॉकेट की निगरानी कर सकती हैं। OS यह सुनिश्चित करेगा कि उनमें से किसी एक को दिए गए कनेक्शन को स्वीकार करना है।

फिर इसे इसके आगे संचार के लिए अलग धागे के रूप में निष्पादित किया जाता है

यह सर्वर एप्लिकेशन के कार्यान्वयनकर्ता पर निर्भर है। वे एक से अधिक थ्रेड्स का उपयोग करने का विकल्प चुन सकते हैं या वे "चुनिंदा" या "पोल" जैसे एपीआई का उपयोग करने का विकल्प चुन सकते हैं जो किसी भी थ्रेड को गतिविधि के लिए कई सॉकेट्स की निगरानी करने की अनुमति देता है।


  1. कनेक्शन स्थापित होने के बाद सर्वर इन दोनों ग्राहकों के साथ एक साथ कैसे संवाद करता है ?

सर्वर ओएस सोर्स आईपी, सोर्स पोर्ट, डेस्टिनेशन आईपी और डेस्टिनेशन पोर्ट के संयोजन से सॉकेट्स के खिलाफ पैकेटों का मिलान करेगा और उन्हें उपयुक्त सॉकेट में वितरित करेगा।

  1. अब, उन हजारों ग्राहकों को एक ही सर्वर से कैसे जोड़ा जाए?

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

इस संदर्भ में "सॉकेट" एक भौतिक सॉकेट को संदर्भित नहीं करता है, बस ऑपरेटिंग सिस्टम के भीतर एक डेटा संरचना को।

अभी भी सीमाएं हैं, हजारों एक आधुनिक सर्वर पर ईजीली है, लाखों मुश्किल हो जाता है।

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

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

और बेशक कई सर्वर आजकल कई प्रोसेसर कोर है।


एक नया कनेक्शन, सॉकेट नहीं, निर्मित हो जाता है। मुझे लगता है कि आप एक सॉकेट के बारे में ओपी के भ्रम को बढ़ा रहे हैं।

ऐसा लगता है कि समस्या यह है कि आरएफसी सॉकेट की परिभाषा में वास्तविक अभ्यास से अलग है।

मैंने सिर्फ तीन प्रमुख ऑपरेटिंग सिस्टमों के लिए "स्वीकार" के लिए प्रलेखन देखा और उनमें से सभी ने एक नया सॉकेट बनाने की बात स्वीकार की।

http://man7.org/linux/man-pages/man2/accept.2.html

https://www.freebsd.org/cgi/man.cgi?query=accept&sektion=2

https://msdn.microsoft.com/en-us/library/windows/desktop/ms737526%28v=vs.85%29.aspx


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

इसके अलावा 2. मेरा मतलब है कि वास्तविक भौतिक जैसे बंदरगाह जब आप किसी नेटवर्क से कनेक्ट करना चाहते हैं, जैसे LAN में। मैं यहाँ शब्दों का गलत अर्थ निकाल सकता हूँ। मुझे लगता है कि मैं फिर से Google से कनेक्ट करने देता हूं। और जैसे लाखों अन्य लोग उस सिंगल google सर्वर से जुड़ रहे हैं। मैं अपने घर से वायरलेस तरीके से google से कनेक्ट करता हूं और इसी तरह उन मिलियन लोगों से। ये कनेक्शन सर्वर द्वारा कैसे संभाले जाते हैं। जैसे मेरे कंप्यूटर में इंटरनेट का उपयोग करने के लिए मुझे अपने राउटर या वायरलेस तरीके से पोर्ट से कनेक्ट करने की आवश्यकता है। क्या उनके पास शारीरिक रूप से ऐसे लाखों पोर्ट हैं? अब मुझे लगता है कि यह सर्वर के बारे में नहीं है, लेकिन वायरलेस कनेक्शन है?
सगरियाल

" आम तौर पर एक सॉकेट स्थानीय आईपी, स्थानीय पोर्ट, रिमोट आईपी और रिमोट पोर्ट के संयोजन से जुड़ा होता है। " RFC की परिभाषा से एक सॉकेट स्थानीय आईपी एड्रेस और टीसीपी पोर्ट है, और इसका दूरदराज के पते से कोई लेना-देना नहीं है। । एक कनेक्शन स्थानीय और दूरस्थ सॉकेट्स का संयोजन है, इसलिए स्थानीय आईपी पता, स्थानीय टीसीपी पोर्ट, रिमोट आईपी एड्रेस और रिमोट टीसीपी पोर्ट। आपने मुद्दे को उलझा दिया है।
रॉन Maupin

2
" सर्वर ओएस सुनने वाले सॉकेट के धारक को सूचित करता है कि एक नया कनेक्शन आ रहा है। सर्वर एप्लिकेशन कनेक्शन को स्वीकार करता है और इसे संभालने के लिए एक नया सॉकेट बनाया जाता है। " नया कनेक्शन , सॉकेट नहीं । मुझे लगता है कि आप एक सॉकेट के बारे में ओपी के भ्रम को बढ़ा रहे हैं।
रॉन Maupin

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