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