నెట్‌వర్క్ ప్యాకెట్ బ్రోకర్ TCP కనెక్షన్ల యొక్క కీలక రహస్యాలు: ట్రిపుల్ హ్యాండ్‌షేక్ అవసరాన్ని తొలగించాయి

TCP కనెక్షన్ సెటప్
మనం వెబ్ బ్రౌజ్ చేస్తున్నప్పుడు, ఇమెయిల్ పంపుతున్నప్పుడు లేదా ఆన్‌లైన్ గేమ్ ఆడుతున్నప్పుడు, దాని వెనుక ఉన్న సంక్లిష్టమైన నెట్‌వర్క్ కనెక్షన్ గురించి మనం తరచుగా ఆలోచించము. అయితే, మనకు మరియు సర్వర్‌కు మధ్య స్థిరమైన కమ్యూనికేషన్‌ను నిర్ధారించేది ఈ చిన్న దశలు మాత్రమే. అతి ముఖ్యమైన దశలలో ఒకటి TCP కనెక్షన్ సెటప్, మరియు దీని యొక్క ప్రధాన అంశం త్రీ-వే హ్యాండ్‌షేక్.

ఈ వ్యాసం త్రీ-వే హ్యాండ్‌షేక్ యొక్క సూత్రం, ప్రక్రియ మరియు ప్రాముఖ్యతను వివరంగా చర్చిస్తుంది. దశలవారీగా, త్రీ-వే హ్యాండ్‌షేక్ ఎందుకు అవసరమో, కనెక్షన్ స్థిరత్వం మరియు విశ్వసనీయతను ఇది ఎలా నిర్ధారిస్తుంది మరియు డేటా బదిలీకి ఇది ఎంత ముఖ్యమో మేము వివరిస్తాము. త్రీ-వే హ్యాండ్‌షేక్ గురించి లోతైన అవగాహనతో, నెట్‌వర్క్ కమ్యూనికేషన్ యొక్క అంతర్లీన విధానాల గురించి మరియు TCP కనెక్షన్‌ల విశ్వసనీయత గురించి స్పష్టమైన దృక్పథాన్ని మనం పొందుతాము.

TCP త్రీ-వే హ్యాండ్‌షేక్ ప్రాసెస్ మరియు స్టేట్ ట్రాన్సిషన్స్
TCP అనేది కనెక్షన్-ఆధారిత రవాణా ప్రోటోకాల్, దీనికి డేటా ట్రాన్స్మిషన్ ముందు కనెక్షన్ ఏర్పాటు అవసరం. ఈ కనెక్షన్ ఏర్పాటు ప్రక్రియ మూడు-మార్గం హ్యాండ్‌షేక్ ద్వారా జరుగుతుంది.

 TCP త్రీ-వే హ్యాండ్‌షేక్

ప్రతి కనెక్షన్‌లో పంపబడే TCP ప్యాకెట్‌లను నిశితంగా పరిశీలిద్దాం.

ప్రారంభంలో, క్లయింట్ మరియు సర్వర్ రెండూ మూసివేయబడ్డాయి. ముందుగా, సర్వర్ పోర్ట్‌లో చురుకుగా వింటుంది మరియు LISTEN స్థితిలో ఉంటుంది, అంటే సర్వర్ ప్రారంభించబడాలి. తరువాత, క్లయింట్ వెబ్‌పేజీని యాక్సెస్ చేయడం ప్రారంభించడానికి సిద్ధంగా ఉంటుంది. దీనికి సర్వర్‌తో కనెక్షన్‌ను ఏర్పాటు చేయాలి. మొదటి కనెక్షన్ ప్యాకెట్ యొక్క ఫార్మాట్ ఈ క్రింది విధంగా ఉంటుంది:

 SYN ప్యాకెట్

ఒక క్లయింట్ కనెక్షన్‌ను ప్రారంభించినప్పుడు, అది యాదృచ్ఛిక ప్రారంభ శ్రేణి సంఖ్యను (client_isn) ఉత్పత్తి చేస్తుంది మరియు దానిని TCP హెడర్ యొక్క "క్రమ సంఖ్య" ఫీల్డ్‌లో ఉంచుతుంది. అదే సమయంలో, అవుట్‌గోయింగ్ ప్యాకెట్ SYN ప్యాకెట్ అని సూచించడానికి క్లయింట్ SYN ఫ్లాగ్ స్థానాన్ని 1కి సెట్ చేస్తుంది. మొదటి SYN ప్యాకెట్‌ను సర్వర్‌కు పంపడం ద్వారా సర్వర్‌తో కనెక్షన్‌ను ఏర్పాటు చేయాలనుకుంటున్నట్లు క్లయింట్ సూచిస్తుంది. ఈ ప్యాకెట్‌లో అప్లికేషన్ లేయర్ డేటా (అంటే పంపిన డేటా) ఉండదు. ఈ సమయంలో, క్లయింట్ యొక్క స్థితి SYN-SENTగా గుర్తించబడుతుంది.

SYN+ACK ప్యాకెట్

ఒక సర్వర్ క్లయింట్ నుండి SYN ప్యాకెట్‌ను అందుకున్నప్పుడు, అది యాదృచ్ఛికంగా దాని స్వంత సీరియల్ నంబర్ (server_isn)ను ప్రారంభిస్తుంది మరియు ఆ సంఖ్యను TCP హెడర్ యొక్క "సీరియల్ నంబర్" ఫీల్డ్‌లో ఉంచుతుంది. తరువాత, సర్వర్ "అక్నాలెడ్జ్‌మెంట్ నంబర్" ఫీల్డ్‌లో client_isn + 1ని నమోదు చేస్తుంది మరియు SYN మరియు ACK బిట్‌లు రెండింటినీ 1కి సెట్ చేస్తుంది. చివరగా, సర్వర్ ప్యాకెట్‌ను క్లయింట్‌కు పంపుతుంది, దీనిలో అప్లికేషన్-లేయర్ డేటా లేదు (మరియు సర్వర్ పంపడానికి డేటా లేదు). ఈ సమయంలో, సర్వర్ SYN-RCVD స్థితిలో ఉంది.

ACK ప్యాకెట్

క్లయింట్ సర్వర్ నుండి ప్యాకెట్‌ను స్వీకరించిన తర్వాత, తుది ప్రత్యుత్తర ప్యాకెట్‌కు ప్రతిస్పందించడానికి అది క్రింది ఆప్టిమైజేషన్‌లను నిర్వహించాలి: మొదట, క్లయింట్ ప్రత్యుత్తర ప్యాకెట్ యొక్క TCP హెడర్ యొక్క ACK బిట్‌ను 1కి సెట్ చేస్తుంది; రెండవది, క్లయింట్ "సమాధాన సంఖ్యను నిర్ధారించండి" ఫీల్డ్‌లో server_isn + 1 విలువను నమోదు చేస్తుంది; చివరగా, క్లయింట్ ప్యాకెట్‌ను సర్వర్‌కు పంపుతుంది. ఈ ప్యాకెట్ క్లయింట్ నుండి సర్వర్‌కు డేటాను తీసుకెళ్లగలదు. ఈ కార్యకలాపాలు పూర్తయిన తర్వాత, క్లయింట్ ESTABLISHED స్థితిలోకి ప్రవేశిస్తుంది.

సర్వర్ క్లయింట్ నుండి ప్రత్యుత్తర ప్యాకెట్‌ను స్వీకరించిన తర్వాత, అది కూడా ESTABLISHED స్థితికి మారుతుంది.

పై ప్రక్రియ నుండి మీరు చూడగలిగినట్లుగా, మూడు-మార్గాల హ్యాండ్‌షేక్ చేస్తున్నప్పుడు, మూడవ హ్యాండ్‌షేక్ డేటాను తీసుకెళ్లడానికి అనుమతించబడుతుంది, కానీ మొదటి రెండు హ్యాండ్‌షేక్‌లు అనుమతించబడవు. ఇది ఇంటర్వ్యూలలో తరచుగా అడిగే ప్రశ్న. మూడు-మార్గాల హ్యాండ్‌షేక్ పూర్తయిన తర్వాత, రెండు పార్టీలు ESTABLISHED స్థితికి ప్రవేశిస్తాయి, ఇది కనెక్షన్ విజయవంతంగా స్థాపించబడిందని సూచిస్తుంది, ఆ సమయంలో క్లయింట్ మరియు సర్వర్ ఒకరికొకరు డేటాను పంపడం ప్రారంభించవచ్చు.

మూడు కరచాలనాలు ఎందుకు? రెండుసార్లు కాదు, నాలుగు సార్లు?
సాధారణంగా వచ్చే సమాధానం ఏమిటంటే, "ఎందుకంటే మూడు-మార్గాల హ్యాండ్‌షేక్ స్వీకరించే మరియు పంపే సామర్థ్యాన్ని హామీ ఇస్తుంది." ఈ సమాధానం సరైనది, కానీ ఇది ఉపరితల కారణం మాత్రమే, ప్రధాన కారణాన్ని ముందుకు తీసుకురాలేదు. ఈ సమస్యపై మన అవగాహనను మరింతగా పెంచుకోవడానికి నేను మూడు అంశాల నుండి ట్రిపుల్ హ్యాండ్‌షేక్‌కు గల కారణాలను విశ్లేషిస్తాను.

మూడు-మార్గాల హ్యాండ్‌షేక్ చారిత్రాత్మకంగా పునరావృతమయ్యే కనెక్షన్‌ల ప్రారంభాన్ని సమర్థవంతంగా నివారించవచ్చు (ప్రధాన కారణం)
మూడు-మార్గం హ్యాండ్‌షేక్ రెండు పార్టీలు నమ్మదగిన ప్రారంభ శ్రేణి సంఖ్యను అందుకున్నాయని హామీ ఇస్తుంది.
మూడు వైపులా కరచాలనం చేయడం వల్ల వనరులు వృధా కాకుండా ఉంటాయి.

కారణం 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