TCP සම්බන්ධතා සැකසුම
අපි වෙබය පිරික්සන විට, විද්යුත් තැපෑලක් යවන විට හෝ මාර්ගගත ක්රීඩාවක් කරන විට, ඒ පිටුපස ඇති සංකීර්ණ ජාල සම්බන්ධතාවය ගැන අපි බොහෝ විට සිතන්නේ නැත. කෙසේ වෙතත්, අප සහ සේවාදායකය අතර ස්ථාවර සන්නිවේදනය සහතික කරන්නේ මෙම කුඩා පියවරයන් බව පෙනේ. වැදගත්ම පියවරක් වන්නේ TCP සම්බන්ධතා සැකසුම වන අතර, මෙහි හරය වන්නේ ත්රි-මාර්ග අතට අත දීමයි.
මෙම ලිපියෙන් ත්රි-මාර්ග අතට අත දීමේ මූලධර්මය, ක්රියාවලිය සහ වැදගත්කම විස්තරාත්මකව සාකච්ඡා කරනු ඇත. පියවරෙන් පියවර, ත්රි-මාර්ග අතට අත දීම අවශ්ය වන්නේ ඇයි, එය සම්බන්ධතා ස්ථායිතාව සහ විශ්වසනීයත්වය සහතික කරන්නේ කෙසේද සහ දත්ත හුවමාරුව සඳහා එය කෙතරම් වැදගත් දැයි අපි පැහැදිලි කරන්නෙමු. ත්රි-මාර්ග අතට අත දීම පිළිබඳ ගැඹුරු අවබෝධයක් සමඟින්, ජාල සන්නිවේදනයේ යටින් පවතින යාන්ත්රණයන් පිළිබඳ වඩා හොඳ අවබෝධයක් සහ TCP සම්බන්ධතාවල විශ්වසනීයත්වය පිළිබඳ පැහැදිලි දැක්මක් අපට ලැබෙනු ඇත.
TCP ත්රි-මාර්ග අතට අත දීමේ ක්රියාවලිය සහ තත්ව සංක්රාන්ති
TCP යනු සම්බන්ධතා-නැඹුරු ප්රවාහන ප්රොටෝකෝලයක් වන අතර, දත්ත සම්ප්රේෂණයට පෙර සම්බන්ධතා ස්ථාපිත කිරීම අවශ්ය වේ. මෙම සම්බන්ධතා ස්ථාපිත කිරීමේ ක්රියාවලිය තුන්-මාර්ග අතට අත දීමකින් සිදු කෙරේ.
එක් එක් සම්බන්ධතාවයේ යවන TCP පැකට් දෙස සමීපව බලමු.
මුලදී, සේවාදායකයා සහ සේවාදායකය යන දෙකම වසා ඇත. පළමුව, සේවාදායකය port එකක ක්රියාකාරීව සවන් දෙන අතර LISTEN තත්වයේ පවතී, එයින් අදහස් වන්නේ සේවාදායකය ආරම්භ කළ යුතු බවයි. ඊළඟට, සේවාදායකයා වෙබ් පිටුවට ප්රවේශ වීම ආරම්භ කිරීමට සූදානම්ය. එයට සේවාදායකය සමඟ සම්බන්ධතාවයක් ඇති කර ගැනීමට අවශ්ය වේ. පළමු සම්බන්ධතා පැකට්ටුවේ ආකෘතිය පහත පරිදි වේ:
සේවාදායකයෙක් සම්බන්ධතාවයක් ආරම්භ කරන විට, එය අහඹු ආරම්භක අනුක්රමික අංකයක් (client_isn) ජනනය කර එය TCP ශීර්ෂයේ "අනුක්රමික අංකය" ක්ෂේත්රයේ තබයි. ඒ සමඟම, සේවාදායකයා SYN ධජ ස්ථානය 1 ලෙස සකසයි, පිටතට යන පැකට්ටුව SYN පැකට්ටුවක් බව දක්වයි. සේවාදායකයා පළමු SYN පැකට්ටුව සේවාදායකයට යැවීමෙන් සේවාදායකයා සමඟ සම්බන්ධතාවයක් ඇති කර ගැනීමට කැමති බව දක්වයි. මෙම පැකට්ටුවේ යෙදුම් ස්ථර දත්ත (එනම් යවන ලද දත්ත) අඩංගු නොවේ. මෙම අවස්ථාවේදී, සේවාදායකයාගේ තත්ත්වය SYN-SENT ලෙස සලකුණු කර ඇත.
සේවාදායකයෙකුට සේවාදායකයෙකුගෙන් SYN පැකට්ටුවක් ලැබුණු විට, එය අහඹු ලෙස තමන්ගේම අනුක්රමික අංකය (server_isn) ආරම්භ කර එම අංකය TCP ශීර්ෂයේ "අනුක්රමික අංකය" ක්ෂේත්රයට දමයි. ඊළඟට, සේවාදායකය "පිළිගැනීමේ අංකය" ක්ෂේත්රයේ client_isn + 1 ඇතුළත් කර SYN සහ ACK බිටු දෙකම 1 ලෙස සකසයි. අවසාන වශයෙන්, සේවාදායකය පැකට්ටුව සේවාදායකයා වෙත යවයි, එහි යෙදුම් ස්ථර දත්ත නොමැත (සහ සේවාදායකයා යැවීමට දත්ත නොමැත). මෙම අවස්ථාවේදී, සේවාදායකය SYN-RCVD තත්වයේ පවතී.
සේවාදායකයා සේවාදායකයෙන් පැකට්ටුව ලබා ගත් පසු, අවසාන පිළිතුරු පැකට්ටුවට ප්රතිචාර දැක්වීම සඳහා පහත ප්රශස්තිකරණයන් සිදු කළ යුතුය: පළමුව, සේවාදායකයා පිළිතුරු පැකට්ටුවේ TCP ශීර්ෂයේ ACK බිට් එක 1 ලෙස සකසයි; දෙවනුව, සේවාදායකයා "පිළිතුරු අංකය තහවුරු කරන්න" ක්ෂේත්රයේ server_isn + 1 අගය ඇතුළත් කරයි; අවසාන වශයෙන්, සේවාදායකයා පැකට්ටුව සේවාදායකයට යවයි. මෙම පැකට්ටුවට සේවාදායකයාගේ සිට සේවාදායකයට දත්ත රැගෙන යා හැකිය. මෙම මෙහෙයුම් අවසන් වූ පසු, සේවාදායකයා 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