इंटरनेट के शुरुआती वर्षों के दौरान, इंटरनेट प्रोटोकॉल (आईपी) एकमात्र ऐसा प्रोटोकॉल था जिसका उपयोग लोग इंटरनेट से कनेक्ट करने के लिए करते थे। आईपी के साथ समस्या यह थी कि आप एक संदेश भेज सकते थे और यह सुनिश्चित नहीं कर सकते थे कि प्राप्तकर्ता इसे प्राप्त करेगा या नहीं। इस कारण से, TCP/IP की स्थापना की गई थी।
टीसीपी/आईपी सुनिश्चित करता है कि आपके द्वारा भेजा गया सभी डेटा उसके प्राप्तकर्ता तक पहुंच जाए। यह डेटा भेजने से पहले क्लाइंट और सर्वर को एक सुरक्षित कनेक्शन प्रदान करके ऐसा करता है। यह सुरक्षित कनेक्शन एक तीन-तरफा हैंडशेक के रूप में जानी जाने वाली प्रक्रिया के माध्यम से स्थापित किया जाता है, जिसे टीसीपी/आईपी हैंडशेक भी कहा जाता है।
थ्री-वे हैंडशेक क्या है?
थ्री-वे हैंडशेक (टीसीपी/आईपी हैंडशेक) क्लाइंट और सर्वर के बीच टीसीपी कनेक्शन स्थापित करने की कोशिश कर रहे पहले तीन इंटरैक्शन हैं। एक सुरक्षित कनेक्शन बनाने के लिए ये प्रारंभिक इंटरैक्शन आवश्यक हैं। इस चरण में, क्लाइंट और सर्वर दोनों उन मापदंडों पर सहमत होंगे जिनका उपयोग वे डेटा के आने वाले और बाहर जाने वाले पैकेटों की जांच और सत्यापन के लिए करेंगे। ये पैरामीटर टीसीपी सेगमेंट के रूप में होंगे।
टीसीपी सेगमेंट क्या है?
एक टीसीपी/आईपी कनेक्शन में, भेजे जा रहे सभी डेटा को टीसीपी सेगमेंट के रूप में जाना जाता है, पर कट और संरचित किया जाना चाहिए। इन खंडों में आईपी पते, पोर्ट, फ्लैग बिट्स, अनुक्रम संख्या, पावती संख्या और वैकल्पिक डेटा या पेलोड जैसी जानकारी होती है।
पहले तीन इंटरैक्शन (थ्री-वे हैंडशेक) में केवल टीसीपी सेगमेंट हेडर होंगे जिनमें कोई पेलोड या संलग्न डेटा नहीं होगा। यहाँ एक TCP खंड का एक नमूना है
ध्यान दें कि ऊपर दिया गया उदाहरण केवल TCP के लिए है। एक पूर्ण टीसीपी/आईपी खंड के लिए दोनों की आवश्यकता होती है आईपी पते प्रेषक और रिसीवर से ऊपर TCP खंड के शीर्ष पर।
जब भी आप किसी व्यक्ति को पैकेज भेजते हैं, तो डिलीवरी सेवा द्वारा आपको एक सूचना फॉर्म भरने और फिर शिपिंग से पहले इसे पार्सल में संलग्न करने की आवश्यकता होती है। इसी तरह, टीसीपी को प्राप्तकर्ता को सेगमेंट (पार्सल) भेजने से पहले डेटा (पैकेज) में एक सेगमेंट हेड (सूचना फॉर्म) संलग्न करने की आवश्यकता होती है।
जब भी कोई क्लाइंट किसी सर्वर से संचार करता है, तो दोनों पक्षों को टीसीपी सेगमेंट के रूप में अपनी बातचीत को प्रारूपित करने की आवश्यकता होगी। एक टीसीपी सेगमेंट में एक टीसीपी सेगमेंट हेड होता है जो उस डेटा से जुड़ा होता है जिसे आप भेजने की कोशिश कर रहे हैं। प्रेषक को खंड प्रमुख के लिए आवश्यक जानकारी भरनी होगी।
तीन-तरफ़ा हैंडशेक के लिए, प्रेषक को निम्नलिखित को भरना होगा:
- स्रोत पोर्ट: प्रेषक के बंदरगाह की पहचान करता है
- गंतव्य बंदरगाह: रिसीवर के पोर्ट की पहचान करता है
- क्रम संख्या: खंड अनुक्रम इंगित करता है
- पावती संख्या: यह दर्शाता है कि दिए गए अनुक्रम संख्या में एक को जोड़कर एक खंड को स्वीकार किया गया है
सेगमेंट हेड फ़ील्ड भरने के अलावा, प्रेषक को फ़्लैग बिट का भी चयन करना होगा। कुल छह फ़्लैग बिट्स हैं, लेकिन तीन-तरफ़ा हैंडशेक के लिए, आपको केवल निम्नलिखित दो की आवश्यकता होगी:
- एसवाईएन: एक क्रमांक देता है। इस क्रम संख्या का उपयोग शेष इंटरैक्शन के लिए आने वाले सभी खंडों के अनुक्रम की गणना करने के लिए किया जाएगा।
- एसीके: इंगित करता है कि SYN नंबर का रिसीवर दिए गए SYN नंबर में एक (1) जोड़कर कनेक्शन अनुरोध स्वीकार करता है।
अब जब आप जानते हैं कि टीसीपी सेगमेंट क्या है, तो आइए देखें कि तीन-तरफा हैंडशेक में इसका उपयोग कैसे किया जाता है।
थ्री-वे हैंडशेक कैसे काम करता है
तीन-तरफ़ा हैंडशेक तब स्थापित किया जाता है जब क्लाइंट और होस्ट दोनों ने सूचनाओं का आदान-प्रदान किया हो और एक-दूसरे के अनुक्रम संख्या को स्वीकार किया हो। जैसा कि नाम से ही स्पष्ट है कि थ्री-वे हैंडशेक तीन चरणों में किया जाता है।
सबसे पहले, क्लाइंट एक शुद्ध SYN खंड भेजता है जो दर्शाता है कि वह एक कनेक्शन चाहता है। दूसरा, सर्वर एक SYN-ACK सेगमेंट के साथ प्रतिक्रिया करता है जिसका अर्थ है कि उसने अनुरोध स्वीकार कर लिया है और क्लाइंट को स्वीकार करने के लिए अपना स्वयं का SYN नंबर भेज रहा है। तीसरा, क्लाइंट सर्वर को एक एसीके सेगमेंट भेजता है ताकि यह सूचित किया जा सके कि सर्वर का SYN नंबर स्वीकार कर लिया गया है और आगे कनेक्शन के लिए उपयोग किया जाएगा।
थ्री-वे हैंडशेक कुछ इस तरह दिखेगा:
आइए इसे तोड़ें और खंडों को देखें ताकि आप जान सकें कि वास्तव में क्या होता है जब क्लाइंट और सर्वर एक्सचेंज करते हैं और अनुक्रम संख्याओं को स्वीकार करते हैं।
चरण 1: क्लाइंट एक SYN सेगमेंट भेजता है
क्लाइंट सर्वर को SYN सेगमेंट भेजकर एक अनुरोध कनेक्शन भेजता है। क्लाइंट सर्वर का पता लगाने और टीसीपी सेगमेंट भेजने के लिए क्लाइंट के आईपी पते का उपयोग करता है।
खंड की जटिलता को कम करने के लिए, आइए कुछ खंड क्षेत्रों को अनदेखा करें और तीन-तरफ़ा हैंडशेक कनेक्शन के लिए आवश्यक आवश्यकताओं पर ध्यान केंद्रित करें। इसमें सोर्स पोर्ट, डेस्टिनेशन पोर्ट, सीक्वेंस नंबर, पावती संख्या और किस प्रकार के फ्लैग बिट का उपयोग किया जाता है, शामिल हैं।
और इसके साथ, एक SYN/अनुरोध खंड इस तरह दिखना चाहिए:
क्लाइंट पोर्ट 49152 और 65536 के बीच एक यादृच्छिक संख्या है। यह पोर्ट रेंज सहमत-पर सीमा है जिसे सार्वजनिक डिवाइस इंटरनेट से कनेक्ट करने के लिए गतिशील रूप से उपयोग कर सकते हैं। 1024 से 49151 की पोर्ट रेंज निजी हैं। निर्दिष्ट सीमा के भीतर पोर्ट का उपयोग करने के लिए उन्हें एक इकाई द्वारा पंजीकृत करना होगा। 1024 से नीचे के पोर्ट नंबर विभिन्न कार्यों और इंटरनेट प्रोटोकॉल जैसे एफ़टीपी (पोर्ट 20), एसएमटीपी (पोर्ट 25), डीएनएस (पोर्ट 53), और एचटीटीपी (पोर्ट 80) के लिए आरक्षित पोर्ट हैं।
वास्तविक जीवन में, अनुक्रम संख्या एक यादृच्छिक संख्या है। उदाहरण के लिए, हमने कल्पना करना आसान बनाने के लिए 000000000000 का उपयोग किया।
जैसे-जैसे हम चरणों के माध्यम से आगे बढ़ते हैं, क्रम संख्या पर ध्यान दें। वर्तमान में, यह 000000000 है। वर्तमान में कोई पावती संख्या नहीं है क्योंकि स्वीकार करने के लिए कुछ नहीं है।
चरण 2: सर्वर SYN-ACK सेगमेंट के साथ जवाब देता है
एक बार जब सर्वर एक SYN खंड प्राप्त करता है, तो वह एक ACK खंड भेजकर प्रतिक्रिया देगा जिसमें पावती संख्या होगी। पावती संख्या ग्राहक की क्रम संख्या प्लस वन (1) होगी।
स्रोत पोर्ट को देखें। यह दर्शाता है कि सेगमेंट पोर्ट 20 से है, यह दर्शाता है कि यह सर्वर से प्रतिक्रिया के रूप में आया है।
अब, पावती संख्या को देखें। यह 0000000000001 है, जो क्लाइंट की क्रम संख्या (0000000000) प्लस वन (1) है। इस तरह एक सेगमेंट को ट्रैक किया जाता है। मान लें कि क्लाइंट को एक एसीके सेगमेंट प्रतिक्रिया मिली जहां पावती संख्या 0000000002 है। यह क्लाइंट को इंगित करेगा कि सेगमेंट 0000000001 गायब था और क्लाइंट को उसके आने तक इंतजार करना होगा ताकि आपको पैकेट हानि का अनुभव न हो.
जैसा कि आप देख सकते हैं, दो फ्लैग बिट सक्रिय हैं- SYN और ACK।
क्लाइंट के अनुक्रम संख्या को स्वीकार करने के अलावा, सर्वर क्लाइंट के लिए सर्वर के अनुक्रम संख्या प्लस वन (1) को स्वीकार करने के लिए अपना स्वयं का अनुक्रम संख्या भी भेजेगा। हमारे उदाहरण में, हमने 11111111111 को सर्वर के क्रम संख्या के रूप में उपयोग किया है। फिर से, वास्तविक दुनिया में, यह संख्या यादृच्छिक है।
ध्यान दें कि क्लाइंट और सर्वर की क्रम संख्या का मिलान नहीं होना चाहिए। जब तक दोनों पक्ष एक दूसरे के अद्वितीय अनुक्रम संख्या को स्वीकार करते हैं, कनेक्शन विश्वसनीय होगा।
चरण 3: क्लाइंट एसीके सेगमेंट के साथ जवाब देता है
अंत में, क्लाइंट सर्वर की अनुक्रम संख्या को स्वीकार करता है।
अंतिम खंड क्लाइंट से एक एसीके खंड है।
जैसा कि आप कर सकते हैं क्लाइंट सर्वर के अनुक्रम संख्या (1111111111) प्लस वन (1) के साथ जवाब देकर सर्वर के अनुक्रम संख्या को स्वीकार करेगा, जो कि 1111111112 है।
क्लाइंट और सर्वर अब अनुक्रम संख्या नहीं भेजेंगे क्योंकि अनुक्रम की शुरुआत पहले ही स्वीकार की जा चुकी है। हालांकि, दोनों पक्षों को उम्मीद है कि पावती खंडों में क्रम संख्या और एक (1) और बातचीत के दौरान संख्या बाइट्स जारी रहेगी। इस मामले में, क्लाइंट अगले सर्वर प्रतिक्रिया की अपेक्षा कर रहा है कि उसके पास 0000000002 का एसीके हो (यदि कोई संलग्न डेटा नहीं है)।
जिसके बाद थ्री-वे हैंडशेक स्थापित होता है!
यह समझना कि नेटवर्क कनेक्शन कैसे काम करते हैं
अब जब आप सीख चुके हैं कि थ्री-वे हैंडशेक कैसे काम करता है, तो आपको यह समझने में भी आसानी होगी कि हैंडशेक के बाद टीसीपी कैसे काम करता है। हैंडशेक स्थापित होने पर क्लाइंट और सर्वर डेटा भेजना शुरू कर देंगे। इस बार पूर्ण खंड प्रारूप का उपयोग किया जाएगा, साथ ही वैकल्पिक डेटा या पेलोड भी।
आसान स्थानान्तरण के लिए डेटा को आमतौर पर छोटे टुकड़ों में विभाजित/काटा जाता है। प्रत्येक डेटा सेगमेंट का अपना सेगमेंट हेड होता है जिसमें अनुक्रम संख्या और पावती संख्या होती है। अनुक्रम संख्या का कारण खंडों के अनुक्रम को जानना है जब वे अंततः फिर से जुड़ जाएंगे। पावती संख्या प्रेषक के साथ सत्यापित करने के लिए है कि उनका खंड प्राप्त हो गया है और यह आने वाले खंडों के अनुक्रम से मेल खाता है।
एक अनुक्रम संख्या की गणना करना और उन्हें एक पावती के साथ सत्यापित करना है कि कैसे टीसीपी बिना किसी लापता डेटा पैकेट के डेटा के बड़े हिस्से को मज़बूती से परिवहन कर सकता है।
और इसके साथ ही, आपको इस बात का बहुत अच्छा अंदाजा होना चाहिए कि TCP कैसे काम करता है।