टीसीपी का गुप्त हथियार: नेटवर्क प्रवाह नियंत्रण और नेटवर्क भीड़ नियंत्रण

टीसीपी विश्वसनीयता परिवहन
हम सभी टीसीपी प्रोटोकॉल को एक विश्वसनीय ट्रांसपोर्ट प्रोटोकॉल के रूप में जानते हैं, लेकिन यह ट्रांसपोर्ट की विश्वसनीयता कैसे सुनिश्चित करता है?

विश्वसनीय ट्रांसमिशन प्राप्त करने के लिए, कई कारकों पर विचार करने की आवश्यकता है, जैसे डेटा भ्रष्टाचार, हानि, दोहराव और आउट-ऑफ-ऑर्डर शार्ड। यदि इन समस्याओं को हल नहीं किया जा सकता है, तो विश्वसनीय ट्रांसमिशन प्राप्त नहीं किया जा सकता है।

इसलिए, विश्वसनीय संचरण प्राप्त करने के लिए TCP अनुक्रम संख्या, पावती उत्तर, पुनःप्रेषण नियंत्रण, कनेक्शन प्रबंधन और विंडो नियंत्रण जैसे तंत्रों का उपयोग करता है।

इस पेपर में, हम TCP की स्लाइडिंग विंडो, फ्लो कंट्रोल और कंजेशन कंट्रोल पर ध्यान केंद्रित करेंगे। अगले भाग में रीट्रांसमिशन मैकेनिज्म को अलग से कवर किया गया है।

नेटवर्क प्रवाह नियंत्रण
नेटवर्क फ्लो कंट्रोल या नेटवर्क ट्रैफ़िक कंट्रोल के रूप में जाना जाने वाला यह वास्तव में उत्पादकों और उपभोक्ताओं के बीच सूक्ष्म संबंधों की अभिव्यक्ति है। आप शायद काम पर या साक्षात्कारों में इस परिदृश्य से बहुत बार रूबरू हुए होंगे। यदि उत्पादक की उत्पादन क्षमता उपभोक्ता की उपभोग क्षमता से बहुत अधिक है, तो यह कतार को अनिश्चित काल तक बढ़ने का कारण बनेगा। अधिक गंभीर मामले में, आप जानते होंगे कि जब RabbitMQ संदेश बहुत अधिक जमा हो जाते हैं, तो यह पूरे MQ सर्वर के प्रदर्शन में गिरावट का कारण बन सकता है। TCP के लिए भी यही सच है; यदि इसे अनियंत्रित छोड़ दिया जाता है, तो नेटवर्क में बहुत अधिक संदेश डाल दिए जाएंगे, और उपभोक्ता अपनी क्षमता से अधिक हो जाएंगे, जबकि उत्पादक डुप्लिकेट संदेश भेजना जारी रखेंगे, जो नेटवर्क के प्रदर्शन को बहुत प्रभावित करेगा।

इस घटना को संबोधित करने के लिए, TCP प्रेषक को रिसीवर की वास्तविक रिसेप्शन क्षमता के आधार पर भेजे गए डेटा की मात्रा को नियंत्रित करने के लिए एक तंत्र प्रदान करता है, जिसे प्रवाह नियंत्रण के रूप में जाना जाता है। रिसीवर एक रिसीव विंडो बनाए रखता है, जबकि प्रेषक एक सेंड विंडो बनाए रखता है। यह ध्यान दिया जाना चाहिए कि ये विंडो केवल एक ही TCP कनेक्शन के लिए हैं और सभी कनेक्शन एक विंडो साझा नहीं करते हैं।

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

रिसीवर होस्ट प्रेषक को उस डेटा के आकार के बारे में सूचित करता है जिसे वह प्राप्त कर सकता है, और प्रेषक इस सीमा तक डेटा भेजता है। यह सीमा विंडो का आकार है, TCP हेडर याद है? एक रिसीव विंडो फ़ील्ड है, जिसका उपयोग यह इंगित करने के लिए किया जाता है कि रिसीवर कितने बाइट्स प्राप्त करने में सक्षम या इच्छुक है।

प्रेषक होस्ट समय-समय पर एक विंडो जांच पैकेट भेजेगा, जिसका उपयोग यह पता लगाने के लिए किया जाता है कि रिसीवर होस्ट अभी भी डेटा स्वीकार करने में सक्षम है या नहीं। जब रिसीवर के बफर के ओवरफ्लो होने का खतरा होता है, तो विंडो का आकार एक छोटे मान पर सेट किया जाता है ताकि प्रेषक को भेजे जाने वाले डेटा की मात्रा को नियंत्रित करने का निर्देश दिया जा सके।

यहां नेटवर्क प्रवाह नियंत्रण आरेख दिया गया है:

तट्राफिक कंट्रोल

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

पिछले नेटवर्क प्रवाह नियंत्रण में, हमने जो टाला वह यह था कि प्रेषक रिसीवर के कैश को डेटा से भर देता था, लेकिन हमें नहीं पता था कि नेटवर्क में क्या हो रहा था। आम तौर पर, कंप्यूटर नेटवर्क एक साझा वातावरण में होते हैं। परिणामस्वरूप, अन्य होस्ट के बीच संचार के कारण नेटवर्क भीड़भाड़ हो सकती है।

जब नेटवर्क भीड़भाड़ वाला हो, अगर बड़ी संख्या में पैकेट भेजे जाते रहें, तो इससे देरी और पैकेट खोने जैसी समस्याएं हो सकती हैं। इस बिंदु पर, TCP डेटा को फिर से भेजेगा, लेकिन फिर से भेजने से नेटवर्क पर बोझ बढ़ जाएगा, जिसके परिणामस्वरूप बड़ी देरी और अधिक पैकेट हानि होगी। यह एक दुष्चक्र में बदल सकता है और बड़ा होता जा सकता है।

इस प्रकार, TCP नेटवर्क पर हो रही घटनाओं को अनदेखा नहीं कर सकता। जब नेटवर्क भीड़भाड़ वाला होता है, तो TCP अपने द्वारा भेजे जाने वाले डेटा की मात्रा को कम करके खुद को बलिदान कर देता है।

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

कंजेशन विंडो क्या है? इसका सेंड विंडो से क्या संबंध है?

कंजेशन विंडो एक स्टेट वैरिएबल है जिसे प्रेषक द्वारा बनाए रखा जाता है जो यह निर्धारित करता है कि प्रेषक कितना डेटा भेज सकता है। कंजेशन विंडो नेटवर्क के कंजेशन स्तर के अनुसार गतिशील रूप से बदलती है।

सेंडिंग विंडो, सेंडर और रिसीवर के बीच सहमति से तय की गई विंडो का आकार है जो रिसीवर द्वारा प्राप्त किए जा सकने वाले डेटा की मात्रा को इंगित करता है। कंजेशन विंडो और सेंडिंग विंडो संबंधित हैं; सेंडिंग विंडो आमतौर पर कंजेशन और रिसीविंग विंडो के न्यूनतम के बराबर होती है, यानी swnd = min(cwnd, rwnd)।

भीड़भाड़ वाली खिड़की cwnd निम्नानुसार बदलती है:

यदि नेटवर्क में कोई संकुलता नहीं है, अर्थात कोई पुनःसंचरण समय समाप्ति नहीं होती है, तो संकुलता विंडो बढ़ जाती है।

यदि नेटवर्क में भीड़भाड़ है, तो भीड़भाड़ विंडो कम हो जाती है।

प्रेषक यह देखकर निर्धारित करता है कि नेटवर्क में भीड़भाड़ है या नहीं कि ACK पावती पैकेट निर्दिष्ट समय के भीतर प्राप्त हुआ है या नहीं। यदि प्रेषक को निर्दिष्ट समय के भीतर ACK पावती पैकेट प्राप्त नहीं होता है, तो यह माना जाता है कि नेटवर्क में भीड़भाड़ है।

कंजेशन विंडो के अलावा, अब TCP कंजेशन कंट्रोल एल्गोरिदम पर चर्चा करने का समय आ गया है। TCP कंजेशन कंट्रोल एल्गोरिदम में तीन मुख्य भाग होते हैं:

धीमी शुरुआत:प्रारंभ में, cwnd संकुलन विंडो अपेक्षाकृत छोटी होती है, और प्रेषक नेटवर्क की क्षमता के साथ शीघ्रता से अनुकूलन करने के लिए संकुलन विंडो को तेजी से बढ़ाता है।
भीड़ को परिहार:जब संकुलन विंडो एक निश्चित सीमा से अधिक हो जाती है, तो प्रेषक संकुलन विंडो की वृद्धि दर को धीमा करने और नेटवर्क पर अधिक भार से बचने के लिए रैखिक तरीके से संकुलन विंडो को बढ़ाता है।
तेजी से पुनःप्राप्ति:यदि संकुलन होता है, तो प्रेषक संकुलन विंडो को आधा कर देता है और प्राप्त डुप्लिकेट एकेएस के माध्यम से नेटवर्क रिकवरी के स्थान को निर्धारित करने के लिए तीव्र रिकवरी स्थिति में प्रवेश करता है, और फिर संकुलन विंडो को बढ़ाना जारी रखता है।

धीमी शुरुआत
जब कोई TCP कनेक्शन स्थापित होता है, तो कंजेशन विंडो cwnd को शुरू में न्यूनतम MSS (अधिकतम सेगमेंट आकार) मान पर सेट किया जाता है। इस तरह, प्रारंभिक भेजने की दर लगभग MSS/RTT बाइट्स/सेकंड होती है। वास्तविक उपलब्ध बैंडविड्थ आमतौर पर MSS/RTT से बहुत अधिक होती है, इसलिए TCP इष्टतम भेजने की दर ढूँढना चाहता है, जिसे धीमी गति से शुरू करके हासिल किया जा सकता है।

धीमी गति से शुरू होने वाली प्रक्रिया में, कंजेशन विंडो cwnd का मान 1 MSS पर आरंभ किया जाएगा, और हर बार जब प्रेषित पैकेट खंड को स्वीकार किया जाएगा, तो cwnd का मान एक MSS से बढ़ जाएगा, यानी cwnd का मान 2 MSS हो जाएगा। उसके बाद, पैकेट खंड के प्रत्येक सफल प्रसारण के लिए cwnd का मान दोगुना हो जाता है, और इसी तरह आगे भी। विशिष्ट वृद्धि प्रक्रिया को निम्न चित्र में दिखाया गया है।

 नेटवर्क संकुलन नियंत्रण

हालाँकि, भेजने की दर हमेशा नहीं बढ़ सकती; वृद्धि को कभी न कभी तो रुकना ही है। तो, भेजने की दर में वृद्धि कब समाप्त होती है? धीमी शुरुआत आम तौर पर कई तरीकों में से एक तरीके से भेजने की दर में वृद्धि को समाप्त करती है:

पहला तरीका धीमी शुरुआत की प्रेषण प्रक्रिया के दौरान पैकेट हानि का मामला है। जब पैकेट हानि होती है, तो TCP प्रेषक की भीड़भाड़ वाली विंडो cwnd को 1 पर सेट करता है और धीमी शुरुआत वाली प्रक्रिया को फिर से शुरू करता है। इस बिंदु पर, धीमी शुरुआत सीमा ssthresh की अवधारणा पेश की जाती है, जिसका प्रारंभिक मूल्य पैकेट हानि उत्पन्न करने वाले cwnd के मूल्य का आधा होता है। यानी, जब भीड़भाड़ का पता चलता है, तो ssthresh का मूल्य विंडो मूल्य का आधा होता है।

दूसरा तरीका सीधे स्लो-स्टार्ट थ्रेशोल्ड ssthresh के मान से सहसंबंधित करना है। चूँकि ssthresh का मान कंजेशन का पता लगने पर विंडो मान का आधा होता है, इसलिए जब cwnd ssthresh से बड़ा होता है, तो प्रत्येक डबलिंग के साथ पैकेट लॉस हो सकता है। इसलिए, cwnd को ssthresh पर सेट करना सबसे अच्छा है, जिससे TCP कंजेशन कंट्रोल मोड पर स्विच हो जाएगा और स्लो-स्टार्ट खत्म हो जाएगा।

धीमी शुरुआत को समाप्त करने का अंतिम तरीका यह है कि यदि तीन अनावश्यक ACK का पता लगाया जाता है, तो TCP एक तेज़ पुनःसंचरण करता है और पुनर्प्राप्ति स्थिति में प्रवेश करता है। (यदि यह स्पष्ट नहीं है कि तीन ACK पैकेट क्यों हैं, तो इसे पुनःसंचरण तंत्र में अलग से समझाया जाएगा।)

भीड़ को परिहार
जब TCP कंजेशन कंट्रोल स्टेट में प्रवेश करता है, तो cwnd को कंजेशन थ्रेशोल्ड ssthresh के आधे पर सेट किया जाता है। इसका मतलब यह है कि हर बार पैकेट सेगमेंट प्राप्त होने पर cwnd का मान दोगुना नहीं किया जा सकता है। इसके बजाय, एक अपेक्षाकृत रूढ़िवादी दृष्टिकोण अपनाया जाता है जिसमें प्रत्येक ट्रांसमिशन पूरा होने के बाद cwnd का मान केवल एक MSS (अधिकतम पैकेट सेगमेंट लंबाई) से बढ़ता है। उदाहरण के लिए, भले ही 10 पैकेट सेगमेंट स्वीकार किए जाते हैं, cwnd का मान केवल एक MSS से बढ़ेगा। यह एक रैखिक विकास मॉडल है और इसमें वृद्धि पर एक ऊपरी सीमा भी है। जब पैकेट हानि होती है, तो cwnd का मान MSS में बदल जाता है, और ssthresh का मान cwnd के आधे पर सेट किया जाता है। या यह 3 अनावश्यक ACK प्रतिक्रियाएँ प्राप्त होने पर MSS की वृद्धि को भी रोक देगा। यदि cwnd के मान को आधा करने के बाद भी तीन अनावश्यक acks प्राप्त होते हैं, तो ssthresh का मान cwnd के आधे मान के रूप में दर्ज किया जाता है और तेज़ रिकवरी स्टेट में प्रवेश किया जाता है।

तेजी से पुनःप्राप्ति
फास्ट रिकवरी अवस्था में, प्रत्येक प्राप्त किए गए अनावश्यक ACK के लिए कंजेशन विंडो cwnd का मान एक MSS से बढ़ जाता है, अर्थात, वह ACK जो क्रम में नहीं आता है। यह नेटवर्क में सफलतापूर्वक प्रसारित किए गए पैकेट सेगमेंट का उपयोग करके ट्रांसमिशन दक्षता को यथासंभव बेहतर बनाने के लिए है।

जब खोए हुए पैकेट सेगमेंट का ACK आता है, तो TCP cwnd का मान घटा देता है और फिर कंजेशन अवॉइडेंस स्टेट में प्रवेश करता है। यह कंजेशन विंडो के आकार को नियंत्रित करने और नेटवर्क कंजेशन को और अधिक बढ़ने से रोकने के लिए है।

यदि कंजेशन कंट्रोल स्टेट के बाद टाइमआउट होता है, तो नेटवर्क की स्थिति अधिक गंभीर हो जाती है और TCP कंजेशन अवॉइडेंस स्टेट से स्लो-स्टार्ट स्टेट में माइग्रेट हो जाता है। इस मामले में, कंजेशन विंडो cwnd का मान 1 MSS, अधिकतम पैकेट सेगमेंट लंबाई पर सेट किया जाता है, और स्लो-स्टार्ट थ्रेशोल्ड ssthresh का मान cwnd के आधे पर सेट किया जाता है। इसका उद्देश्य ट्रांसमिशन दर और नेटवर्क कंजेशन की डिग्री को संतुलित करने के लिए नेटवर्क के ठीक होने के बाद कंजेशन विंडो के आकार को फिर से धीरे-धीरे बढ़ाना है।

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

अगले भाग में, हम TCP के पुनःसंचरण तंत्र की विस्तार से जाँच करेंगे। विश्वसनीय संचरण प्राप्त करने के लिए पुनःसंचरण तंत्र TCP का एक महत्वपूर्ण हिस्सा है। यह खोए हुए, दूषित या विलंबित डेटा को पुनःसंचरण करके डेटा के विश्वसनीय संचरण को सुनिश्चित करता है। पुनःसंचरण तंत्र के कार्यान्वयन सिद्धांत और रणनीति को अगले भाग में विस्तार से पेश किया जाएगा और उसका विश्लेषण किया जाएगा। बने रहें!


पोस्ट करने का समय: फ़रवरी-24-2025