நெட்வொர்க் பாக்கெட் புரோக்கர் TCP இணைப்புகளின் முக்கிய மர்மங்கள்: டிரிபிள் ஹேண்ட்ஷேக்கின் தேவையைத் தெளிவுபடுத்தியது

TCP இணைப்பு அமைப்பு
நாம் இணையத்தில் உலாவும்போது, ​​மின்னஞ்சல் அனுப்பும்போது, ​​அல்லது ஆன்லைன் விளையாட்டு விளையாடும்போது, ​​அதன் பின்னணியில் உள்ள சிக்கலான பிணைய இணைப்பைப் பற்றி நாம் பெரும்பாலும் சிந்திப்பதில்லை. இருப்பினும், நமக்கும் சேவையகத்திற்கும் இடையே நிலையான தகவல்தொடர்பை உறுதி செய்வது, வெளிப்படையாகச் சிறியதாகத் தோன்றும் இந்தச் செயல்கள்தான். மிக முக்கியமான படிகளில் ஒன்று TCP இணைப்பு அமைத்தல் ஆகும், மேலும் இதன் மையமாக இருப்பது முத்தரப்புக் கைக்குலுக்கல் (three-way handshake) ஆகும்.

இந்தக் கட்டுரை, மூன்று வழி இணைப்புப் பரிமாற்றத்தின் கொள்கை, செயல்முறை மற்றும் முக்கியத்துவம் பற்றி விரிவாக விவாதிக்கும். மூன்று வழி இணைப்புப் பரிமாற்றம் ஏன் தேவைப்படுகிறது, அது எவ்வாறு இணைப்பு நிலைத்தன்மையையும் நம்பகத்தன்மையையும் உறுதி செய்கிறது, மேலும் தரவுப் பரிமாற்றத்திற்கு அது எவ்வளவு முக்கியமானது என்பதைப் படிப்படியாக விளக்குவோம். மூன்று வழி இணைப்புப் பரிமாற்றத்தைப் பற்றிய ஆழமான புரிதலுடன், பிணையத் தொடர்பின் அடிப்படை இயக்கமுறைகள் குறித்த சிறந்த புரிதலையும், TCP இணைப்புகளின் நம்பகத்தன்மை குறித்த தெளிவான பார்வையையும் நாம் பெறுவோம்.

TCP மூன்று வழி கைக்குலுக்கல் செயல்முறை மற்றும் நிலை மாற்றங்கள்
TCP என்பது ஒரு இணைப்பு சார்ந்த போக்குவரத்து நெறிமுறை ஆகும், இதற்குத் தரவுப் பரிமாற்றத்திற்கு முன் இணைப்பு ஏற்படுத்துதல் அவசியமாகும். இந்த இணைப்பு ஏற்படுத்துதல் செயல்முறை, மூன்று வழி கைக்குலுக்கல் மூலம் செய்யப்படுகிறது.

 TCP மூன்று வழி கைக்குலுக்கல்

ஒவ்வொரு இணைப்பிலும் அனுப்பப்படும் TCP பாக்கெட்டுகளை இன்னும் கூர்ந்து கவனிப்போம்.

ஆரம்பத்தில், கிளையன்ட் மற்றும் சர்வர் இரண்டும் மூடப்பட்ட நிலையில் (CLOSED) இருக்கும். முதலில், சர்வர் ஒரு போர்ட்டில் தீவிரமாகக் கேட்டுக்கொண்டிருக்கும் மற்றும் LISTEN நிலையில் இருக்கும், அதாவது சர்வர் தொடங்கப்பட வேண்டும். அடுத்து, கிளையன்ட் வலைப்பக்கத்தை அணுகத் தயாராக உள்ளது. அது சர்வருடன் ஒரு இணைப்பை ஏற்படுத்த வேண்டும். முதல் இணைப்பு பாக்கெட்டின் வடிவம் பின்வருமாறு:

 SYN பாக்கெட்

ஒரு கிளையன்ட் இணைப்பைத் தொடங்கும் போது, ​​அது ஒரு சமவாய்ப்பு ஆரம்ப வரிசை எண்ணை (client_isn) உருவாக்கி, அதை TCP ஹெடரின் "வரிசை எண்" புலத்தில் வைக்கிறது. அதே நேரத்தில், வெளிச்செல்லும் பாக்கெட் ஒரு SYN பாக்கெட் என்பதைக் குறிக்க, கிளையன்ட் SYN கொடியின் நிலையை 1 என அமைக்கிறது. கிளையன்ட், சர்வருக்கு முதல் SYN பாக்கெட்டை அனுப்புவதன் மூலம், சர்வருடன் ஒரு இணைப்பை ஏற்படுத்த விரும்புவதைக் குறிப்பிடுகிறது. இந்தப் பாக்கெட்டில் பயன்பாட்டு அடுக்குத் தரவு (அதாவது, அனுப்பப்பட்ட தரவு) இல்லை. இந்த நிலையில், கிளையன்ட்டின் நிலை SYN-SENT எனக் குறிக்கப்படுகிறது.

SYN+ACK பாக்கெட்

ஒரு கிளையன்டிடமிருந்து ஒரு SYN பாக்கெட்டை சர்வர் பெறும்போது, ​​அது தோராயமாகத் தனது சொந்த வரிசை எண்ணை (server_isn) உருவாக்கி, பின்னர் அந்த எண்ணை TCP ஹெடரின் "வரிசை எண்" (Serial number) புலத்தில் இடுகிறது. அடுத்து, சர்வர் "ஒப்புகை எண்" (Acknowledgement number) புலத்தில் client_isn + 1 என்பதை உள்ளிட்டு, SYN மற்றும் ACK ஆகிய இரண்டு பிட்களையும் 1 என அமைக்கிறது. இறுதியாக, சர்வர் அந்தப் பாக்கெட்டை கிளையன்டுக்கு அனுப்புகிறது; அதில் பயன்பாட்டு அடுக்குத் தரவுகள் (application-layer data) எதுவும் இருப்பதில்லை (மேலும் சர்வர் அனுப்புவதற்கு எந்தத் தரவும் இருப்பதில்லை). இந்த நேரத்தில், சர்வர் SYN-RCVD நிலையில் உள்ளது.

ACK பாக்கெட்

கிளையன்ட் சேவையகத்திலிருந்து பாக்கெட்டைப் பெற்றவுடன், இறுதிப் பதில் பாக்கெட்டிற்குப் பதிலளிக்க அது பின்வரும் மேம்படுத்தல்களைச் செய்ய வேண்டும்: முதலில், கிளையன்ட் பதில் பாக்கெட்டின் TCP ஹெடரில் உள்ள ACK பிட்டை 1 என அமைக்கிறது; இரண்டாவதாக, கிளையன்ட் "பதில் எண்ணை உறுதிப்படுத்து" (Confirm answer number) என்ற புலத்தில் 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 கொடியுடன் சர்வருக்குப் பதிலளிக்கிறது. இவ்வாறு, இரு தரப்பினரும் ESTABLISHED நிலையில் உள்ளனர், மேலும் ஒருவருக்கொருவர் தரவை அனுப்பத் தொடங்கலாம்.

பொதுவாக, TCP இணைப்பை ஏற்படுத்துவதற்கான முத்தரப்புப் பரிமாற்றச் செயல்முறையானது, இணைப்பின் நிலைத்தன்மை மற்றும் நம்பகத்தன்மையை உறுதி செய்யவும், பழைய இணைப்புகள் தொடர்பான குழப்பம் மற்றும் வள விரயத்தைத் தவிர்க்கவும், மேலும் இரு தரப்பினரும் தரவைப் பெறவும் அனுப்பவும் முடிவதை உறுதி செய்யவும் வடிவமைக்கப்பட்டுள்ளது.


பதிவிட்ட நேரம்: ஜனவரி-08-2025