टीसीपी कनेक्शन सेटअप
जब हम वेब ब्राउज़ करते हैं, ईमेल भेजते हैं, या ऑनलाइन गेम खेलते हैं, तो हम अक्सर इसके पीछे के जटिल नेटवर्क कनेक्शन के बारे में नहीं सोचते। हालाँकि, ये छोटे-छोटे कदम ही हमारे और सर्वर के बीच स्थिर संचार सुनिश्चित करते हैं। सबसे महत्वपूर्ण चरणों में से एक है TCP कनेक्शन सेटअप, और इसका मूल है थ्री-वे हैंडशेक।
यह लेख थ्री-वे हैंडशेक के सिद्धांत, प्रक्रिया और महत्व पर विस्तार से चर्चा करेगा। हम चरण-दर-चरण समझाएँगे कि थ्री-वे हैंडशेक की आवश्यकता क्यों है, यह कनेक्शन की स्थिरता और विश्वसनीयता कैसे सुनिश्चित करता है, और डेटा स्थानांतरण के लिए यह कितना महत्वपूर्ण है। थ्री-वे हैंडशेक की गहरी समझ के साथ, हमें नेटवर्क संचार के अंतर्निहित तंत्रों की बेहतर समझ और TCP कनेक्शनों की विश्वसनीयता का एक स्पष्ट दृष्टिकोण प्राप्त होगा।
टीसीपी थ्री-वे हैंडशेक प्रक्रिया और राज्य संक्रमण
टीसीपी एक कनेक्शन-उन्मुख ट्रांसपोर्ट प्रोटोकॉल है, जिसमें डेटा ट्रांसमिशन से पहले कनेक्शन स्थापित करना आवश्यक होता है। यह कनेक्शन स्थापना प्रक्रिया तीन-तरफ़ा हैंडशेक द्वारा पूरी होती है।
आइए प्रत्येक कनेक्शन में भेजे जाने वाले TCP पैकेटों पर करीब से नज़र डालें।
शुरुआत में, क्लाइंट और सर्वर दोनों बंद होते हैं। सबसे पहले, सर्वर किसी पोर्ट पर सक्रिय रूप से सुनता है और LISTEN अवस्था में होता है, जिसका अर्थ है कि सर्वर शुरू होना चाहिए। इसके बाद, क्लाइंट वेबपेज एक्सेस करने के लिए तैयार होता है। उसे सर्वर से कनेक्शन स्थापित करना होता है। पहले कनेक्शन पैकेट का प्रारूप इस प्रकार है:
जब कोई क्लाइंट कनेक्शन शुरू करता है, तो वह एक यादृच्छिक प्रारंभिक अनुक्रम संख्या (client_isn) उत्पन्न करता है और उसे TCP हेडर के "अनुक्रम संख्या" फ़ील्ड में डाल देता है। साथ ही, क्लाइंट SYN फ़्लैग स्थिति को 1 पर सेट करता है ताकि यह दर्शाया जा सके कि आउटगोइंग पैकेट एक SYN पैकेट है। क्लाइंट सर्वर को पहला SYN पैकेट भेजकर यह दर्शाता है कि वह सर्वर के साथ कनेक्शन स्थापित करना चाहता है। इस पैकेट में एप्लिकेशन लेयर डेटा (अर्थात, भेजा गया डेटा) नहीं होता है। इस बिंदु पर, क्लाइंट की स्थिति SYN-SENT के रूप में चिह्नित होती है।
जब कोई सर्वर किसी क्लाइंट से SYN पैकेट प्राप्त करता है, तो वह बेतरतीब ढंग से अपना सीरियल नंबर (server_isn) इनिशियलाइज़ करता है और फिर उस नंबर को TCP हेडर के "सीरियल नंबर" फ़ील्ड में डाल देता है। इसके बाद, सर्वर "Acknowledgement number" फ़ील्ड में 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 पैकेट भेजता है और सर्वर से क्लाइंट के SYN पैकेट के सफल प्राप्ति का संकेत देने वाले ACK पैकेट के साथ उत्तर देने की अपेक्षा करता है। फिर, सर्वर प्रारंभिक अनुक्रम संख्या के साथ SYN पैकेट क्लाइंट को भेजता है और क्लाइंट के उत्तर की प्रतीक्षा करता है, ताकि यह सुनिश्चित हो सके कि प्रारंभिक अनुक्रम संख्याएँ विश्वसनीय रूप से सिंक्रनाइज़ हैं।
यद्यपि दोनों पक्षों की प्रारंभिक अनुक्रम संख्याओं को विश्वसनीय रूप से समकालिक करने के लिए चार-तरफ़ा हैंडशेक भी संभव है, दूसरे और तीसरे चरण को एक ही चरण में संयोजित किया जा सकता है, जिसके परिणामस्वरूप तीन-तरफ़ा हैंडशेक प्राप्त होता है। हालाँकि, दो हैंडशेक केवल इस बात की गारंटी दे सकते हैं कि एक पक्ष की प्रारंभिक अनुक्रम संख्या दूसरे पक्ष द्वारा सफलतापूर्वक प्राप्त हो जाए, लेकिन इस बात की कोई गारंटी नहीं है कि दोनों पक्षों की प्रारंभिक अनुक्रम संख्या की पुष्टि की जा सके। इसलिए, TCP कनेक्शन की स्थिरता और विश्वसनीयता सुनिश्चित करने के लिए तीन-तरफ़ा हैंडशेक सबसे अच्छा विकल्प है।
कारण 3: संसाधनों की बर्बादी से बचें
यदि नेटवर्क में क्लाइंट SYN अनुरोध अवरुद्ध होने पर केवल "दो-हैंडशेक" होता है, तो क्लाइंट सर्वर द्वारा भेजा गया ACK पैकेट प्राप्त नहीं कर सकता, इसलिए SYN पुनः भेजा जाएगा। हालाँकि, चूँकि कोई तीसरा हैंडशेक नहीं है, इसलिए सर्वर यह निर्धारित नहीं कर सकता कि क्लाइंट को कनेक्शन स्थापित करने के लिए ACK पावती प्राप्त हुई है या नहीं। इसलिए, सर्वर प्रत्येक SYN अनुरोध प्राप्त करने के बाद ही सक्रिय रूप से कनेक्शन स्थापित कर सकता है। इससे निम्नलिखित परिणाम प्राप्त होते हैं:
संसाधनों की बर्बादी: यदि क्लाइंट का SYN अनुरोध अवरुद्ध हो जाता है, जिसके परिणामस्वरूप कई SYN पैकेट बार-बार भेजे जाते हैं, तो सर्वर अनुरोध प्राप्त करने के बाद कई अनावश्यक अमान्य कनेक्शन स्थापित कर देगा। इससे सर्वर संसाधनों की अनावश्यक बर्बादी होती है।
संदेश प्रतिधारण: तीसरे हैंडशेक की कमी के कारण, सर्वर के पास यह जानने का कोई तरीका नहीं होता कि क्लाइंट को कनेक्शन स्थापित करने के लिए ACK पावती सही ढंग से प्राप्त हुई है या नहीं। परिणामस्वरूप, यदि संदेश नेटवर्क में अटक जाते हैं, तो क्लाइंट बार-बार SYN अनुरोध भेजता रहेगा, जिससे सर्वर को लगातार नए कनेक्शन स्थापित करने पड़ेंगे। इससे नेटवर्क की भीड़भाड़ और देरी बढ़ेगी और समग्र नेटवर्क प्रदर्शन पर नकारात्मक प्रभाव पड़ेगा।
इसलिए, नेटवर्क कनेक्शन की स्थिरता और विश्वसनीयता सुनिश्चित करने के लिए, टीसीपी इन समस्याओं की घटना से बचने के लिए कनेक्शन स्थापित करने के लिए तीन-तरफ़ा हैंडशेक का उपयोग करता है।
सारांश
नेटवर्क पैकेट ब्रोकरटीसीपी कनेक्शन स्थापना तीन-तरफ़ा हैंडशेक द्वारा की जाती है। तीन-तरफ़ा हैंडशेक के दौरान, क्लाइंट सबसे पहले सर्वर को SYN फ़्लैग वाला एक पैकेट भेजता है, जो दर्शाता है कि वह कनेक्शन स्थापित करना चाहता है। क्लाइंट से अनुरोध प्राप्त करने के बाद, सर्वर क्लाइंट को SYN और ACK फ़्लैग वाला एक पैकेट भेजता है, जो दर्शाता है कि कनेक्शन अनुरोध स्वीकार कर लिया गया है, और अपना प्रारंभिक अनुक्रम संख्या भेजता है। अंत में, क्लाइंट सर्वर को ACK फ़्लैग के साथ उत्तर देता है, यह दर्शाता है कि कनेक्शन सफलतापूर्वक स्थापित हो गया है। इस प्रकार, दोनों पक्ष ESTABLISHED स्थिति में होते हैं और एक-दूसरे को डेटा भेजना शुरू कर सकते हैं।
सामान्यतः, टीसीपी कनेक्शन स्थापना के लिए तीन-तरफ़ा हैंडशेक प्रक्रिया को कनेक्शन की स्थिरता और विश्वसनीयता सुनिश्चित करने, ऐतिहासिक कनेक्शनों पर भ्रम और संसाधनों की बर्बादी से बचने, तथा यह सुनिश्चित करने के लिए डिज़ाइन किया गया है कि दोनों पक्ष डेटा प्राप्त करने और भेजने में सक्षम हैं।
पोस्ट करने का समय: जनवरी-08-2025






