TCP कनेक्शन सेटअप
जेव्हा आपण वेब ब्राउझ करतो, ईमेल पाठवतो किंवा ऑनलाइन गेम खेळतो तेव्हा आपण अनेकदा त्यामागील जटिल नेटवर्क कनेक्शनबद्दल विचार करत नाही. तथापि, हे वरवर पाहता लहान पायऱ्या आहेत जे आपल्या आणि सर्व्हरमधील स्थिर संवाद सुनिश्चित करतात. सर्वात महत्वाच्या पायऱ्यांपैकी एक म्हणजे TCP कनेक्शन सेटअप आणि याचा गाभा म्हणजे तीन-मार्गी हस्तांदोलन.
या लेखात त्रि-मार्गी हस्तांदोलनाचे तत्व, प्रक्रिया आणि महत्त्व यावर सविस्तर चर्चा केली जाईल. टप्प्याटप्प्याने, आपण त्रि-मार्गी हस्तांदोलन का आवश्यक आहे, ते कनेक्शन स्थिरता आणि विश्वासार्हता कशी सुनिश्चित करते आणि डेटा ट्रान्सफरसाठी ते किती महत्त्वाचे आहे हे स्पष्ट करू. त्रि-मार्गी हस्तांदोलनाची सखोल समज घेतल्यास, आपल्याला नेटवर्क संप्रेषणाच्या अंतर्निहित यंत्रणेची चांगली समज मिळेल आणि TCP कनेक्शनच्या विश्वासार्हतेचे स्पष्ट दृश्य मिळेल.
TCP थ्री-वे हँडशेक प्रक्रिया आणि स्थिती संक्रमणे
TCP हा एक कनेक्शन-केंद्रित ट्रान्सपोर्ट प्रोटोकॉल आहे, ज्यासाठी डेटा ट्रान्समिशनपूर्वी कनेक्शन स्थापना आवश्यक असते. ही कनेक्शन स्थापना प्रक्रिया तीन-मार्गी हस्तांदोलनाने केली जाते.
प्रत्येक कनेक्शनमध्ये पाठवल्या जाणाऱ्या TCP पॅकेट्सवर बारकाईने नजर टाकूया.
सुरुवातीला, क्लायंट आणि सर्व्हर दोन्ही बंद असतात. प्रथम, सर्व्हर पोर्टवर सक्रियपणे ऐकतो आणि LISTEN स्थितीत असतो, याचा अर्थ सर्व्हर सुरू करणे आवश्यक आहे. पुढे, क्लायंट वेबपेज अॅक्सेस करण्यास तयार आहे. त्याला सर्व्हरशी कनेक्शन स्थापित करणे आवश्यक आहे. पहिल्या कनेक्शन पॅकेटचे स्वरूप खालीलप्रमाणे आहे:
जेव्हा क्लायंट कनेक्शन सुरू करतो, तेव्हा तो एक यादृच्छिक प्रारंभिक अनुक्रम क्रमांक (client_isn) तयार करतो आणि तो TCP हेडरच्या "अनुक्रम क्रमांक" फील्डमध्ये ठेवतो. त्याच वेळी, क्लायंट SYN फ्लॅग पोझिशन 1 वर सेट करतो जेणेकरून आउटगोइंग पॅकेट SYN पॅकेट आहे हे दर्शविण्यात येईल. क्लायंट सर्व्हरला पहिले SYN पॅकेट पाठवून सर्व्हरशी कनेक्शन स्थापित करू इच्छित असल्याचे दर्शवितो. या पॅकेटमध्ये अॅप्लिकेशन लेयर डेटा (म्हणजेच, पाठवलेला डेटा) नसतो. या टप्प्यावर, क्लायंटची स्थिती SYN-SENT म्हणून चिन्हांकित केली जाते.
जेव्हा सर्व्हरला क्लायंटकडून SYN पॅकेट मिळते, तेव्हा तो स्वतःचा सिरीयल नंबर (server_isn) यादृच्छिकपणे सुरू करतो आणि नंतर तो नंबर TCP हेडरच्या "सिरीयल नंबर" फील्डमध्ये ठेवतो. पुढे, सर्व्हर "पोचपावती क्रमांक" फील्डमध्ये client_isn + 1 प्रविष्ट करतो आणि SYN आणि ACK दोन्ही बिट्स 1 वर सेट करतो. शेवटी, सर्व्हर क्लायंटला पॅकेट पाठवतो, ज्यामध्ये कोणताही अॅप्लिकेशन-लेयर डेटा नसतो (आणि सर्व्हरला पाठवण्यासाठी कोणताही डेटा नसतो). यावेळी, सर्व्हर SYN-RCVD स्थितीत असतो.
एकदा क्लायंटला सर्व्हरकडून पॅकेट मिळाल्यावर, अंतिम रिप्लाय पॅकेटला प्रतिसाद देण्यासाठी त्याला खालील ऑप्टिमायझेशन करावे लागतात: प्रथम, क्लायंट रिप्लाय पॅकेटच्या TCP हेडरचा ACK बिट 1 वर सेट करतो; दुसरे, क्लायंट "कन्फर्म उत्तर क्रमांक" फील्डमध्ये server_isn + 1 मूल्य प्रविष्ट करतो; शेवटी, क्लायंट पॅकेट सर्व्हरला पाठवतो. हे पॅकेट क्लायंटकडून सर्व्हरवर डेटा वाहून नेऊ शकते. या ऑपरेशन्स पूर्ण झाल्यावर, क्लायंट ESTABLISHED स्थितीत प्रवेश करेल.
एकदा सर्व्हरला क्लायंटकडून रिप्लाय पॅकेट मिळाल्यावर, ते ESTABLISHED स्थितीत देखील स्विच होते.
वरील प्रक्रियेवरून तुम्ही पाहू शकता की, त्रि-मार्गी हस्तांदोलन करताना, तिसऱ्या हस्तांदोलनाला डेटा वाहून नेण्याची परवानगी असते, परंतु पहिल्या दोन हस्तांदोलनांना नाही. हा प्रश्न मुलाखतींमध्ये अनेकदा विचारला जातो. त्रि-मार्गी हस्तांदोलन पूर्ण झाल्यानंतर, दोन्ही पक्ष स्थापित स्थितीत प्रवेश करतात, जे दर्शवते की कनेक्शन यशस्वीरित्या स्थापित झाले आहे, ज्या टप्प्यावर क्लायंट आणि सर्व्हर एकमेकांना डेटा पाठवणे सुरू करू शकतात.
तीन वेळा हस्तांदोलन का? दोनदा नाही, चार वेळा?
सामान्य उत्तर असे आहे की, "कारण तीन-मार्गी हस्तांदोलन स्वीकारण्याची आणि पाठवण्याची क्षमता हमी देते." हे उत्तर बरोबर आहे, परंतु ते केवळ वरवरचे कारण आहे, मुख्य कारण पुढे करत नाही. पुढील भागात, मी या समस्येबद्दलची आपली समज वाढवण्यासाठी तीन पैलूंमधून तिहेरी हस्तांदोलनाची कारणे विश्लेषित करेन.
त्रि-मार्गी हस्तांदोलनामुळे ऐतिहासिकदृष्ट्या पुनरावृत्ती झालेल्या कनेक्शनची सुरुवात प्रभावीपणे टाळता येते (मुख्य कारण)
त्रि-मार्गी हस्तांदोलन हमी देते की दोन्ही पक्षांना एक विश्वासार्ह प्रारंभिक क्रम क्रमांक मिळाला आहे.
त्रि-मार्गी हस्तांदोलनामुळे संसाधनांचा अपव्यय टाळता येतो.
कारण १: ऐतिहासिक डुप्लिकेट जॉइन टाळा
थोडक्यात, त्रि-मार्गी हस्तांदोलनाचे मुख्य कारण म्हणजे जुन्या डुप्लिकेट कनेक्शन इनिशिएलायझेशनमुळे होणारा गोंधळ टाळणे. जटिल नेटवर्क वातावरणात, डेटा पॅकेट्सचे ट्रान्समिशन नेहमीच निर्दिष्ट वेळेनुसार डेस्टिनेशन होस्टकडे पाठवले जात नाही आणि नेटवर्क गर्दी आणि इतर कारणांमुळे जुने डेटा पॅकेट्स डेस्टिनेशन होस्टकडे प्रथम पोहोचू शकतात. हे टाळण्यासाठी, TCP कनेक्शन स्थापित करण्यासाठी त्रि-मार्गी हस्तांदोलन वापरते.
जेव्हा एखादा क्लायंट एकामागून एक अनेक SYN कनेक्शन स्थापना पॅकेट पाठवतो, तेव्हा नेटवर्क गर्दीसारख्या परिस्थितीत, खालील गोष्टी घडू शकतात:
१- जुने SYN पॅकेट्स नवीनतम SYN पॅकेट्सच्या आधी सर्व्हरवर येतात.
२- जुने SYN पॅकेट मिळाल्यानंतर सर्व्हर क्लायंटला SYN + ACK पॅकेटचे उत्तर देईल.
३- जेव्हा क्लायंटला SYN + ACK पॅकेट प्राप्त होते, तेव्हा ते कनेक्शन त्याच्या स्वतःच्या संदर्भानुसार एक ऐतिहासिक कनेक्शन (क्रमांक कालबाह्य किंवा कालबाह्य) असल्याचे निर्धारित करते आणि नंतर कनेक्शन रद्द करण्यासाठी RST पॅकेट सर्व्हरला पाठवते.
दोन-हँडशेक कनेक्शनसह, सध्याचे कनेक्शन ऐतिहासिक कनेक्शन आहे की नाही हे निश्चित करण्याचा कोणताही मार्ग नाही. तीन-मार्गी हँडशेक क्लायंटला तिसरे पॅकेट पाठविण्यास तयार असताना संदर्भाच्या आधारे सध्याचे कनेक्शन ऐतिहासिक कनेक्शन आहे की नाही हे निर्धारित करण्यास अनुमती देते:
१- जर ते ऐतिहासिक कनेक्शन असेल (क्रमांक कालबाह्य झाला असेल किंवा कालबाह्य झाला असेल), तर तिसऱ्या हस्तांदोलनाने पाठवलेले पॅकेट हे ऐतिहासिक कनेक्शन रद्द करण्यासाठी RST पॅकेट आहे.
२- जर ते ऐतिहासिक कनेक्शन नसेल, तर तिसऱ्यांदा पाठवलेले पॅकेट ACK पॅकेट असते आणि दोन्ही संप्रेषण करणारे पक्ष यशस्वीरित्या कनेक्शन स्थापित करतात.
म्हणूनच, TCP तीन-मार्गी हस्तांदोलन वापरण्याचे मुख्य कारण म्हणजे ते ऐतिहासिक कनेक्शन टाळण्यासाठी कनेक्शन सुरू करते.
कारण २: दोन्ही पक्षांचे प्रारंभिक क्रम क्रमांक समक्रमित करणे
टीसीपी प्रोटोकॉलच्या दोन्ही बाजूंनी एक अनुक्रमांक राखला पाहिजे, जो विश्वासार्ह प्रसारण सुनिश्चित करण्यासाठी एक महत्त्वाचा घटक आहे. टीसीपी कनेक्शनमध्ये अनुक्रमांक महत्त्वाची भूमिका बजावतात. ते पुढील गोष्टी करतात:
प्राप्तकर्ता डुप्लिकेट डेटा काढून टाकू शकतो आणि डेटाची अचूकता सुनिश्चित करू शकतो.
डेटाची अखंडता सुनिश्चित करण्यासाठी प्राप्तकर्ता अनुक्रम क्रमांकाच्या क्रमाने पॅकेट प्राप्त करू शकतो.
● अनुक्रमांक दुसऱ्या पक्षाला मिळालेल्या डेटा पॅकेटची ओळख पटवू शकतो, ज्यामुळे विश्वसनीय डेटा ट्रान्समिशन शक्य होते.
म्हणून, TCP कनेक्शन स्थापित केल्यावर, क्लायंट प्रारंभिक अनुक्रम क्रमांकासह SYN पॅकेट्स पाठवतो आणि सर्व्हरला क्लायंटच्या SYN पॅकेटचे यशस्वी रिसेप्शन दर्शविणारे ACK पॅकेटसह उत्तर देण्याची आवश्यकता असते. त्यानंतर, सर्व्हर प्रारंभिक अनुक्रम क्रमांकासह SYN पॅकेट क्लायंटला पाठवतो आणि क्लायंटने नेहमीच उत्तर देण्याची वाट पाहतो, जेणेकरून प्रारंभिक अनुक्रम क्रमांक विश्वसनीयरित्या समक्रमित केले जातील याची खात्री होईल.
जरी चार-मार्गी हस्तांदोलन दोन्ही पक्षांच्या प्रारंभिक क्रम क्रमांकांना विश्वासार्हपणे समक्रमित करण्यासाठी शक्य असले तरी, दुसरे आणि तिसरे चरण एकाच चरणात एकत्र केले जाऊ शकतात, ज्यामुळे त्रि-मार्गी हस्तांदोलन होते. तथापि, दोन्ही हस्तांदोलन केवळ एका पक्षाचा प्रारंभिक क्रम क्रमांक दुसऱ्या पक्षाला यशस्वीरित्या प्राप्त झाला आहे याची हमी देऊ शकतात, परंतु दोन्ही पक्षांच्या प्रारंभिक क्रम क्रमांकाची पुष्टी करता येईल याची कोणतीही हमी नाही. म्हणून, TCP कनेक्शनची स्थिरता आणि विश्वासार्हता सुनिश्चित करण्यासाठी तीन-मार्गी हस्तांदोलन हा सर्वोत्तम पर्याय आहे.
कारण ३: संसाधनांचा अपव्यय टाळा
जर फक्त "दोन-हँडशेक" असेल, तर जेव्हा क्लायंट SYN विनंती नेटवर्कमध्ये ब्लॉक केली जाते, तेव्हा क्लायंट सर्व्हरने पाठवलेले ACK पॅकेट प्राप्त करू शकत नाही, म्हणून SYN पुन्हा पाठवले जाईल. तथापि, तिसरे हस्तांदोलन नसल्यामुळे, कनेक्शन स्थापित करण्यासाठी क्लायंटला ACK पावती मिळाली आहे की नाही हे सर्व्हर निर्धारित करू शकत नाही. म्हणून, प्रत्येक SYN विनंती प्राप्त झाल्यानंतर सर्व्हर केवळ सक्रियपणे कनेक्शन स्थापित करू शकतो. यामुळे खालील गोष्टी घडतात:
संसाधनांचा अपव्यय: जर क्लायंटची SYN विनंती ब्लॉक केली गेली, ज्यामुळे अनेक SYN पॅकेट्सचे वारंवार प्रसारण होत असेल, तर विनंती प्राप्त झाल्यानंतर सर्व्हर अनेक अनावश्यक अवैध कनेक्शन स्थापित करेल. यामुळे सर्व्हर संसाधनांचा अनावश्यक अपव्यय होतो.
मेसेज रिटेंशन: तिसऱ्यांदा हस्तांदोलन न झाल्यामुळे, क्लायंटला कनेक्शन स्थापित करण्यासाठी ACK पावती योग्यरित्या मिळाली आहे की नाही हे सर्व्हरला कळू शकत नाही. परिणामी, जर मेसेज नेटवर्कमध्ये अडकले तर क्लायंट SYN विनंत्या वारंवार पाठवत राहील, ज्यामुळे सर्व्हरला सतत नवीन कनेक्शन स्थापित करावे लागतील. यामुळे नेटवर्क गर्दी आणि विलंब वाढेल आणि एकूण नेटवर्क कामगिरीवर नकारात्मक परिणाम होईल.
म्हणून, नेटवर्क कनेक्शनची स्थिरता आणि विश्वासार्हता सुनिश्चित करण्यासाठी, या समस्या टाळण्यासाठी TCP कनेक्शन स्थापित करण्यासाठी त्रि-मार्गी हँडशेक वापरते.
सारांश
दनेटवर्क पॅकेट ब्रोकरTCP कनेक्शन स्थापना तीन-मार्गी हँडशेकने केली जाते. तीन-मार्गी हँडशेक दरम्यान, क्लायंट प्रथम सर्व्हरला SYN फ्लॅगसह एक पॅकेट पाठवतो, जो दर्शवितो की तो कनेक्शन स्थापित करू इच्छित आहे. क्लायंटकडून विनंती प्राप्त झाल्यानंतर, सर्व्हर क्लायंटला SYN आणि ACK फ्लॅगसह एक पॅकेट उत्तर देतो, जो दर्शवितो की कनेक्शन विनंती स्वीकारली गेली आहे आणि त्याचा स्वतःचा प्रारंभिक क्रम क्रमांक पाठवतो. शेवटी, क्लायंट सर्व्हरला ACK फ्लॅगसह उत्तर देतो जे दर्शविते की कनेक्शन यशस्वीरित्या स्थापित झाले आहे. अशा प्रकारे, दोन्ही पक्ष स्थापित स्थितीत आहेत आणि एकमेकांना डेटा पाठवू शकतात.
सर्वसाधारणपणे, TCP कनेक्शन स्थापनेसाठी त्रि-मार्गी हस्तांदोलन प्रक्रिया कनेक्शन स्थिरता आणि विश्वासार्हता सुनिश्चित करण्यासाठी, ऐतिहासिक कनेक्शनवर गोंधळ आणि संसाधनांचा अपव्यय टाळण्यासाठी आणि दोन्ही पक्ष डेटा प्राप्त करण्यास आणि पाठविण्यास सक्षम आहेत याची खात्री करण्यासाठी डिझाइन केलेली आहे.
पोस्ट वेळ: जानेवारी-०८-२०२५