नेटवर्क प्याकेट ब्रोकर TCP जडानहरूको प्रमुख रहस्यहरू: ट्रिपल ह्यान्डशेकको आवश्यकतालाई अस्पष्ट पारियो

TCP जडान सेटअप
जब हामी वेब ब्राउज गर्छौं, इमेल पठाउँछौं, वा अनलाइन गेम खेल्छौं, हामी प्रायः यसको पछाडिको जटिल नेटवर्क जडानको बारेमा सोच्दैनौं। यद्यपि, यी साना देखिने चरणहरू हुन् जसले हामी र सर्भर बीच स्थिर सञ्चार सुनिश्चित गर्दछ। सबैभन्दा महत्त्वपूर्ण चरणहरू मध्ये एक TCP जडान सेटअप हो, र यसको मूल तीन-तर्फी ह्यान्डशेक हो।

यस लेखले तीन-तर्फी ह्यान्डशेकको सिद्धान्त, प्रक्रिया र महत्त्वको बारेमा विस्तृत रूपमा छलफल गर्नेछ। चरण-दर-चरण, हामी तीन-तर्फी ह्यान्डशेक किन आवश्यक छ, यसले जडान स्थिरता र विश्वसनीयता कसरी सुनिश्चित गर्दछ, र डेटा स्थानान्तरणको लागि यो कत्तिको महत्त्वपूर्ण छ भनेर व्याख्या गर्नेछौं। तीन-तर्फी ह्यान्डशेकको गहिरो बुझाइको साथ, हामी नेटवर्क सञ्चारको अन्तर्निहित संयन्त्रहरूको राम्रो बुझाइ र TCP जडानहरूको विश्वसनीयताको स्पष्ट दृष्टिकोण प्राप्त गर्नेछौं।

TCP तीन-तर्फी ह्यान्डशेक प्रक्रिया र अवस्था संक्रमण
TCP एक जडान-उन्मुख यातायात प्रोटोकल हो, जसलाई डेटा प्रसारण गर्नु अघि जडान स्थापना आवश्यक पर्दछ। यो जडान स्थापना प्रक्रिया तीन-तर्फी ह्यान्डशेकद्वारा गरिन्छ।

 TCP तीन-तर्फी हात मिलाउने

प्रत्येक जडानमा पठाइएका TCP प्याकेटहरूलाई नजिकबाट हेरौं।

सुरुमा, क्लाइन्ट र सर्भर दुवै बन्द हुन्छन्। पहिले, सर्भरले सक्रिय रूपमा पोर्टमा सुन्छ र LISTEN अवस्थामा हुन्छ, जसको अर्थ सर्भर सुरु हुनुपर्छ। अर्को, क्लाइन्ट वेबपेज पहुँच गर्न सुरु गर्न तयार हुन्छ। यसले सर्भरसँग जडान स्थापित गर्न आवश्यक छ। पहिलो जडान प्याकेटको ढाँचा निम्नानुसार छ:

 SYN प्याकेट

जब क्लाइन्टले जडान सुरु गर्छ, यसले अनियमित प्रारम्भिक अनुक्रम नम्बर (client_isn) उत्पन्न गर्छ र यसलाई TCP हेडरको "अनुक्रम नम्बर" फिल्डमा राख्छ। साथै, क्लाइन्टले SYN फ्ल्याग स्थिति १ मा सेट गर्छ जसले गर्दा बाहिर जाने प्याकेट SYN प्याकेट हो भनेर संकेत गर्छ। क्लाइन्टले पहिलो SYN प्याकेट सर्भरमा पठाएर सर्भरसँग जडान स्थापना गर्न चाहन्छ भनी संकेत गर्छ। यो प्याकेटमा एप्लिकेसन लेयर डेटा (अर्थात्, पठाइएको डेटा) समावेश हुँदैन। यस बिन्दुमा, क्लाइन्टको स्थिति SYN-SENT को रूपमा चिन्ह लगाइएको छ।

SYN+ACK प्याकेट

जब सर्भरले क्लाइन्टबाट SYN प्याकेट प्राप्त गर्छ, यसले अनियमित रूपमा आफ्नै सिरियल नम्बर (server_isn) सुरु गर्छ र त्यसपछि त्यो नम्बरलाई TCP हेडरको "सिरियल नम्बर" फिल्डमा राख्छ। त्यसपछि, सर्भरले "स्वीकार नम्बर" फिल्डमा client_isn + 1 प्रविष्ट गर्छ र SYN र ACK बिटहरू दुवैलाई 1 मा सेट गर्छ। अन्तमा, सर्भरले प्याकेटलाई क्लाइन्टमा पठाउँछ, जसमा कुनै अनुप्रयोग-तह डेटा हुँदैन (र सर्भरले पठाउनको लागि कुनै डेटा हुँदैन)। यस समयमा, सर्भर SYN-RCVD अवस्थामा छ।

ACK प्याकेट

एक पटक क्लाइन्टले सर्भरबाट प्याकेट प्राप्त गरेपछि, अन्तिम उत्तर प्याकेटमा प्रतिक्रिया दिनको लागि निम्न अनुकूलनहरू गर्न आवश्यक छ: पहिलो, क्लाइन्टले उत्तर प्याकेटको TCP हेडरको ACK बिटलाई 1 मा सेट गर्दछ; दोस्रो, क्लाइन्टले "उत्तर नम्बर पुष्टि गर्नुहोस्" फिल्डमा मान server_isn + 1 प्रविष्ट गर्दछ; अन्तमा, क्लाइन्टले सर्भरमा प्याकेट पठाउँछ। यो प्याकेटले क्लाइन्टबाट सर्भरमा डेटा बोक्न सक्छ। यी कार्यहरू पूरा भएपछि, क्लाइन्टले ESTABLISHED स्थितिमा प्रवेश गर्नेछ।

एकपटक सर्भरले क्लाइन्टबाट जवाफ प्याकेट प्राप्त गरेपछि, यो ESTABLISHED अवस्थामा पनि स्विच हुन्छ।

माथिको प्रक्रियाबाट तपाईंले देख्न सक्नुहुन्छ, तीन-तर्फी ह्यान्डशेक गर्दा, तेस्रो ह्यान्डशेकलाई डेटा बोक्न अनुमति दिइन्छ, तर पहिलो दुई ह्यान्डशेकहरू हुँदैनन्। यो एउटा प्रश्न हो जुन प्रायः अन्तर्वार्तामा सोधिन्छ। एक पटक तीन-तर्फी ह्यान्डशेक पूरा भएपछि, दुबै पक्षहरू स्थापित अवस्थामा प्रवेश गर्छन्, जसले जडान सफलतापूर्वक स्थापित भएको संकेत गर्दछ, जुन बिन्दुमा क्लाइन्ट र सर्भरले एकअर्कालाई डेटा पठाउन सुरु गर्न सक्छन्।

किन तीन पटक हात मिलाउने? दुई पटक होइन, चार पटक?
सामान्य उत्तर हो, "किनभने तीन-तर्फी हात मिलाउँदा प्राप्त गर्ने र पठाउने क्षमताको ग्यारेन्टी हुन्छ।" यो उत्तर सही छ, तर यो केवल सतही कारण हो, मुख्य कारणलाई अगाडि बढाउँदैन। निम्नमा, म यस मुद्दाको हाम्रो बुझाइलाई गहिरो बनाउन तीन पक्षबाट तीन हात मिलाउनुको कारणहरूको विश्लेषण गर्नेछु।

तीन-तर्फी हात मिलाउँदा ऐतिहासिक रूपमा दोहोरिएका सम्बन्धहरूको सुरुवातलाई प्रभावकारी रूपमा रोक्न सकिन्छ (मुख्य कारण)
तीन-तर्फी हात मिलाउने कार्यले दुवै पक्षले भरपर्दो प्रारम्भिक अनुक्रम नम्बर प्राप्त गरेको ग्यारेन्टी दिन्छ।
तीन-तर्फी हात मिलाउँदा स्रोतसाधनको बर्बादी हुनबाट जोगिन्छ।

कारण १: ऐतिहासिक डुप्लिकेट जोडहरूबाट बच्नुहोस्
संक्षेपमा भन्नुपर्दा, तीन-तर्फी ह्यान्डशेकको मुख्य कारण पुरानो डुप्लिकेट जडान प्रारम्भिकरणको कारणले हुने भ्रमबाट बच्नु हो। जटिल नेटवर्क वातावरणमा, डेटा प्याकेटहरूको प्रसारण सधैं तोकिएको समय अनुसार गन्तव्य होस्टमा पठाइँदैन, र नेटवर्क भीडभाड र अन्य कारणहरूले गर्दा पुरानो डेटा प्याकेटहरू पहिले गन्तव्य होस्टमा आइपुग्न सक्छन्। यसबाट बच्नको लागि, TCP ले जडान स्थापना गर्न तीन-तर्फी ह्यान्डशेक प्रयोग गर्दछ।

तीन-तर्फी हात मिलाउँदा ऐतिहासिक दोहोरिएको सम्बन्धबाट बच्न सकिन्छ

जब क्लाइन्टले क्रमशः धेरै SYN जडान स्थापना प्याकेटहरू पठाउँछ, नेटवर्क भीडभाड जस्ता परिस्थितिहरूमा, निम्न हुन सक्छ:

१- पुरानो SYN प्याकेटहरू नवीनतम SYN प्याकेटहरू भन्दा पहिले सर्भरमा आइपुग्छन्।
२- पुरानो SYN प्याकेट प्राप्त गरेपछि सर्भरले क्लाइन्टलाई SYN + ACK प्याकेटको जवाफ दिनेछ।
३- जब क्लाइन्टले SYN + ACK प्याकेट प्राप्त गर्छ, यसले यसको आफ्नै सन्दर्भ अनुसार जडान ऐतिहासिक जडान (अनुक्रम संख्या समाप्त भएको वा समय समाप्त भएको) हो भनेर निर्धारण गर्छ, र त्यसपछि जडान रद्द गर्न सर्भरमा RST प्याकेट पठाउँछ।

दुई-हात मिलाउने जडानको साथ, हालको जडान ऐतिहासिक जडान हो कि होइन भनेर निर्धारण गर्ने कुनै तरिका छैन। तीन-तर्फी ह्यान्डशेकले क्लाइन्टलाई तेस्रो प्याकेट पठाउन तयार हुँदा सन्दर्भको आधारमा हालको जडान ऐतिहासिक जडान हो कि होइन भनेर निर्धारण गर्न अनुमति दिन्छ:

१- यदि यो ऐतिहासिक जडान हो (अनुक्रम संख्याको म्याद सकिएको वा समय सकिएको), तेस्रो ह्यान्डशेकद्वारा पठाइएको प्याकेट ऐतिहासिक जडान रद्द गर्न RST प्याकेट हो।
२- यदि यो ऐतिहासिक जडान होइन भने, तेस्रो पटक पठाइएको प्याकेट ACK प्याकेट हो, र दुई सञ्चार पक्षहरूले सफलतापूर्वक जडान स्थापना गर्छन्।

त्यसकारण, TCP ले तीन-तर्फी ह्यान्डशेक प्रयोग गर्नुको मुख्य कारण यो हो कि यसले ऐतिहासिक जडानहरूलाई रोक्नको लागि जडानलाई सुरुवात गर्दछ।

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

रिसीभरले डुप्लिकेट डाटा हटाउन सक्छ र डाटाको शुद्धता सुनिश्चित गर्न सक्छ।

डेटाको अखण्डता सुनिश्चित गर्न रिसीभरले अनुक्रम संख्याको क्रममा प्याकेटहरू प्राप्त गर्न सक्छ।

● अनुक्रम नम्बरले अर्को पक्षले प्राप्त गरेको डेटा प्याकेट पहिचान गर्न सक्छ, जसले गर्दा विश्वसनीय डेटा प्रसारण सक्षम हुन्छ।

त्यसकारण, TCP जडान स्थापना गर्दा, क्लाइन्टले प्रारम्भिक अनुक्रम नम्बरको साथ SYN प्याकेटहरू पठाउँछ र सर्भरलाई क्लाइन्टको SYN प्याकेटको सफल स्वागतलाई संकेत गर्ने ACK प्याकेटको साथ जवाफ दिन आवश्यक पर्दछ। त्यसपछि, सर्भरले प्रारम्भिक अनुक्रम नम्बरको साथ SYN प्याकेट क्लाइन्टलाई पठाउँछ र क्लाइन्टले एक पटक र सबैको लागि जवाफ दिनको लागि पर्खन्छ, प्रारम्भिक अनुक्रम नम्बरहरू विश्वसनीय रूपमा सिङ्क्रोनाइज गरिएको छ भनी सुनिश्चित गर्न।

दुवै पक्षको प्रारम्भिक सिरियल नम्बरहरू सिङ्क्रोनाइज गर्नुहोस्

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

कारण ३: स्रोतसाधन खेर फाल्नबाट बच्नुहोस्
यदि नेटवर्कमा क्लाइन्ट SYN अनुरोध ब्लक गरिएको बेला "दुई-ह्यान्डशेक" मात्र भएको खण्डमा, क्लाइन्टले सर्भरद्वारा पठाइएको ACK प्याकेट प्राप्त गर्न सक्दैन, त्यसैले SYN पुन: प्राप्त हुनेछ। यद्यपि, तेस्रो ह्यान्डशेक नभएकोले, सर्भरले जडान स्थापना गर्न क्लाइन्टले ACK स्वीकृति प्राप्त गरेको छ कि छैन भनेर निर्धारण गर्न सक्दैन। त्यसकारण, सर्भरले प्रत्येक SYN अनुरोध प्राप्त गरेपछि मात्र सक्रिय रूपमा जडान स्थापना गर्न सक्छ। यसले निम्न कुराहरूमा पुर्‍याउँछ:

स्रोतहरूको बर्बादी: यदि क्लाइन्टको SYN अनुरोध अवरुद्ध भयो भने, धेरै SYN प्याकेटहरूको बारम्बार प्रसारणको परिणामस्वरूप, सर्भरले अनुरोध प्राप्त गरेपछि धेरै अनावश्यक अवैध जडानहरू स्थापना गर्नेछ। यसले सर्भर स्रोतहरूको अनावश्यक बर्बादी निम्त्याउँछ।

सन्देश अवधारण: तेस्रो ह्यान्डशेकको अभावको कारण, सर्भरले जडान स्थापना गर्न क्लाइन्टले ACK स्वीकृति सही रूपमा प्राप्त गर्यो कि गरेन भनेर जान्न सक्दैन। फलस्वरूप, यदि सन्देशहरू नेटवर्कमा अड्किए भने, क्लाइन्टले बारम्बार SYN अनुरोधहरू पठाउन जारी राख्नेछ, जसले गर्दा सर्भरले निरन्तर नयाँ जडानहरू स्थापना गर्न बाध्य हुनेछ। यसले नेटवर्क भीडभाड र ढिलाइ बढाउनेछ र समग्र नेटवर्क कार्यसम्पादनमा नकारात्मक असर पार्नेछ।

स्रोतसाधनको खेर फाल्नबाट बच्नुहोस्

त्यसकारण, नेटवर्क जडानको स्थिरता र विश्वसनीयता सुनिश्चित गर्न, TCP ले यी समस्याहरू हुनबाट बच्न जडान स्थापना गर्न तीन-तर्फी ह्यान्डशेक प्रयोग गर्दछ।

निष्कर्षमा
नेटवर्क प्याकेट ब्रोकरTCP जडान स्थापना तीन-तर्फी ह्यान्डशेकको साथ गरिन्छ। तीन-तर्फी ह्यान्डशेकको समयमा, क्लाइन्टले पहिले SYN झण्डा भएको प्याकेट सर्भरमा पठाउँछ, जसले यो संकेत गर्दछ कि यो जडान स्थापना गर्न चाहन्छ। क्लाइन्टबाट अनुरोध प्राप्त गरेपछि, सर्भरले क्लाइन्टलाई SYN र ACK झण्डा भएको प्याकेटको जवाफ दिन्छ, जसले संकेत गर्दछ कि जडान अनुरोध स्वीकार गरिएको छ, र यसको आफ्नै प्रारम्भिक अनुक्रम नम्बर पठाउँछ। अन्तमा, क्लाइन्टले सर्भरलाई ACK झण्डाको साथ जवाफ दिन्छ जसले संकेत गर्दछ कि जडान सफलतापूर्वक स्थापित भएको छ। यसरी, दुई पक्षहरू स्थापित अवस्थामा छन् र एकअर्कालाई डेटा पठाउन सुरु गर्न सक्छन्।

सामान्यतया, TCP जडान स्थापनाको लागि तीन-तर्फी ह्यान्डशेक प्रक्रिया जडान स्थिरता र विश्वसनीयता सुनिश्चित गर्न, ऐतिहासिक जडानहरूमा भ्रम र स्रोतहरूको बर्बादीबाट बच्न, र दुवै पक्षहरूले डेटा प्राप्त गर्न र पठाउन सक्षम छन् भनी सुनिश्चित गर्न डिजाइन गरिएको हो।


पोस्ट समय: जनवरी-०८-२०२५