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

टीसीपी थ्री-वे हैंडशेक

तीन पैकेट हैं:

  1. SYN क्लाइंट से
  2. SYN-ACK सर्वर से
  3. ACK क्लाइंट से

उसके बाद, कनेक्शन स्थापित हो जाता है और सामान्य डेटा ट्रांसफर शुरू हो जाता है।

चरण-दर-चरण स्पष्टीकरण

1. क्लाइंट SYN भेजता है

क्लाइंट वास्तव में कहता है, "मैं एक कनेक्शन शुरू करना चाहता हूं, और यहां मेरा प्रारंभिक अनुक्रम संख्या है।"

2. सर्वर SYN-ACK के साथ उत्तर देता है

सर्वर क्लाइंट के अनुक्रम संख्या को स्वीकार करता है और अपना प्रारंभिक अनुक्रम संख्या वापस भेजता है।

3. क्लाइंट ACK भेजता है

क्लाइंट सर्वर के अनुक्रम संख्या को स्वीकार करता है। इस बिंदु पर दोनों पक्ष विश्वसनीय रूप से डेटा के आदान-प्रदान के लिए आवश्यक बुनियादी स्थिति पर सहमत हैं।

टीसीपी को हैंडशेक की आवश्यकता क्यों है

हाथ मिलाना सिर्फ एक समारोह नहीं है। यह वास्तविक प्रोटोकॉल समस्याओं का समाधान करता है:

  • पुष्टि करता है कि दोनों समापन बिंदु भेज और प्राप्त कर सकते हैं
  • प्रारंभिक अनुक्रम ट्रैकिंग पर बातचीत करता है
  • पुराने सत्रों के विलंबित पैकेटों को वर्तमान ट्रैफ़िक समझे जाने से रोकता है
  • विश्वसनीय डिलीवरी के लिए आवश्यक स्थिति स्थापित करता है

इस सेटअप के बिना, टीसीपी अनुप्रयोगों द्वारा अपेक्षित क्रमबद्ध, विश्वसनीय स्ट्रीम व्यवहार प्रदान नहीं कर सका।

टीसीपी दो के बजाय तीन चरणों का उपयोग क्यों करती है

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

यही कारण है कि हाथ मिलाना "तीन-तरफा" है और केवल अनुरोध-प्रतिक्रिया जोड़ी नहीं है।

जब हाथ मिलाना विफल हो जाता है तो क्या होता है

हैंडशेक विफलताएं आमतौर पर कुछ पहचानने योग्य पैटर्न में आती हैं।

SYN भेजा गया, कोई उत्तर नहीं

संभावित कारण:

  • गंतव्य होस्ट नीचे है
  • फ़ायरवॉल चुपचाप पैकेट गिरा रहा है
  • गलत आईपी या पोर्ट
  • पथ में रूटिंग समस्या

सामान्य लक्षण:

  • कनेक्शन टाइमआउट
  • ब्राउज़र थोड़ी देर के लिए घूमता है, फिर विफल हो जाता है
  • telnet या क्लाइंट ऐप हार मानने से पहले हैंग हो जाता है

SYN भेजा गया, RST लौटाया गया

संभावित कारण:

  • पोर्ट बंद है
  • सेवा सुन नहीं रही है
  • फ़ायरवॉल को ड्रॉप के बजाय अस्वीकार करने के लिए कॉन्फ़िगर किया गया है

सामान्य लक्षण:

  • तत्काल "कनेक्शन अस्वीकृत"

SYN और SYN-ACK दिखाई देते हैं, फिर सत्र समाप्त हो जाता है

संभावित कारण:

  • असममित रूटिंग
  • स्टेटफुल फ़ायरवॉल समस्या
  • टूटा हुआ NAT डिवाइस
  • लोड बैलेंसर गलत कॉन्फ़िगरेशन
  • होस्ट-आधारित सुरक्षा उत्पाद प्रारंभिक स्वीकृति के बाद हस्तक्षेप करता है

वायरशार्क में हैंडशेक कैसा दिखता है

यदि आप वायरशार्क में ट्रैफ़िक कैप्चर करते हैं, तो एक स्वस्थ टीसीपी शुरुआत आमतौर पर इस तरह दिखती है:

  • SYN
  • SYN, ACK
  • ACK

यदि आप केवल SYN पैकेट को बार-बार पुनः प्रेषित होते देखते हैं, तो सर्वर उत्तर कभी वापस नहीं आता है। यदि आप आरएसटी देखते हैं, तो लक्ष्य ने सक्रिय रूप से कनेक्शन को अस्वीकार कर दिया है। यही दृश्यता है कि नेटवर्क समस्या निवारण के लिए पैकेट कैप्चर इतने उपयोगी क्यों हैं।

प्रदर्शन के लिए हाथ मिलाना क्यों मायने रखता है

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

यदि विलंबता 100 एमएस है:

  • हाथ मिलाने में लगभग एक राउंड ट्रिप का खर्च आता है
  • टीएलएस उसके बाद और बातचीत जोड़ता है
  • अल्पकालिक कनेक्शन काफ़ी धीमे महसूस होते हैं

यही एक कारण है कि आधुनिक प्रदर्शन ट्यूनिंग कनेक्शन के पुन: उपयोग, HTTP रखरखाव व्यवहार, सीडीएन और HTTP/2 और HTTP/3 जैसे प्रोटोकॉल की परवाह करता है।

टीसीपी हैंडशेक और टीएलएस एक ही चीज़ नहीं हैं

यह भ्रम का एक सामान्य स्रोत है।

  • टीसीपी हैंडशेक परिवहन कनेक्शन स्थापित करता है।
  • टीएलएस हैंडशेक उस कनेक्शन के शीर्ष पर एन्क्रिप्शन और प्रमाणपत्र विश्वास पर बातचीत करता है।

इसलिए जब आप HTTPS वेबसाइट खोलते हैं, तो सिस्टम आमतौर पर निम्न कार्य करता है:

  1. टीसीपी हैंडशेक
  2. टीएलएस हैंडशेक
  3. HTTP अनुरोध और प्रतिक्रिया

यदि कोई साइट "लोड करना शुरू करने" में धीमी है, तो देरी किसी भी हैंडशेक परत में हो सकती है।

पोर्ट स्कैनिंग से संबंध

कई स्कैनर हाथ मिलाने के व्यवहार पर निर्भर करते हैं:

  • SYN-ACK का अक्सर मतलब होता है कि पोर्ट खुला है
  • आरएसटी का मतलब आमतौर पर बंद होता है
  • कोई प्रतिक्रिया नहीं का अर्थ अक्सर फ़िल्टर किया हुआ या गिराया हुआ होता है

यह हैंडशेक को न केवल नेटवर्किंग के लिए, बल्कि गणना और सुरक्षा परीक्षण के लिए भी केंद्रीय बनाता है।

SYN बाढ़ हमले

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

सामान्य शमन:

  • SYN कुकीज़
  • दर सीमित करना
  • अपस्ट्रीम फ़िल्टरिंग
  • फ़ायरवॉल सुरक्षा
  • लोड बैलेंसर ट्यूनिंग

कनेक्शन टियरडाउन अलग है

सत्र शुरू करने के लिए तीन-तरफ़ा हैंडशेक का उपयोग किया जाता है। इसे बंद करने के लिए आमतौर पर दोनों दिशाओं में FIN और ACK पैकेटों को शामिल करने वाली एक अलग प्रक्रिया का उपयोग किया जाता है।

डिबगिंग सॉकेट फंसने पर टियरडाउन मायने रखता है TIME_WAIT या CLOSE_WAIT, लेकिन यह प्रारंभिक कनेक्शन हैंडशेक से अलग है।

निचली पंक्ति

टीसीपी हैंडशेक विश्वसनीय टीसीपी संचार के लिए तीन-चरणीय स्टार्टअप है:

  • SYN
  • SYN-ACK
  • ACK

यह मायने रखता है क्योंकि प्रत्येक वेब अनुरोध, एसएसएच सत्र, डेटाबेस कनेक्शन, या टीसीपी पर निर्मित एपीआई कॉल इस पर निर्भर करता है। यदि किसी कनेक्शन का समय समाप्त हो जाता है, इनकार कर दिया जाता है, या किसी भी डेटा को स्थानांतरित करने से पहले धीमा महसूस होता है, तो हैंडशेक जांच करने वाले पहले स्थानों में से एक है।