नेटवर्क पॅकेट ब्रोकर टीसीपी कनेक्शन्सची प्रमुख रहस्ये: ट्रिपल हँडशेकच्या गरजेमागील रहस्य उलगडले

TCP कनेक्शन सेटअप
जेव्हा आपण वेब ब्राउझ करतो, ईमेल पाठवतो किंवा ऑनलाइन गेम खेळतो, तेव्हा आपण त्यामागील गुंतागुंतीच्या नेटवर्क कनेक्शनबद्दल अनेकदा विचार करत नाही. तथापि, याच वरवर लहान वाटणाऱ्या पायऱ्या आपल्या आणि सर्व्हरमधील स्थिर संवाद सुनिश्चित करतात. यातील सर्वात महत्त्वाच्या पायऱ्यांपैकी एक म्हणजे TCP कनेक्शन सेटअप, आणि याचा गाभा थ्री-वे हँडशेक आहे.

या लेखात थ्री-वे हँडशेकचे तत्त्व, प्रक्रिया आणि महत्त्व यावर सविस्तर चर्चा केली जाईल. टप्प्याटप्प्याने, थ्री-वे हँडशेकची गरज का आहे, ते कनेक्शनची स्थिरता आणि विश्वसनीयता कशी सुनिश्चित करते, आणि डेटा हस्तांतरणासाठी ते किती महत्त्वाचे आहे, हे आम्ही स्पष्ट करू. थ्री-वे हँडशेकची सखोल माहिती मिळाल्याने, आपल्याला नेटवर्क कम्युनिकेशनच्या मूलभूत कार्यप्रणालीची अधिक चांगली समज येईल आणि TCP कनेक्शनच्या विश्वसनीयतेबद्दल अधिक स्पष्ट दृष्टिकोन प्राप्त होईल.

TCP थ्री-वे हँडशेक प्रक्रिया आणि स्थिती संक्रमण
TCP हा एक कनेक्शन-ओरिएंटेड ट्रान्सपोर्ट प्रोटोकॉल आहे, ज्यामध्ये डेटा प्रसारित करण्यापूर्वी कनेक्शन स्थापित करणे आवश्यक असते. ही कनेक्शन स्थापित करण्याची प्रक्रिया थ्री-वे हँडशेकद्वारे केली जाते.

 TCP थ्री-वे हँडशेक

चला, प्रत्येक कनेक्शनमध्ये पाठवल्या जाणाऱ्या TCP पॅकेट्सचे अधिक बारकाईने निरीक्षण करूया.

सुरुवातीला, क्लायंट आणि सर्व्हर दोन्ही बंद असतात. सर्वप्रथम, सर्व्हर एका पोर्टवर सक्रियपणे ऐकत असतो आणि 'LISTEN' स्थितीत असतो, याचा अर्थ सर्व्हर सुरू करणे आवश्यक आहे. त्यानंतर, क्लायंट वेबपेज ॲक्सेस करण्यास तयार होतो. त्याला सर्व्हरशी कनेक्शन स्थापित करणे आवश्यक असते. पहिल्या कनेक्शन पॅकेटचे स्वरूप खालीलप्रमाणे आहे:

 SYN पॅकेट

जेव्हा क्लायंट कनेक्शन सुरू करतो, तेव्हा तो एक यादृच्छिक प्रारंभिक अनुक्रम क्रमांक (client_isn) तयार करतो आणि तो TCP हेडरच्या "अनुक्रम क्रमांक" (Sequence number) फील्डमध्ये ठेवतो. त्याच वेळी, क्लायंट SYN फ्लॅगची स्थिती 1 वर सेट करतो, जेणेकरून बाहेर जाणारे पॅकेट हे SYN पॅकेट आहे हे सूचित होईल. क्लायंट सर्व्हरला पहिले SYN पॅकेट पाठवून हे सूचित करतो की त्याला सर्व्हरसोबत कनेक्शन स्थापित करायचे आहे. या पॅकेटमध्ये ॲप्लिकेशन लेयर डेटा (म्हणजेच, पाठवलेला डेटा) नसतो. या टप्प्यावर, क्लायंटची स्थिती SYN-SENT म्हणून चिन्हांकित केली जाते.

SYN+ACK पॅकेट

जेव्हा सर्व्हरला क्लायंटकडून SYN पॅकेट मिळते, तेव्हा तो स्वतःचा सिरीयल नंबर (server_isn) यादृच्छिकपणे निश्चित करतो आणि नंतर तो नंबर TCP हेडरच्या "Serial number" फील्डमध्ये टाकतो. त्यानंतर, सर्व्हर "Acknowledgement number" फील्डमध्ये client_isn + 1 टाकतो आणि SYN व ACK दोन्ही बिट्स 1 वर सेट करतो. शेवटी, सर्व्हर ते पॅकेट क्लायंटला पाठवतो, ज्यामध्ये कोणताही ॲप्लिकेशन-लेयर डेटा नसतो (आणि सर्व्हरला पाठवण्यासाठी कोणताही डेटा नसतो). या वेळी, सर्व्हर SYN-RCVD अवस्थेत असतो.

ACK पॅकेट

एकदा क्लायंटला सर्व्हरकडून पॅकेट मिळाल्यावर, अंतिम उत्तर पॅकेटला प्रतिसाद देण्यासाठी त्याला खालील ऑप्टिमायझेशन करणे आवश्यक आहे: प्रथम, क्लायंट उत्तर पॅकेटच्या TCP हेडरचा ACK बिट 1 वर सेट करतो; दुसरे, क्लायंट "उत्तर क्रमांक निश्चित करा" (Confirm answer number) फील्डमध्ये server_isn + 1 हे मूल्य प्रविष्ट करतो; शेवटी, क्लायंट ते पॅकेट सर्व्हरला पाठवतो. हे पॅकेट क्लायंटकडून सर्व्हरकडे डेटा वाहून नेऊ शकते. या क्रिया पूर्ण झाल्यावर, क्लायंट ESTABLISHED स्थितीत प्रवेश करेल.

एकदा सर्व्हरला क्लायंटकडून उत्तर पॅकेट मिळाल्यावर, तो देखील ESTABLISHED स्थितीत जातो.

वरील प्रक्रियेवरून तुम्ही पाहू शकता की, थ्री-वे हँडशेक करताना, तिसऱ्या हँडशेकला डेटा पाठवण्याची परवानगी असते, परंतु पहिल्या दोन हँडशेकला नसते. हा एक प्रश्न आहे जो मुलाखतींमध्ये अनेकदा विचारला जातो. एकदा थ्री-वे हँडशेक पूर्ण झाल्यावर, दोन्ही पक्ष 'एस्टॅब्लिश्ड' (ESTABLISHED) स्थितीत प्रवेश करतात, जे कनेक्शन यशस्वीरित्या स्थापित झाल्याचे दर्शवते. या टप्प्यावर क्लायंट आणि सर्व्हर एकमेकांना डेटा पाठवणे सुरू करू शकतात.

तीनदाच का? दोनदा नाही, चारदा?
सर्वसामान्य उत्तर असे आहे की, "कारण थ्री-वे हँडशेकमुळे प्राप्त करण्याची आणि पाठवण्याची क्षमता सुनिश्चित होते." हे उत्तर बरोबर आहे, परंतु हे केवळ वरवरचे कारण आहे, ते मुख्य कारण मांडत नाही. पुढे, या विषयाबद्दलची आपली समज अधिक सखोल करण्यासाठी, मी ट्रिपल हँडशेकच्या कारणांचे तीन पैलूंमधून विश्लेषण करणार आहे.

थ्री-वे हँडशेकमुळे पूर्वी पुनरावृत्त झालेल्या कनेक्शन्सचे इनिशियलायझेशन प्रभावीपणे टाळता येते (मुख्य कारण).
त्रिपक्षीय हँडशेकमुळे याची खात्री होते की दोन्ही पक्षांना एक विश्वसनीय प्रारंभिक अनुक्रम क्रमांक मिळाला आहे.
त्रिपक्षीय हस्तांदोलनामुळे संसाधनांचा अपव्यय टळतो.

कारण १: ऐतिहासिक डुप्लिकेट जॉइन्स टाळा
थोडक्यात सांगायचे झाल्यास, थ्री-वे हँडशेकचे मुख्य कारण म्हणजे जुन्या डुप्लिकेट कनेक्शनच्या आरंभीकरणामुळे होणारा गोंधळ टाळणे. एका जटिल नेटवर्क वातावरणात, डेटा पॅकेट्सचे प्रसारण नेहमीच निर्दिष्ट वेळेनुसार डेस्टिनेशन होस्टकडे केले जात नाही आणि नेटवर्कमधील गर्दी व इतर कारणांमुळे जुने डेटा पॅकेट्स डेस्टिनेशन होस्टवर आधी पोहोचू शकतात. हे टाळण्यासाठी, TCP कनेक्शन स्थापित करण्यासाठी थ्री-वे हँडशेकचा वापर करते.

त्रिपक्षीय हँडशेकमुळे ऐतिहासिक दुहेरी जोडण्या टाळल्या जातात.

जेव्हा एखादा क्लायंट एकापाठोपाठ अनेक SYN कनेक्शन एस्टॅब्लिशमेंट पॅकेट्स पाठवतो, तेव्हा नेटवर्क गर्दीसारख्या परिस्थितीत खालील गोष्टी घडू शकतात:

१- जुने SYN पॅकेट्स नवीनतम SYN पॅकेट्सच्या आधी सर्व्हरवर पोहोचतात.
२- सर्व्हर जुने SYN पॅकेट मिळाल्यानंतर क्लायंटला SYN + ACK पॅकेटने उत्तर देईल.
३- जेव्हा क्लायंटला SYN + ACK पॅकेट मिळते, तेव्हा ते स्वतःच्या संदर्भानुसार कनेक्शन हे ऐतिहासिक कनेक्शन आहे (अनुक्रमांक संपला आहे किंवा वेळ संपली आहे) हे ठरवते आणि नंतर कनेक्शन रद्द करण्यासाठी सर्व्हरला RST पॅकेट पाठवते.

दोन-हँडशेक कनेक्शनमध्ये, सध्याचे कनेक्शन ऐतिहासिक आहे की नाही हे ठरवण्याचा कोणताही मार्ग नसतो. तीन-मार्गी हँडशेकमुळे क्लायंटला तिसरे पॅकेट पाठवण्यास तयार झाल्यावर संदर्भाच्या आधारावर सध्याचे कनेक्शन ऐतिहासिक आहे की नाही हे ठरवता येते.

१- जर ते ऐतिहासिक कनेक्शन असेल (अनुक्रमांक संपला असेल किंवा वेळ संपली असेल), तर तिसऱ्या हँडशेकद्वारे पाठवलेले पॅकेट हे ऐतिहासिक कनेक्शन रद्द करण्यासाठीचे RST पॅकेट असते.
२- जर ते जुने कनेक्शन नसेल, तर तिसऱ्यांदा पाठवलेले पॅकेट हे ACK पॅकेट असते आणि संवाद साधणारे दोन्ही पक्ष यशस्वीरित्या कनेक्शन स्थापित करतात.

त्यामुळे, TCP थ्री-वे हँडशेक वापरण्याचे मुख्य कारण म्हणजे ते जुने कनेक्शन टाळण्यासाठी कनेक्शन सुरू करते.

कारण २: दोन्ही पक्षांचे प्रारंभिक अनुक्रमांक जुळवण्यासाठी
TCP प्रोटोकॉलच्या दोन्ही बाजूंना एक अनुक्रम क्रमांक (sequence number) राखणे आवश्यक आहे, जो विश्वसनीय प्रसारण सुनिश्चित करण्यासाठी एक महत्त्वाचा घटक आहे. TCP कनेक्शनमध्ये अनुक्रम क्रमांक महत्त्वाची भूमिका बजावतात. ते खालील गोष्टी करतात:

प्राप्तकर्ता डुप्लिकेट डेटा काढून टाकू शकतो आणि डेटाची अचूकता सुनिश्चित करू शकतो.

डेटाची अखंडता सुनिश्चित करण्यासाठी, प्राप्तकर्ता अनुक्रमांकाच्या क्रमाने पॅकेट्स प्राप्त करू शकतो.

● अनुक्रमांकामुळे दुसऱ्या पक्षाला मिळालेल्या डेटा पॅकेटची ओळख पटू शकते, ज्यामुळे विश्वसनीय डेटा प्रसारण शक्य होते.

म्हणून, TCP कनेक्शन स्थापित झाल्यावर, क्लायंट प्रारंभिक अनुक्रम क्रमांकासह SYN पॅकेट्स पाठवतो आणि सर्व्हरने क्लायंटचे SYN पॅकेट यशस्वीरित्या मिळाल्याचे दर्शवणारे ACK पॅकेट पाठवून उत्तर द्यावे अशी अपेक्षा करतो. त्यानंतर, सर्व्हर प्रारंभिक अनुक्रम क्रमांकासह SYN पॅकेट क्लायंटला पाठवतो आणि क्लायंटच्या उत्तराची वाट पाहतो, जेणेकरून प्रारंभिक अनुक्रम क्रमांक विश्वसनीयपणे सिंक्रोनाइझ झाले आहेत याची एकदाची खात्री करता येईल.

दोन्ही पक्षांचे प्रारंभिक अनुक्रमांक जुळवा

जरी दोन्ही पक्षांचे प्रारंभिक अनुक्रम क्रमांक विश्वसनीयपणे समक्रमित करण्यासाठी फोर-वे हँडशेक देखील शक्य असला तरी, दुसरी आणि तिसरी पायरी एकाच पायरीमध्ये एकत्र केली जाऊ शकते, ज्यामुळे थ्री-वे हँडशेक तयार होतो. तथापि, दोन हँडशेक केवळ एका पक्षाचा प्रारंभिक अनुक्रम क्रमांक दुसऱ्या पक्षाला यशस्वीरित्या प्राप्त होईल याचीच हमी देऊ शकतात, परंतु दोन्ही पक्षांच्या प्रारंभिक अनुक्रम क्रमांकांची पुष्टी होईल याची कोणतीही हमी नसते. म्हणून, TCP कनेक्शनची स्थिरता आणि विश्वसनीयता सुनिश्चित करण्यासाठी थ्री-वे हँडशेक हा सर्वोत्तम पर्याय आहे.

कारण ३: संसाधने वाया घालवणे टाळा
जर फक्त 'दोन-हँडशेक' असतील, तर जेव्हा क्लायंटची SYN विनंती नेटवर्कमध्ये ब्लॉक होते, तेव्हा क्लायंटला सर्व्हरने पाठवलेले ACK पॅकेट मिळू शकत नाही, त्यामुळे SYN पुन्हा पाठवले जाते. तथापि, तिसरा हँडशेक नसल्यामुळे, कनेक्शन स्थापित करण्यासाठी क्लायंटला ACK पोचपावती मिळाली आहे की नाही हे सर्व्हर ठरवू शकत नाही. म्हणून, सर्व्हर प्रत्येक SYN विनंती मिळाल्यानंतरच स्वतःहून कनेक्शन स्थापित करू शकतो. यामुळे खालील गोष्टी घडतात:

संसाधनांचा अपव्यय: जर क्लायंटची SYN विनंती ब्लॉक झाली, ज्यामुळे अनेक SYN पॅकेट्सचे वारंवार प्रसारण होते, तर विनंती मिळाल्यानंतर सर्व्हर अनेक अनावश्यक अवैध कनेक्शन्स स्थापित करेल. यामुळे सर्व्हरच्या संसाधनांचा अनावश्यक अपव्यय होतो.

संदेश टिकवून ठेवणे: तिसऱ्या हँडशेकच्या अभावामुळे, कनेक्शन स्थापित करण्यासाठी क्लायंटला ACK पोचपावती योग्यरित्या मिळाली आहे की नाही हे सर्व्हरला कळण्याचा कोणताही मार्ग नसतो. परिणामी, जर संदेश नेटवर्कमध्ये अडकले, तर क्लायंट वारंवार SYN रिक्वेस्ट पाठवत राहील, ज्यामुळे सर्व्हरला सतत नवीन कनेक्शन स्थापित करावे लागतील. यामुळे नेटवर्कमधील गर्दी आणि विलंब वाढेल आणि नेटवर्कच्या एकूण कार्यक्षमतेवर नकारात्मक परिणाम होईल.

संसाधने वाया घालवणे टाळा

म्हणून, नेटवर्क कनेक्शनची स्थिरता आणि विश्वसनीयता सुनिश्चित करण्यासाठी, या समस्या उद्भवणे टाळण्याकरिता TCP कनेक्शन स्थापित करण्यासाठी थ्री-वे हँडशेकचा वापर करते.

सारांश
नेटवर्क पॅकेट ब्रोकरTCP कनेक्शनची स्थापना थ्री-वे हँडशेकद्वारे केली जाते. थ्री-वे हँडशेक दरम्यान, क्लायंट प्रथम सर्व्हरला SYN फ्लॅग असलेले एक पॅकेट पाठवतो, जे दर्शवते की त्याला कनेक्शन स्थापित करायचे आहे. क्लायंटकडून विनंती मिळाल्यानंतर, सर्व्हर क्लायंटला SYN आणि ACK फ्लॅग असलेले एक पॅकेट पाठवून उत्तर देतो, जे दर्शवते की कनेक्शनची विनंती स्वीकारली आहे आणि स्वतःचा इनिशियल सिक्वेन्स नंबर पाठवतो. शेवटी, क्लायंट सर्व्हरला ACK फ्लॅगसह उत्तर पाठवून सूचित करतो की कनेक्शन यशस्वीरित्या स्थापित झाले आहे. अशाप्रकारे, दोन्ही पक्ष 'ESTABLISHED' स्थितीत येतात आणि एकमेकांना डेटा पाठवणे सुरू करू शकतात.

सर्वसाधारणपणे, TCP कनेक्शन स्थापित करण्यासाठीची त्रिपक्षीय हँडशेक प्रक्रिया ही कनेक्शनची स्थिरता आणि विश्वसनीयता सुनिश्चित करण्यासाठी, पूर्वीच्या कनेक्शन्सवरील गोंधळ आणि संसाधनांचा अपव्यय टाळण्यासाठी, तसेच दोन्ही पक्षांना डेटा प्राप्त करणे आणि पाठवणे शक्य होईल हे सुनिश्चित करण्यासाठी तयार केलेली आहे.


पोस्ट करण्याची वेळ: ०८-जानेवारी-२०२५