TCP కనెక్షన్ సెటప్
మేము వెబ్ను బ్రౌజ్ చేసినప్పుడు, ఇమెయిల్ పంపినప్పుడు లేదా ఆన్లైన్ గేమ్ ప్లే చేసినప్పుడు, దాని వెనుక ఉన్న సంక్లిష్ట నెట్వర్క్ కనెక్షన్ గురించి మేము తరచుగా ఆలోచించము. ఏదేమైనా, ఈ చిన్న దశలు మాకు మరియు సర్వర్ మధ్య స్థిరమైన సంభాషణను నిర్ధారిస్తాయి. చాలా ముఖ్యమైన దశలలో ఒకటి TCP కనెక్షన్ సెటప్, మరియు దీని యొక్క ప్రధాన భాగం మూడు-మార్గం హ్యాండ్షేక్.
ఈ వ్యాసం మూడు-మార్గం హ్యాండ్షేక్ యొక్క సూత్రం, ప్రక్రియ మరియు ప్రాముఖ్యతను వివరంగా చర్చిస్తుంది. దశల వారీగా, మూడు-మార్గం హ్యాండ్షేక్ ఎందుకు అవసరమో, ఇది కనెక్షన్ స్థిరత్వం మరియు విశ్వసనీయతను ఎలా నిర్ధారిస్తుందో మరియు డేటా బదిలీకి ఇది ఎంత ముఖ్యమో వివరిస్తాము. మూడు-మార్గం హ్యాండ్షేక్ గురించి లోతైన అవగాహనతో, మేము నెట్వర్క్ కమ్యూనికేషన్ యొక్క అంతర్లీన యంత్రాంగాల గురించి మరియు TCP కనెక్షన్ల విశ్వసనీయత గురించి స్పష్టమైన వీక్షణ గురించి మంచి అవగాహన పొందుతాము.
TCP మూడు-మార్గం హ్యాండ్షేక్ ప్రక్రియ మరియు రాష్ట్ర పరివర్తనాలు
TCP అనేది కనెక్షన్-ఆధారిత రవాణా ప్రోటోకాల్, దీనికి డేటా ట్రాన్స్మిషన్ ముందు కనెక్షన్ స్థాపన అవసరం. ఈ కనెక్షన్ స్థాపన ప్రక్రియ మూడు-మార్గం హ్యాండ్షేక్ ద్వారా జరుగుతుంది.
ప్రతి కనెక్షన్లో పంపబడిన TCP ప్యాకెట్లను నిశితంగా పరిశీలిద్దాం.
ప్రారంభంలో, క్లయింట్ మరియు సర్వర్ రెండూ మూసివేయబడ్డాయి. మొదట, సర్వర్ పోర్టులో చురుకుగా వింటుంది మరియు వినే స్థితిలో ఉంటుంది, అంటే సర్వర్ ప్రారంభించబడాలి. తరువాత, క్లయింట్ వెబ్పేజీని యాక్సెస్ చేయడం ప్రారంభించడానికి సిద్ధంగా ఉంది. సర్వర్తో కనెక్షన్ను ఏర్పాటు చేయాలి. మొదటి కనెక్షన్ ప్యాకెట్ యొక్క ఫార్మాట్ ఈ క్రింది విధంగా ఉంది:
క్లయింట్ కనెక్షన్ను ప్రారంభించినప్పుడు, ఇది యాదృచ్ఛిక ప్రారంభ క్రమం సంఖ్యను (క్లయింట్_ఐఎస్ఎన్) ఉత్పత్తి చేస్తుంది మరియు దానిని టిసిపి హెడర్ యొక్క "సీక్వెన్స్ నంబర్" ఫీల్డ్లో ఉంచుతుంది. అదే సమయంలో, అవుట్గోయింగ్ ప్యాకెట్ సిన్ ప్యాకెట్ అని సూచించడానికి క్లయింట్ సిన్ ఫ్లాగ్ స్థానాన్ని 1 కు సెట్ చేస్తుంది. మొదటి సిన్ ప్యాకెట్ను సర్వర్కు పంపడం ద్వారా సర్వర్తో కనెక్షన్ను ఏర్పాటు చేయాలనుకుంటున్నట్లు క్లయింట్ సూచిస్తుంది. ఈ ప్యాకెట్లో అప్లికేషన్ లేయర్ డేటా లేదు (అనగా డేటా పంపబడింది). ఈ సమయంలో, క్లయింట్ యొక్క స్థితి సిన్ సెంట్ గా గుర్తించబడింది.
సర్వర్ క్లయింట్ నుండి సిన్ ప్యాకెట్ను స్వీకరించినప్పుడు, అది యాదృచ్ఛికంగా దాని స్వంత సీరియల్ నంబర్ను (సర్వర్_ఐఎస్ఎన్) ప్రారంభించి, ఆ సంఖ్యను టిసిపి హెడర్ యొక్క "సీరియల్ నంబర్" ఫీల్డ్లో ఉంచుతుంది. తరువాత, సర్వర్ "రసీదు సంఖ్య" ఫీల్డ్లో క్లయింట్_ఐఎస్ఎన్ + 1 ను ప్రవేశిస్తుంది మరియు సిన్ మరియు ఎకెకె బిట్లను 1 కి సెట్ చేస్తుంది. చివరగా, సర్వర్ ప్యాకెట్ను క్లయింట్కు పంపుతుంది, ఇందులో అప్లికేషన్-లేయర్ డేటా లేదు (మరియు సర్వర్ పంపడానికి డేటా లేదు). ఈ సమయంలో, సర్వర్ SYN-RCVD స్థితిలో ఉంది.
క్లయింట్ సర్వర్ నుండి ప్యాకెట్ను స్వీకరించిన తర్వాత, తుది ప్రత్యుత్తర ప్యాకెట్కు ప్రతిస్పందించడానికి కింది ఆప్టిమైజేషన్లను చేయాలి: మొదట, క్లయింట్ ప్రత్యుత్తరం ప్యాకెట్ యొక్క TCP హెడర్ యొక్క ACK బిట్ను 1 కు సెట్ చేస్తుంది; రెండవది, క్లయింట్ "జవాబు సంఖ్యను నిర్ధారించండి" ఫీల్డ్లోని విలువ సర్వర్_ఐఎస్ఎన్ + 1 లో ప్రవేశిస్తుంది; చివరగా, క్లయింట్ ప్యాకెట్ను సర్వర్కు పంపుతుంది. ఈ ప్యాకెట్ క్లయింట్ నుండి సర్వర్కు డేటాను తీసుకెళ్లగలదు. ఈ కార్యకలాపాలు పూర్తయిన తర్వాత, క్లయింట్ స్థాపించబడిన స్థితిలోకి ప్రవేశిస్తాడు.
సర్వర్ క్లయింట్ నుండి ప్రత్యుత్తర ప్యాకెట్ను స్వీకరించిన తర్వాత, అది స్థాపించబడిన స్థితికి కూడా మారుతుంది.
పై ప్రక్రియ నుండి మీరు చూడగలిగినట్లుగా, మూడు-మార్గం హ్యాండ్షేక్ చేసేటప్పుడు, మూడవ హ్యాండ్షేక్ డేటాను తీసుకెళ్లడానికి అనుమతించబడుతుంది, కాని మొదటి రెండు హ్యాండ్షేక్లు కాదు. ఇది ఇంటర్వ్యూలలో తరచుగా అడిగే ప్రశ్న. మూడు-మార్గం హ్యాండ్షేక్ పూర్తయిన తర్వాత, రెండు పార్టీలు స్థాపించబడిన స్థితిలోకి ప్రవేశిస్తాయి, కనెక్షన్ విజయవంతంగా స్థాపించబడిందని సూచిస్తుంది, ఈ సమయంలో క్లయింట్ మరియు సర్వర్ ఒకదానికొకటి డేటాను పంపడం ప్రారంభించవచ్చు.
మూడు హ్యాండ్షేక్లు ఎందుకు? రెండుసార్లు కాదు, నాలుగు సార్లు?
సాధారణ సమాధానం ఏమిటంటే, "ఎందుకంటే మూడు-మార్గం హ్యాండ్షేక్ స్వీకరించే మరియు పంపే సామర్థ్యాన్ని హామీ ఇస్తుంది." ఈ సమాధానం సరైనది, కానీ ఇది ఉపరితల కారణం మాత్రమే, ప్రధాన కారణాన్ని ముందుకు తెచ్చలేదు. కింది వాటిలో, ఈ సమస్యపై మన అవగాహనను మరింతగా పెంచడానికి మూడు అంశాల నుండి ట్రిపుల్ హ్యాండ్షేక్కు గల కారణాలను నేను విశ్లేషిస్తాను.
మూడు-మార్గం హ్యాండ్షేక్ చారిత్రాత్మకంగా పునరావృతమయ్యే కనెక్షన్లను ప్రారంభించడాన్ని సమర్థవంతంగా నివారించగలదు (ప్రధాన కారణం)
మూడు-మార్గం హ్యాండ్షేక్ రెండు పార్టీలు నమ్మదగిన ప్రారంభ క్రమం సంఖ్యను అందుకున్నాయని హామీ ఇస్తుంది.
మూడు-మార్గం హ్యాండ్షేక్ వనరులను వృధా చేయకుండా చేస్తుంది.
కారణం 1: చారిత్రక నకిలీ కలుస్తుంది
ఒక్కమాటలో చెప్పాలంటే, మూడు-మార్గం హ్యాండ్షేక్కు ప్రధాన కారణం పాత నకిలీ కనెక్షన్ ప్రారంభించడం వల్ల కలిగే గందరగోళాన్ని నివారించడం. సంక్లిష్టమైన నెట్వర్క్ వాతావరణంలో, డేటా ప్యాకెట్ల ప్రసారం ఎల్లప్పుడూ పేర్కొన్న సమయానికి అనుగుణంగా గమ్యం హోస్ట్కు పంపబడదు మరియు నెట్వర్క్ రద్దీ మరియు ఇతర కారణాల వల్ల పాత డేటా ప్యాకెట్లు గమ్యం హోస్ట్కు చేరుకోవచ్చు. దీన్ని నివారించడానికి, కనెక్షన్ను స్థాపించడానికి TCP మూడు-మార్గం హ్యాండ్షేక్ను ఉపయోగిస్తుంది.
క్లయింట్ బహుళ సిన్ కనెక్షన్ స్థాపన ప్యాకెట్లను వరుసగా పంపినప్పుడు, నెట్వర్క్ రద్దీ వంటి పరిస్థితులలో, ఈ క్రిందివి సంభవించవచ్చు:
1- పాత సిన్ ప్యాకెట్లు తాజా సిన్ ప్యాకెట్ల ముందు సర్వర్ వద్దకు వస్తాయి.
2- పాత సిన్ ప్యాకెట్ను స్వీకరించిన తర్వాత సర్వర్ క్లయింట్కు సిన్ + ఎకెకె ప్యాకెట్కు ప్రత్యుత్తరం ఇస్తుంది.
3- క్లయింట్ SYN + ACK ప్యాకెట్ను స్వీకరించినప్పుడు, కనెక్షన్ దాని స్వంత సందర్భం ప్రకారం ఒక చారిత్రక కనెక్షన్ (సీక్వెన్స్ నంబర్ గడువు ముగిసింది లేదా సమయం ముగిసింది) అని నిర్ణయిస్తుంది, ఆపై కనెక్షన్ను నిలిపివేయడానికి RST ప్యాకెట్ను సర్వర్కు పంపుతుంది.
రెండు హ్యాండ్షేక్ కనెక్షన్తో, ప్రస్తుత కనెక్షన్ చారిత్రక కనెక్షన్ కాదా అని తెలుసుకోవడానికి మార్గం లేదు. మూడు-మార్గం హ్యాండ్షేక్ క్లయింట్ మూడవ ప్యాకెట్ను పంపడానికి సిద్ధంగా ఉన్నప్పుడు ప్రస్తుత కనెక్షన్ సందర్భం ఆధారంగా చారిత్రక కనెక్షన్ కాదా అని నిర్ణయించడానికి అనుమతిస్తుంది:
1- ఇది చారిత్రక కనెక్షన్ (సీక్వెన్స్ నంబర్ గడువు ముగిసింది లేదా సమయం ముగిసింది) అయితే, మూడవ హ్యాండ్షేక్ పంపిన ప్యాకెట్ చారిత్రక కనెక్షన్ను నిలిపివేయడానికి RST ప్యాకెట్.
2- ఇది చారిత్రక కనెక్షన్ కాకపోతే, మూడవసారి పంపిన ప్యాకెట్ ACK ప్యాకెట్, మరియు రెండు కమ్యూనికేషన్ పార్టీలు కనెక్షన్ను విజయవంతంగా ఏర్పాటు చేస్తాయి.
అందువల్ల, TCP మూడు-మార్గం హ్యాండ్షేక్ను ఉపయోగించడానికి ప్రధాన కారణం, ఇది చారిత్రక కనెక్షన్లను నివారించడానికి కనెక్షన్ను ప్రారంభిస్తుంది.
కారణం 2: రెండు పార్టీల ప్రారంభ క్రమం సంఖ్యలను సమకాలీకరించడానికి
TCP ప్రోటోకాల్ యొక్క రెండు వైపులా తప్పనిసరిగా సీక్వెన్స్ నంబర్ను నిర్వహించాలి, ఇది నమ్మదగిన ప్రసారాన్ని నిర్ధారించడానికి కీలకమైన అంశం. TCP కనెక్షన్లలో సీక్వెన్స్ సంఖ్యలు ముఖ్యమైన పాత్ర పోషిస్తాయి. అవి ఈ క్రింది వాటిని చేస్తాయి:
రిసీవర్ నకిలీ డేటాను తొలగించగలదు మరియు డేటా యొక్క ఖచ్చితత్వాన్ని నిర్ధారించగలదు.
డేటా యొక్క సమగ్రతను నిర్ధారించడానికి రిసీవర్ సీక్వెన్స్ నంబర్ యొక్క క్రమంలో ప్యాకెట్లను స్వీకరించవచ్చు.
Cumpley సీక్వెన్స్ నంబర్ ఇతర పార్టీ అందుకున్న డేటా ప్యాకెట్ను గుర్తించగలదు, నమ్మదగిన డేటా ట్రాన్స్మిషన్ను ప్రారంభిస్తుంది.
అందువల్ల, TCP కనెక్షన్ను స్థాపించిన తరువాత, క్లయింట్ ప్రారంభ సీక్వెన్స్ నంబర్తో సిన్ ప్యాకెట్లను పంపుతుంది మరియు క్లయింట్ యొక్క సిన్ ప్యాకెట్ యొక్క విజయవంతమైన రిసెప్షన్ను సూచించే ACK ప్యాకెట్తో సర్వర్ ప్రత్యుత్తరం అవసరం. అప్పుడు, సర్వర్ ప్రారంభ సీక్వెన్స్ నంబర్తో సిన్ ప్యాకెట్ను క్లయింట్కు పంపుతుంది మరియు క్లయింట్ ప్రత్యుత్తరం ఇవ్వడానికి వేచి ఉంటుంది, ఒకసారి మరియు అందరికీ, ప్రారంభ క్రమం సంఖ్యలు విశ్వసనీయంగా సమకాలీకరించబడిందని నిర్ధారించుకోండి.
రెండు పార్టీల ప్రారంభ క్రమం సంఖ్యలను విశ్వసనీయంగా సమకాలీకరించడానికి నాలుగు-మార్గం హ్యాండ్షేక్ కూడా సాధ్యమే అయినప్పటికీ, రెండవ మరియు మూడవ దశలను ఒకే దశగా మిళితం చేయవచ్చు, దీని ఫలితంగా మూడు-మార్గం హ్యాండ్షేక్ వస్తుంది. ఏదేమైనా, రెండు హ్యాండ్షేక్లు ఒక పార్టీ యొక్క ప్రారంభ క్రమం సంఖ్యను ఇతర పార్టీ విజయవంతంగా స్వీకరిస్తాయని మాత్రమే హామీ ఇవ్వగలవు, కాని రెండు పార్టీల ప్రారంభ క్రమం సంఖ్యను నిర్ధారించవచ్చని ఎటువంటి హామీ లేదు. అందువల్ల, TCP కనెక్షన్ల యొక్క స్థిరత్వం మరియు విశ్వసనీయతను నిర్ధారించడానికి మూడు-మార్గం హ్యాండ్షేక్ తీసుకోవలసిన ఉత్తమ ఎంపిక.
కారణం 3: వనరులను వృధా చేయకుండా ఉండండి
"రెండు హ్యాండ్షేక్" మాత్రమే ఉంటే, క్లయింట్ సిన్ అభ్యర్థన నెట్వర్క్లో నిరోధించబడినప్పుడు, క్లయింట్ సర్వర్ పంపిన ACK ప్యాకెట్ను స్వీకరించలేడు, కాబట్టి SYN ఆగ్రహం చెందుతుంది. అయినప్పటికీ, మూడవ హ్యాండ్షేక్ లేనందున, కనెక్షన్ను స్థాపించడానికి క్లయింట్ ACK రసీదును అందుకున్నారో లేదో సర్వర్ నిర్ణయించదు. అందువల్ల, ప్రతి సిన్ అభ్యర్థనను స్వీకరించిన తర్వాత సర్వర్ ముందుగానే కనెక్షన్ను ఏర్పాటు చేయగలదు. ఇది కింది వాటికి దారితీస్తుంది:
వనరుల వ్యర్థాలు: క్లయింట్ యొక్క సిన్ అభ్యర్థన నిరోధించబడితే, బహుళ సిన్ ప్యాకెట్లను పదేపదే ప్రసారం చేస్తే, అభ్యర్థనను స్వీకరించిన తర్వాత సర్వర్ బహుళ పునరావృత చెల్లని కనెక్షన్లను ఏర్పాటు చేస్తుంది. ఇది సర్వర్ వనరుల అనవసరమైన వ్యర్థాలకు దారితీస్తుంది.
సందేశ నిలుపుదల: మూడవ హ్యాండ్షేక్ లేకపోవడం వల్ల, కనెక్షన్ను స్థాపించడానికి క్లయింట్ సరిగ్గా ACK రసీదును అందుకున్నారో లేదో తెలుసుకోవడానికి సర్వర్కు మార్గం లేదు. తత్ఫలితంగా, సందేశాలు నెట్వర్క్లో చిక్కుకుంటే, క్లయింట్ సిన్ అభ్యర్థనలను పదే పదే పంపుతూనే ఉంటుంది, దీనివల్ల సర్వర్ నిరంతరం కొత్త కనెక్షన్లను ఏర్పాటు చేస్తుంది. ఇది నెట్వర్క్ రద్దీని పెంచుతుంది మరియు ఆలస్యం చేస్తుంది మరియు మొత్తం నెట్వర్క్ పనితీరును ప్రతికూలంగా ప్రభావితం చేస్తుంది.
అందువల్ల, నెట్వర్క్ కనెక్షన్ యొక్క స్థిరత్వం మరియు విశ్వసనీయతను నిర్ధారించడానికి, ఈ సమస్యలు సంభవించకుండా ఉండటానికి కనెక్షన్ను స్థాపించడానికి TCP మూడు-మార్గం హ్యాండ్షేక్ను ఉపయోగిస్తుంది.
సారాంశం
దినెట్వర్క్ ప్యాకెట్ బ్రోకర్TCP కనెక్షన్ స్థాపన మూడు-మార్గం హ్యాండ్షేక్తో జరుగుతుంది. మూడు-మార్గం హ్యాండ్షేక్ సమయంలో, క్లయింట్ మొదట SYN ఫ్లాగ్తో ఒక ప్యాకెట్ను సర్వర్కు పంపుతుంది, ఇది కనెక్షన్ను ఏర్పాటు చేయాలనుకుంటుందని సూచిస్తుంది. క్లయింట్ నుండి అభ్యర్థనను స్వీకరించిన తరువాత, సర్వర్ ఒక ప్యాకెట్ను SYN మరియు ACK ఫ్లాగ్లతో క్లయింట్కు ప్రత్యుత్తరం ఇస్తుంది, ఇది కనెక్షన్ అభ్యర్థన అంగీకరించబడిందని సూచిస్తుంది మరియు దాని స్వంత ప్రారంభ క్రమం సంఖ్యను పంపుతుంది. చివరగా, కనెక్షన్ విజయవంతంగా స్థాపించబడిందని సూచించడానికి క్లయింట్ సర్వర్కు ACK ఫ్లాగ్తో సమాధానం ఇస్తాడు. అందువల్ల, రెండు పార్టీలు స్థాపించబడిన స్థితిలో ఉన్నాయి మరియు ఒకదానికొకటి డేటాను పంపడం ప్రారంభించవచ్చు.
సాధారణంగా, TCP కనెక్షన్ స్థాపన కోసం మూడు-మార్గం హ్యాండ్షేక్ ప్రక్రియ కనెక్షన్ స్థిరత్వం మరియు విశ్వసనీయతను నిర్ధారించడానికి, చారిత్రక కనెక్షన్లపై గందరగోళం మరియు వనరుల వ్యర్థాలను నివారించడానికి మరియు రెండు పార్టీలు డేటాను స్వీకరించడానికి మరియు పంపగలవని నిర్ధారించడానికి రూపొందించబడింది.
పోస్ట్ సమయం: జనవరి -08-2025