TCP विश्वसनीयता यातायात
हामी सबै TCP प्रोटोकललाई भरपर्दो यातायात प्रोटोकलको रूपमा परिचित छौं, तर यसले यातायातको विश्वसनीयता कसरी सुनिश्चित गर्छ?
भरपर्दो प्रसारण प्राप्त गर्न, धेरै कारकहरू विचार गर्न आवश्यक छ, जस्तै डेटा भ्रष्टाचार, हानि, दोहोरिएको, र क्रम बाहिरको शार्डहरू। यदि यी समस्याहरू समाधान गर्न सकिएन भने, भरपर्दो प्रसारण प्राप्त गर्न सकिँदैन।
त्यसकारण, 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 को मान १ MSS मा सुरु गरिनेछ, र प्रत्येक पटक प्रसारित प्याकेट खण्ड स्वीकार गर्दा, cwnd को मान एक MSS ले बढाइनेछ, अर्थात्, cwnd को मान २ MSS हुनेछ। त्यसपछि, प्याकेट खण्डको प्रत्येक सफल प्रसारणको लागि cwnd को मान दोब्बर गरिन्छ, र यस्तै। विशिष्ट वृद्धि प्रक्रिया निम्न चित्रमा देखाइएको छ।
यद्यपि, पठाउने दर सधैं बढ्न सक्दैन; वृद्धि कहिलेकाहीं समाप्त हुनुपर्छ। त्यसोभए, पठाउने दर वृद्धि कहिले समाप्त हुन्छ? ढिलो-सुरुले सामान्यतया पठाउने दरमा वृद्धिलाई धेरै तरिकाहरू मध्ये एकमा समाप्त गर्छ:
पहिलो तरिका भनेको ढिलो सुरुवातको पठाउने प्रक्रियाको क्रममा प्याकेट हराउने अवस्था हो। जब प्याकेट हराउँछ, TCP ले प्रेषकको कन्जेसन विन्डो cwnd लाई 1 मा सेट गर्छ र ढिलो-स्टार्ट प्रक्रिया पुन: सुरु गर्छ। यस बिन्दुमा, स्लो स्टार्ट थ्रेसहोल्ड ssthresh को अवधारणा प्रस्तुत गरिन्छ, जसको प्रारम्भिक मान cwnd को मानको आधा हुन्छ जसले प्याकेट हराउँछ। अर्थात्, जब कन्जेसन पत्ता लाग्छ, ssthresh को मान विन्डो मानको आधा हुन्छ।
दोस्रो तरिका भनेको ढिलो-सुरुवात थ्रेसहोल्ड ssthrash को मानसँग प्रत्यक्ष रूपमा सम्बन्धित हुनु हो। कन्जेसन पत्ता लाग्दा ssthresh को मान विन्डो मानको आधा हुने भएकोले, cwnd ssthresh भन्दा ठूलो हुँदा प्रत्येक दोब्बर हुँदा प्याकेट हानि हुन सक्छ। त्यसकारण, cwnd लाई ssthresh मा सेट गर्नु उत्तम हुन्छ, जसले TCP लाई कन्जेसन नियन्त्रण मोडमा स्विच गर्न र ढिलो-सुरुवात समाप्त गर्न बाध्य पार्नेछ।
ढिलो सुरुवात समाप्त हुने अन्तिम तरिका भनेको यदि तीनवटा अनावश्यक acks पत्ता लागेमा, TCP ले द्रुत पुन: प्रसारण गर्दछ र रिकभरी अवस्थामा प्रवेश गर्दछ। (यदि तीनवटा ACK प्याकेटहरू किन छन् भन्ने कुरा स्पष्ट छैन भने, यसलाई पुन: प्रसारण संयन्त्रमा छुट्टै व्याख्या गरिनेछ।)
भीडभाडबाट बच्ने उपाय
जब TCP कन्जेसन नियन्त्रण स्थितिमा प्रवेश गर्छ, cwnd कन्जेसन थ्रेसहोल्ड ssthrash को आधामा सेट गरिन्छ। यसको अर्थ प्रत्येक पटक प्याकेट खण्ड प्राप्त गर्दा cwnd को मान दोब्बर गर्न सकिँदैन। यसको सट्टा, एक अपेक्षाकृत रूढिवादी दृष्टिकोण अपनाइन्छ जसमा प्रत्येक प्रसारण पूरा भएपछि cwnd को मान केवल एक MSS (अधिकतम प्याकेट खण्ड लम्बाइ) ले बढाइन्छ। उदाहरणका लागि, यदि १० प्याकेट खण्डहरू स्वीकार गरिए पनि, cwnd को मान केवल एक MSS ले बढ्नेछ। यो एक रेखीय वृद्धि मोडेल हो र यसको वृद्धिमा माथिल्लो सीमा पनि छ। जब प्याकेट हानि हुन्छ, cwnd को मान MSS मा परिवर्तन हुन्छ, र ssthresh को मान cwnd को आधामा सेट गरिन्छ। वा यसले ३ अनावश्यक ACK प्रतिक्रियाहरू प्राप्त हुँदा MSS को वृद्धिलाई पनि रोक्नेछ। यदि cwnd को मान आधा गरेपछि पनि तीन अनावश्यक acks प्राप्त हुन्छन् भने, ssthresh को मान cwnd को आधा मानको रूपमा रेकर्ड गरिन्छ र द्रुत रिकभरी अवस्था प्रविष्ट गरिन्छ।
छिटो रिकभरी
फास्ट रिकभरी अवस्थामा, प्रत्येक प्राप्त रिडन्डन्ट ACK को लागि कन्जेसन विन्डो cwnd को मान एक MSS ले बढाइन्छ, अर्थात्, ACK जुन क्रमबद्ध रूपमा आइपुग्दैन। यो नेटवर्कमा सफलतापूर्वक प्रसारित गरिएका प्याकेट खण्डहरूको प्रयोग गर्नको लागि हो जसले गर्दा प्रसारण दक्षतालाई सकेसम्म धेरै सुधार गर्न सकिन्छ।
हराएको प्याकेट खण्डको ACK आइपुग्दा, TCP ले cwnd को मान घटाउँछ र त्यसपछि भीडभाडबाट बच्ने अवस्थामा प्रवेश गर्छ। यो भीडभाड विन्डोको आकार नियन्त्रण गर्न र नेटवर्क भीडभाडलाई अझ बढाउनबाट जोगाउनको लागि हो।
यदि कन्जेसन नियन्त्रण अवस्था पछि टाइमआउट भयो भने, नेटवर्क अवस्था अझ गम्भीर हुन्छ र TCP कन्जेसन अवरोध अवस्थाबाट ढिलो-सुरुवात अवस्थामा सर्छ। यस अवस्थामा, कन्जेसन विन्डो cwnd को मान १ MSS मा सेट गरिएको छ, अधिकतम प्याकेट खण्ड लम्बाइ, र स्लो-सुरुवात थ्रेसहोल्ड ssthresh को मान cwnd को आधामा सेट गरिएको छ। यसको उद्देश्य प्रसारण दर र नेटवर्क कन्जेसनको डिग्री सन्तुलन गर्न नेटवर्क पुन: प्राप्ति पछि कन्जेसन विन्डोको आकारलाई क्रमशः पुन: बढाउनु हो।
निष्कर्षमा
भरपर्दो यातायात प्रोटोकलको रूपमा, TCP ले अनुक्रम संख्या, स्वीकृति, पुन: प्रसारण नियन्त्रण, जडान व्यवस्थापन र विन्डो नियन्त्रण द्वारा भरपर्दो यातायात लागू गर्दछ। ती मध्ये, प्रवाह नियन्त्रण संयन्त्रले प्रेषकले प्राप्तकर्ताको वास्तविक प्राप्त क्षमता अनुसार पठाएको डेटाको मात्रा नियन्त्रण गर्दछ, जसले नेटवर्क भीडभाड र कार्यसम्पादन गिरावटको समस्याहरूबाट बचाउँछ। भीडभाड नियन्त्रण संयन्त्रले प्रेषकले पठाएको डेटाको मात्रा समायोजन गरेर नेटवर्क भीडभाडको घटनालाई बेवास्ता गर्दछ। भीडभाड विन्डो र पठाउने विन्डोको अवधारणाहरू एकअर्कासँग सम्बन्धित छन्, र प्रेषकमा डेटाको मात्रा भीडभाड विन्डोको आकार गतिशील रूपमा समायोजन गरेर नियन्त्रण गरिन्छ। ढिलो सुरुवात, भीडभाडबाट बच्ने र छिटो रिकभरी TCP भीडभाड नियन्त्रण एल्गोरिथ्मका तीन मुख्य भागहरू हुन्, जसले नेटवर्कको क्षमता र भीडभाड डिग्रीमा अनुकूलन गर्न विभिन्न रणनीतिहरू मार्फत भीडभाड विन्डोको आकार समायोजन गर्दछ।
अर्को खण्डमा, हामी TCP को पुन: प्रसारण संयन्त्रको विस्तृत रूपमा जाँच गर्नेछौं। भरपर्दो प्रसारण प्राप्त गर्न पुन: प्रसारण संयन्त्र TCP को एक महत्त्वपूर्ण भाग हो। यसले हराएको, बिग्रिएको वा ढिलाइ भएको डेटा पुन: प्रसारण गरेर डेटाको भरपर्दो प्रसारण सुनिश्चित गर्दछ। पुन: प्रसारण संयन्त्रको कार्यान्वयन सिद्धान्त र रणनीति अर्को खण्डमा विस्तृत रूपमा प्रस्तुत र विश्लेषण गरिनेछ। सम्पर्कमा रहनुहोस्!
पोस्ट समय: फेब्रुअरी-२४-२०२५