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

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

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

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

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

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

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

 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- यदि यह कोई ऐतिहासिक कनेक्शन नहीं है, तो तीसरी बार भेजा गया पैकेट एक ACK पैकेट होता है, और संचार करने वाले दोनों पक्ष सफलतापूर्वक कनेक्शन स्थापित कर लेते हैं।

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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