टीसीपी कनेक्शन सेटअप
जब हम वेब ब्राउज़ करते हैं, ईमेल भेजते हैं, या ऑनलाइन गेम खेलते हैं, तो हम अक्सर इसके पीछे के जटिल नेटवर्क कनेक्शन के बारे में नहीं सोचते हैं। हालाँकि, ये प्रतीत होने वाले छोटे कदम ही हैं जो हमारे और सर्वर के बीच स्थिर संचार सुनिश्चित करते हैं। सबसे महत्वपूर्ण चरणों में से एक टीसीपी कनेक्शन सेटअप है, और इसका मूल तीन-तरफा हैंडशेक है।
यह लेख तीन-तरफा हैंडशेक के सिद्धांत, प्रक्रिया और महत्व पर विस्तार से चर्चा करेगा। चरण दर चरण, हम बताएंगे कि तीन-तरफा हैंडशेक की आवश्यकता क्यों है, यह कनेक्शन स्थिरता और विश्वसनीयता कैसे सुनिश्चित करता है, और डेटा ट्रांसफर के लिए यह कितना महत्वपूर्ण है। तीन-तरफा हैंडशेक की गहरी समझ के साथ, हम नेटवर्क संचार के अंतर्निहित तंत्र की बेहतर समझ और टीसीपी कनेक्शन की विश्वसनीयता के बारे में स्पष्ट दृष्टिकोण प्राप्त करेंगे।
टीसीपी थ्री-वे हैंडशेक प्रक्रिया और राज्य परिवर्तन
टीसीपी एक कनेक्शन-उन्मुख परिवहन प्रोटोकॉल है, जिसके लिए डेटा ट्रांसमिशन से पहले कनेक्शन स्थापना की आवश्यकता होती है। यह कनेक्शन स्थापना प्रक्रिया तीन-तरफा हैंडशेक द्वारा की जाती है।
आइए प्रत्येक कनेक्शन में भेजे जाने वाले टीसीपी पैकेटों पर करीब से नज़र डालें।
प्रारंभ में, क्लाइंट और सर्वर दोनों बंद हैं। सबसे पहले, सर्वर सक्रिय रूप से एक पोर्ट पर सुनता है और LISTEN स्थिति में होता है, जिसका अर्थ है कि सर्वर को प्रारंभ करना होगा। इसके बाद, क्लाइंट वेबपेज तक पहुंच शुरू करने के लिए तैयार है। उसे सर्वर के साथ कनेक्शन स्थापित करने की आवश्यकता है। पहले कनेक्शन पैकेट का प्रारूप इस प्रकार है:
जब कोई क्लाइंट कनेक्शन शुरू करता है, तो यह एक यादृच्छिक प्रारंभिक अनुक्रम संख्या (client_isn) उत्पन्न करता है और इसे टीसीपी हेडर के "अनुक्रम संख्या" फ़ील्ड में रखता है। उसी समय, क्लाइंट यह इंगित करने के लिए SYN ध्वज स्थिति 1 पर सेट करता है कि आउटगोइंग पैकेट एक SYN पैकेट है। क्लाइंट इंगित करता है कि वह सर्वर पर पहला SYN पैकेट भेजकर सर्वर के साथ कनेक्शन स्थापित करना चाहता है। इस पैकेट में एप्लिकेशन लेयर डेटा (अर्थात भेजा गया डेटा) नहीं है। इस बिंदु पर, क्लाइंट की स्थिति को SYN-SENT के रूप में चिह्नित किया गया है।
जब कोई सर्वर किसी क्लाइंट से SYN पैकेट प्राप्त करता है, तो वह बेतरतीब ढंग से अपने स्वयं के सीरियल नंबर (server_isn) को आरंभ करता है और फिर उस नंबर को टीसीपी हेडर के "सीरियल नंबर" फ़ील्ड में डालता है। इसके बाद, सर्वर "पावती संख्या" फ़ील्ड में client_isn + 1 दर्ज करता है और SYN और ACK दोनों बिट्स को 1 पर सेट करता है। अंत में, सर्वर क्लाइंट को पैकेट भेजता है, जिसमें कोई एप्लिकेशन-लेयर डेटा नहीं होता है (और सर्वर के लिए कोई डेटा नहीं होता है) भेजने के लिए)। इस समय, सर्वर SYN-RCVD स्थिति में है।
एक बार जब क्लाइंट सर्वर से पैकेट प्राप्त कर लेता है, तो उसे अंतिम उत्तर पैकेट पर प्रतिक्रिया देने के लिए निम्नलिखित अनुकूलन करने की आवश्यकता होती है: सबसे पहले, क्लाइंट उत्तर पैकेट के टीसीपी हेडर के ACK बिट को 1 पर सेट करता है; दूसरा, क्लाइंट "उत्तर संख्या की पुष्टि करें" फ़ील्ड में मान सर्वर_आईएसएन + 1 दर्ज करता है; अंत में, क्लाइंट पैकेट को सर्वर पर भेजता है। यह पैकेट क्लाइंट से सर्वर तक डेटा ले जा सकता है। इन कार्यों के पूरा होने पर, ग्राहक स्थापित स्थिति में प्रवेश करेगा।
एक बार जब सर्वर क्लाइंट से उत्तर पैकेट प्राप्त कर लेता है, तो यह स्थापित स्थिति में भी स्विच हो जाता है।
जैसा कि आप उपरोक्त प्रक्रिया से देख सकते हैं, तीन-तरफ़ा हैंडशेक करते समय, तीसरे हैंडशेक को डेटा ले जाने की अनुमति होती है, लेकिन पहले दो हैंडशेक को नहीं। यह एक ऐसा सवाल है जो अक्सर इंटरव्यू में पूछा जाता है। एक बार जब तीन-तरफ़ा हैंडशेक पूरा हो जाता है, तो दोनों पक्ष स्थापित स्थिति में प्रवेश करते हैं, जो दर्शाता है कि कनेक्शन सफलतापूर्वक स्थापित हो गया है, जिस बिंदु पर क्लाइंट और सर्वर एक दूसरे को डेटा भेजना शुरू कर सकते हैं।
तीन बार हाथ क्यों मिलाया? दो बार नहीं, चार बार?
सामान्य उत्तर है, "क्योंकि तीन-तरफ़ा हाथ मिलाना प्राप्त करने और भेजने की क्षमता की गारंटी देता है।" यह उत्तर सही है, परंतु यह केवल सतही कारण है, मुख्य कारण सामने नहीं रखता। निम्नलिखित में, मैं इस मुद्दे पर हमारी समझ को गहरा करने के लिए तीन पहलुओं से तीन बार हाथ मिलाने के कारणों का विश्लेषण करूंगा।
तीन-तरफा हैंडशेक ऐतिहासिक रूप से दोहराए गए कनेक्शन की शुरुआत से प्रभावी ढंग से बच सकता है (मुख्य कारण)
तीन-तरफ़ा हाथ मिलाना इस बात की गारंटी देता है कि दोनों पक्षों को एक विश्वसनीय प्रारंभिक अनुक्रम संख्या प्राप्त हुई है।
तीन-तरफ़ा हाथ मिलाने से संसाधनों को बर्बाद होने से बचाया जा सकता है।
कारण 1: ऐतिहासिक डुप्लिकेट जॉइन से बचें
संक्षेप में, तीन-तरफ़ा हैंडशेक का मुख्य कारण पुराने डुप्लिकेट कनेक्शन आरंभीकरण के कारण होने वाले भ्रम से बचना है। एक जटिल नेटवर्क वातावरण में, डेटा पैकेट का प्रसारण हमेशा निर्दिष्ट समय के अनुसार गंतव्य होस्ट को नहीं भेजा जाता है, और पुराने डेटा पैकेट नेटवर्क भीड़ और अन्य कारणों से पहले गंतव्य होस्ट पर पहुंच सकते हैं। इससे बचने के लिए, टीसीपी कनेक्शन स्थापित करने के लिए तीन-तरफ़ा हैंडशेक का उपयोग करता है।
जब कोई क्लाइंट नेटवर्क कंजेशन जैसी स्थितियों में एक के बाद एक कई SYN कनेक्शन स्थापना पैकेट भेजता है, तो निम्नलिखित हो सकता है:
1- पुराने SYN पैकेट नवीनतम SYN पैकेट से पहले सर्वर पर पहुंचते हैं।
2- पुराना SYN पैकेट प्राप्त करने के बाद सर्वर क्लाइंट को SYN + ACK पैकेट का उत्तर देगा।
3- जब क्लाइंट SYN + ACK पैकेट प्राप्त करता है, तो यह निर्धारित करता है कि कनेक्शन अपने स्वयं के संदर्भ के अनुसार एक ऐतिहासिक कनेक्शन (अनुक्रम संख्या समाप्त या टाइमआउट) है, और फिर कनेक्शन को निरस्त करने के लिए सर्वर को RST पैकेट भेजता है।
दो-हाथ मिलाने वाले कनेक्शन के साथ, यह निर्धारित करने का कोई तरीका नहीं है कि वर्तमान कनेक्शन एक ऐतिहासिक कनेक्शन है या नहीं। तीन-तरफ़ा हैंडशेक क्लाइंट को यह निर्धारित करने की अनुमति देता है कि क्या वर्तमान कनेक्शन संदर्भ के आधार पर एक ऐतिहासिक कनेक्शन है जब वह तीसरा पैकेट भेजने के लिए तैयार है:
1- यदि यह एक ऐतिहासिक कनेक्शन है (अनुक्रम संख्या समाप्त हो गई है या समय समाप्त हो गया है), तो तीसरे हैंडशेक द्वारा भेजा गया पैकेट ऐतिहासिक कनेक्शन को निरस्त करने के लिए एक आरएसटी पैकेट है।
2- यदि यह एक ऐतिहासिक कनेक्शन नहीं है, तो तीसरी बार भेजा गया पैकेट एक ACK पैकेट है, और दो संचार पक्ष सफलतापूर्वक कनेक्शन स्थापित करते हैं।
इसलिए, टीसीपी द्वारा तीन-तरफा हैंडशेक का उपयोग करने का मुख्य कारण यह है कि यह ऐतिहासिक कनेक्शन को रोकने के लिए कनेक्शन को आरंभ करता है।
कारण 2: दोनों पक्षों की प्रारंभिक अनुक्रम संख्याओं को सिंक्रनाइज़ करना
टीसीपी प्रोटोकॉल के दोनों पक्षों को एक अनुक्रम संख्या बनाए रखनी चाहिए, जो विश्वसनीय ट्रांसमिशन सुनिश्चित करने के लिए एक महत्वपूर्ण कारक है। अनुक्रम संख्याएँ टीसीपी कनेक्शन में एक महत्वपूर्ण भूमिका निभाती हैं। वे निम्नलिखित कार्य करते हैं:
रिसीवर डुप्लिकेट डेटा को समाप्त कर सकता है और डेटा की सटीकता सुनिश्चित कर सकता है।
डेटा की अखंडता सुनिश्चित करने के लिए रिसीवर अनुक्रम संख्या के क्रम में पैकेट प्राप्त कर सकता है।
● अनुक्रम संख्या उस डेटा पैकेट की पहचान कर सकती है जो दूसरे पक्ष द्वारा प्राप्त किया गया है, जिससे विश्वसनीय डेटा ट्रांसमिशन सक्षम हो सके।
इसलिए, टीसीपी कनेक्शन स्थापित करने पर, क्लाइंट प्रारंभिक अनुक्रम संख्या के साथ SYN पैकेट भेजता है और सर्वर को क्लाइंट के SYN पैकेट के सफल रिसेप्शन का संकेत देने वाले ACK पैकेट के साथ उत्तर देने की आवश्यकता होती है। फिर, सर्वर क्लाइंट को प्रारंभिक अनुक्रम संख्या के साथ SYN पैकेट भेजता है और यह सुनिश्चित करने के लिए कि प्रारंभिक अनुक्रम संख्याएँ विश्वसनीय रूप से सिंक्रनाइज़ हैं, क्लाइंट के उत्तर देने की प्रतीक्षा करता है।
यद्यपि दोनों पक्षों के प्रारंभिक अनुक्रम संख्याओं को विश्वसनीय रूप से सिंक्रनाइज़ करने के लिए चार-तरफ़ा हैंडशेक भी संभव है, दूसरे और तीसरे चरण को एक ही चरण में जोड़ा जा सकता है, जिसके परिणामस्वरूप तीन-तरफ़ा हैंडशेक हो सकता है। हालाँकि, दो हाथ मिलाने से केवल यह गारंटी मिल सकती है कि एक पक्ष की प्रारंभिक अनुक्रम संख्या दूसरे पक्ष को सफलतापूर्वक प्राप्त हो गई है, लेकिन इस बात की कोई गारंटी नहीं है कि दोनों पक्षों की प्रारंभिक अनुक्रम संख्या की पुष्टि की जा सकती है। इसलिए, टीसीपी कनेक्शन की स्थिरता और विश्वसनीयता सुनिश्चित करने के लिए तीन-तरफा हैंडशेक सबसे अच्छा विकल्प है।
कारण 3: संसाधनों को बर्बाद करने से बचें
यदि केवल "टू-हैंडशेक" है, जब क्लाइंट SYN अनुरोध नेटवर्क में अवरुद्ध हो जाता है, तो क्लाइंट सर्वर द्वारा भेजे गए ACK पैकेट को प्राप्त नहीं कर सकता है, इसलिए SYN पुनः भेजा जाएगा। हालाँकि, चूँकि कोई तीसरा हैंडशेक नहीं है, सर्वर यह निर्धारित नहीं कर सकता है कि क्लाइंट को कनेक्शन स्थापित करने के लिए ACK पावती प्राप्त हुई है या नहीं। इसलिए, सर्वर प्रत्येक SYN अनुरोध प्राप्त करने के बाद ही सक्रिय रूप से कनेक्शन स्थापित कर सकता है। इससे निम्नलिखित परिणाम मिलते हैं:
संसाधनों की बर्बादी: यदि क्लाइंट का SYN अनुरोध अवरुद्ध हो जाता है, जिसके परिणामस्वरूप कई SYN पैकेटों का बार-बार प्रसारण होता है, तो सर्वर अनुरोध प्राप्त करने के बाद कई अनावश्यक अमान्य कनेक्शन स्थापित करेगा। इससे सर्वर संसाधनों की अनावश्यक बर्बादी होती है।
संदेश प्रतिधारण: तीसरे हैंडशेक की कमी के कारण, सर्वर के पास यह जानने का कोई तरीका नहीं है कि क्लाइंट को कनेक्शन स्थापित करने के लिए ACK पावती सही ढंग से प्राप्त हुई है या नहीं। परिणामस्वरूप, यदि संदेश नेटवर्क में फंस जाते हैं, तो क्लाइंट बार-बार SYN अनुरोध भेजता रहेगा, जिससे सर्वर लगातार नए कनेक्शन स्थापित करेगा। इससे नेटवर्क की भीड़ और देरी बढ़ेगी और समग्र नेटवर्क प्रदर्शन पर नकारात्मक प्रभाव पड़ेगा।
इसलिए, नेटवर्क कनेक्शन की स्थिरता और विश्वसनीयता सुनिश्चित करने के लिए, टीसीपी इन समस्याओं की घटना से बचने के लिए कनेक्शन स्थापित करने के लिए तीन-तरफा हैंडशेक का उपयोग करता है।
सारांश
नेटवर्क पैकेट ब्रोकरटीसीपी कनेक्शन की स्थापना तीन-तरफ़ा हैंडशेक के साथ की जाती है। तीन-तरफा हैंडशेक के दौरान, क्लाइंट पहले सर्वर को SYN ध्वज के साथ एक पैकेट भेजता है, जो दर्शाता है कि वह एक कनेक्शन स्थापित करना चाहता है। क्लाइंट से अनुरोध प्राप्त करने के बाद, सर्वर क्लाइंट को SYN और ACK फ़्लैग के साथ एक पैकेट का उत्तर देता है, जो दर्शाता है कि कनेक्शन अनुरोध स्वीकार कर लिया गया है, और अपना प्रारंभिक अनुक्रम नंबर भेजता है। अंत में, क्लाइंट यह इंगित करने के लिए सर्वर को ACK फ़्लैग के साथ उत्तर देता है कि कनेक्शन सफलतापूर्वक स्थापित हो गया है। इस प्रकार, दोनों पक्ष स्थापित स्थिति में हैं और एक दूसरे को डेटा भेजना शुरू कर सकते हैं।
सामान्य तौर पर, टीसीपी कनेक्शन स्थापना के लिए तीन-तरफा हैंडशेक प्रक्रिया को कनेक्शन स्थिरता और विश्वसनीयता सुनिश्चित करने, ऐतिहासिक कनेक्शन पर भ्रम और संसाधनों की बर्बादी से बचने और यह सुनिश्चित करने के लिए डिज़ाइन किया गया है कि दोनों पक्ष डेटा प्राप्त करने और भेजने में सक्षम हैं।
पोस्ट समय: जनवरी-08-2025