नेटवर्क पैकेट ब्रोकर टीसीपी कनेक्शन के मुख्य रहस्य: ट्रिपल हैंडशेक की आवश्यकता को स्पष्ट किया गया

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

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

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

 टीसीपी तीन-तरफ़ा हैंडशेक

आइए प्रत्येक कनेक्शन में भेजे जाने वाले TCP पैकेटों पर करीब से नज़र डालें।

शुरुआत में, क्लाइंट और सर्वर दोनों बंद होते हैं। सबसे पहले, सर्वर सक्रिय रूप से पोर्ट पर सुनता है और LISTEN अवस्था में होता है, जिसका अर्थ है कि सर्वर को शुरू किया जाना चाहिए। इसके बाद, क्लाइंट वेबपेज एक्सेस करना शुरू करने के लिए तैयार है। इसे सर्वर के साथ कनेक्शन स्थापित करने की आवश्यकता है। पहले कनेक्शन पैकेट का प्रारूप इस प्रकार है:

 SYN पैकेट

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

SYN+ACK पैकेट

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

एसीके पैकेट

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

एक बार जब सर्वर को क्लाइंट से उत्तर पैकेट प्राप्त हो जाता है, तो वह भी ESTABLISHED स्थिति में चला जाता है।

जैसा कि आप ऊपर दी गई प्रक्रिया से देख सकते हैं, तीन-तरफ़ा हैंडशेक करते समय, तीसरे हैंडशेक को डेटा ले जाने की अनुमति होती है, लेकिन पहले दो हैंडशेक को नहीं। यह एक ऐसा सवाल है जो अक्सर इंटरव्यू में पूछा जाता है। एक बार तीन-तरफ़ा हैंडशेक पूरा हो जाने के बाद, दोनों पक्ष ESTABLISHED अवस्था में प्रवेश करते हैं, जो दर्शाता है कि कनेक्शन सफलतापूर्वक स्थापित हो गया है, जिस बिंदु पर क्लाइंट और सर्वर एक-दूसरे को डेटा भेजना शुरू कर सकते हैं।

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

तीन-तरफ़ा हैंडशेक ऐतिहासिक रूप से दोहराए गए कनेक्शनों के आरंभीकरण से प्रभावी रूप से बच सकता है (मुख्य कारण)
तीन-तरफ़ा हैंडशेक यह गारंटी देता है कि दोनों पक्षों को एक विश्वसनीय प्रारंभिक अनुक्रम संख्या प्राप्त हो गई है।
तीन-तरफ़ा हैंडशेक से संसाधनों की बर्बादी से बचा जा सकता है।

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

तीन-तरफ़ा हैंडशेक ऐतिहासिक डुप्लिकेट कनेक्शन से बचाता है

जब कोई क्लाइंट लगातार कई SYN कनेक्शन स्थापना पैकेट भेजता है, तो नेटवर्क संकुलन जैसी स्थितियों में, निम्नलिखित घटित हो सकता है:

1- पुराने SYN पैकेट नवीनतम SYN पैकेट से पहले सर्वर पर पहुंचते हैं।
2- सर्वर पुराने SYN पैकेट प्राप्त करने के बाद क्लाइंट को SYN + ACK पैकेट का उत्तर देगा।
3- जब क्लाइंट को SYN + ACK पैकेट प्राप्त होता है, तो वह अपने स्वयं के संदर्भ के अनुसार निर्धारित करता है कि कनेक्शन एक ऐतिहासिक कनेक्शन है (अनुक्रम संख्या समाप्त या समय समाप्त), और फिर कनेक्शन को निरस्त करने के लिए सर्वर को RST पैकेट भेजता है।

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

1- यदि यह एक ऐतिहासिक कनेक्शन है (अनुक्रम संख्या समाप्त हो गई है या समय समाप्त हो गया है), तो तीसरे हैंडशेक द्वारा भेजा गया पैकेट ऐतिहासिक कनेक्शन को निरस्त करने के लिए एक RST पैकेट है।
2- यदि यह ऐतिहासिक कनेक्शन नहीं है, तो तीसरी बार भेजा गया पैकेट एक एसीके पैकेट है, और दो संचार पक्ष सफलतापूर्वक कनेक्शन स्थापित करते हैं।

इसलिए, टीसीपी द्वारा तीन-तरफ़ा हैंडशेक का उपयोग करने का मुख्य कारण यह है कि यह ऐतिहासिक कनेक्शनों को रोकने के लिए कनेक्शन को आरंभीकृत करता है।

कारण 2: दोनों पक्षों की प्रारंभिक अनुक्रम संख्याओं को सिंक्रनाइज़ करने के लिए
TCP प्रोटोकॉल के दोनों पक्षों को एक अनुक्रम संख्या बनाए रखनी चाहिए, जो विश्वसनीय संचरण सुनिश्चित करने के लिए एक महत्वपूर्ण कारक है। TCP कनेक्शन में अनुक्रम संख्याएँ एक महत्वपूर्ण भूमिका निभाती हैं। वे निम्नलिखित कार्य करते हैं:

रिसीवर डुप्लिकेट डेटा को समाप्त कर सकता है और डेटा की सटीकता सुनिश्चित कर सकता है।

डेटा की अखंडता सुनिश्चित करने के लिए रिसीवर अनुक्रम संख्या के क्रम में पैकेट प्राप्त कर सकता है।

● अनुक्रम संख्या दूसरे पक्ष द्वारा प्राप्त डेटा पैकेट की पहचान कर सकती है, जिससे विश्वसनीय डेटा ट्रांसमिशन संभव हो सकता है।

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

दोनों पक्षों की प्रारंभिक क्रम संख्या को सिंक्रनाइज़ करें

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

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

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

संदेश प्रतिधारण: तीसरे हैंडशेक की कमी के कारण, सर्वर के पास यह जानने का कोई तरीका नहीं है कि क्लाइंट ने कनेक्शन स्थापित करने के लिए ACK पावती सही ढंग से प्राप्त की है या नहीं। परिणामस्वरूप, यदि संदेश नेटवर्क में अटक जाते हैं, तो क्लाइंट बार-बार SYN अनुरोध भेजता रहेगा, जिससे सर्वर को लगातार नए कनेक्शन स्थापित करने पड़ेंगे। इससे नेटवर्क की भीड़ और देरी बढ़ेगी और समग्र नेटवर्क प्रदर्शन पर नकारात्मक प्रभाव पड़ेगा।

संसाधनों की बर्बादी से बचें

इसलिए, नेटवर्क कनेक्शन की स्थिरता और विश्वसनीयता सुनिश्चित करने के लिए, टीसीपी इन समस्याओं की घटना से बचने के लिए कनेक्शन स्थापित करने के लिए तीन-तरफ़ा हैंडशेक का उपयोग करता है।

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

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


पोस्ट करने का समय: जनवरी-08-2025